JMS Producer

JMS Producer

This page is no longer maintained (October 14, 2026). To access the most current version, go to https://docs.snaplogic.com/snaps/sp-jms/snap-jms-producer.html

On this Page

Snap type:

Write

Description:

This Snap creates JMS messages from incoming JSON documents and puts them into a JMS destination.

If you are planning to use Delay and Schedule Message Delivery feature in Apache ActiveMQ (http://activemq.apache.org/delay-and-schedule-message-delivery.html), you must set the schedulerSupport attribute to true in broker configuration, which can be found in $ACTIVEMQ_HOME/conf/activemq.xml.

Prerequisites:

N/A

 

Support:

Works in Ultra Tasks.

Limitations:

Typically, in all message streaming applications, when a message is put in a nonexisting queue or topic, the JMS Producer Snap creates a queue in the destination. However, in the IBM MQ application, Snap checks for the queue in the destination, and then puts the message; if a queue does not exist, Snap displays an error. Therefore, you must create a queue in IBM MQ before putting a message.

Account: 

This Snap uses account references created on the Accounts page of SnapLogic Manager to handle access to this endpoint. See Configuring JMS Accounts for information on setting up this type of account.

Views:

Input

This Snap has exactly one binary input view. If the upstream Snap generates a document in its output you must use corresponding formatting Snaps to convert the input data into a binary format. 

Output

This Snap has at most one document output view. The output includes the original metadata, JMSCorrelationID, and JMSMessageID along with any other parameters specified in the Message properties field.

Error

This Snap has at most one document error view and produces zero or more documents in the view.

Settings

Label

 

Required. The name for the Snap. You can modify this to be more specific, especially if you have more than one of the same Snap in your pipeline.

Destination

 

 

Required. The queue or topic to which the message is to be sent. 

  • The topic/queue name specified is case sensitive. Ensure that the letter case for Destination is the same in the Producer and Consumer Snaps.

  • If the topic/queue name does not exist at the Java Message Service client (such as ActiveMQ), one will automatically be created with that name.

  • When using Weblogic JMS Server, you must provide the queue/topic name as well as the name of the module associated with the queue/topic. Use the following format: 

    Better Code Block

Example: 

  • TestQueue

  • testmodule!testqueue

  • testmodule!testtopic

Destination type

 

Required. The Type of JMS destination based on how the Destination property was configured. Valid options are: 

  • QUEUE

  • TOPIC

Default value: QUEUE

Message type

 

Required. Type of MS message to be transmitted. Valid options are:

  • TEXT: a string message type.

  • BYTE: a raw stream of bytes.

  • STREAM: a serialized stream of objects.

  • MAP: name/value pairs. This data is unordered and each name must be unique.

Default value: TEXT

Message properties

 

Properties to be set in JMS messages (For details about these properties, see the section Message Properties at http://docs.oracle.com/javaee/6/api/javax/jms/Message.html)

You can add the following message properties:

  • JMSDestination

  • JMSDeliveryMode

  • JMSExpiration

  • JMSPriority

  • JMSMessageID

  • JMSTimestamp

  • JMSCorrelationID

  • JMSType

  • JMSRedelivered

Transacted session

This property when selected, a transacted session is used to produce the message and the TransactionID is added to the output.

Transaction ID is applicable to the ActiveMQ only.

 

Default value: false

Number of retries

The maximum number of attempts the Snap must make to fetch JMS messages when there is a network failure.

Example: 3

Default value: 0

Retry interval (milliseconds)

The minimum time in milliseconds for which the Snap must wait before attempting recovery from a network failure.

Example: 1500

Default value: 1000

MultiExcerpt Include

MultiExcerpt Include

 

Troubleshooting

If you notice an increase in message length or the message appears corrupted/unreadable while consuming using IBM MQ tools, the likely cause is the RFH2 header automatically added when using the JMS Producer Snap.

Error

Reason

Resolution

Error

Reason

Resolution

Messages sent by the JMS Producer Snap to IBM MQ appear corrupted or unreadable when consumed by non-JMS consumers (such as IBM MQ native tools).

When the JMS Producer Snap connects to IBM MQ, it uses the JMS API, which automatically adds an MQRFH2 (Rules and Formatting Header) to every message.

To strip RFH2 headers when publishing messages via the JMS Producer using the JMS Snap Pack to connect to IBM MQ, use queue:///queuename?targetClient=1 as the destination instead of the queue name. This removes the entire RFH2 header from messages.

Examples


Reading Message Data from JSON 1

This example demonstrates how you can use the JMS Producer Snap to read data from a JSON file and add the data into the message queue.

The sample input data consists of employee records. The JSON Generator Snap generates them as a JSON document. The following image shows a preview of the output from the JSON Generator Snap:

Since the JMS Producer Snap accepts only binary inputs, the JSON Formatter Snap is used between the JSON Generator and JMS Producer Snaps.

The following image shows the configuration of the JMS Producer Snap:

On successful execution, all the data is placed in the messaging queue. 

Download this Pipeline.

Reading Message Data from JSON File 2

The below pipeline creates the messages from the incoming binary format and displays the output view on executing successfully.   

 

 

 

 

 

In the Snap settings, the Transacted Session property is selected and hence the output view displays the Transaction ID that can validated on the JMS console.

Downloads

MultiExcerpt Include