Write to JMS Queue
Updated: Jun 30, 2023
This example writes a list of records to a Java Message Service (JMS) queue. It provides an interface to stream records to a JMS queue for further processing or distribution.
When integrating multiple systems or applications, a common approach is to use message queues for exchanging data in a decoupled manner. This library facilitates the writing of data records to a JMS queue, making it useful for scenarios where data needs to be efficiently shared or synchronized between different systems.
Java Code
package com.northconcepts.datapipeline.examples.cookbook;
import java.util.Properties;
import javax.naming.Context;
import com.northconcepts.datapipeline.core.DataWriter;
import com.northconcepts.datapipeline.core.Record;
import com.northconcepts.datapipeline.core.RecordList;
import com.northconcepts.datapipeline.jms.JmsDestinationType;
import com.northconcepts.datapipeline.jms.JmsSettings;
import com.northconcepts.datapipeline.jms.JmsWriter;
import com.northconcepts.datapipeline.job.Job;
import com.northconcepts.datapipeline.memory.MemoryReader;
public class WriteToJmsQueue {
// run activemq before running the code below
public static void main(String[] args) {
Record record = new Record();
record.setField("Team", "Manchester United");
record.setField("Points", 90);
RecordList recordList = new RecordList(record);
MemoryReader memoryReader = new MemoryReader(recordList);
Properties props = new Properties();
props.setProperty(Context.INITIAL_CONTEXT_FACTORY,"org.apache.activemq.jndi.ActiveMQInitialContextFactory");
props.setProperty(Context.PROVIDER_URL,"tcp://localhost:61616");
DataWriter writer = new JmsWriter(new JmsSettings("premierLeague", JmsDestinationType.QUEUE, props));
Job.run(memoryReader, writer);
}
}
Code Walkthrough
- A new Record with two fields (
Team,Points) is created and added to the RecordList. - To read the RecordList, a new MemoryReader is instantiated.
- New Java Properties are declared with an Apache ActiveMQ
INITIAL_CONTEXT_FACTORYand an ActiveMQPROVIDER_URLpointing to localhost. - A new DataWriter has been defined as a JmsWriter, which accepts JmsSettings with the properties defined above and a JmsDestinationType.QUEUE.
- The Job.run(reader, writer) method has been executed with the reader and writer defined above.
Output
If ActiveMQ is running on the PROVIDER_URL configured in this example, then it should receive the message.
