Showing posts with label SpringJms. Show all posts
Showing posts with label SpringJms. Show all posts

Friday 10 February 2017

Spring jms code with ibm websphere mq example

  Spring jms code with ibm websphere mq example


In this tutorial I am going to discuss How to send,read and listen Messages to IBM MQ using spring jmstemplate. I am going to cover how to configure the IBM MQ, connection factory, Message Queue,Listener container and JmsTemplate.


I used below technologies to execute below program

1.Maven 4.0.0
2.JDK 1.8
3.Spring (spring-core) 4.0.0.RELEASE
4.Spring (spring-jms) 4.0.0.RELEASE
5.Websphere MQ 7.5.0.1
6. springTestVersion 4.0.0.RELEASE
7. junitVersion 4.6

Prerequisite: System installed with IBM WebSphere MQ.

Click here to download full code of this example.

For example, created 3 files (App-context.xml,main.properties and spring.xml under \src\main\resources\)
created 2 files MessageService.java and RequestSendMessageCreator.java under \src\main\java\com\test\testspringjmsmq
created 1 file MessageServiceTest.java under \src\test\java\com\test\testspringjmsmq\
created 2 files DemoMain.java and TestMessageListener.java under \src\main\java\com\example\listener
1 pom.xml file which is automatic created by spring project.
Spring jms code with ibm websphere mq example

POM.xml: To start off we need to obtain the WebSphere MQ JARs. These JARs are proprietary - hence they will not resolve through a public Maven repository like Maven Central. These JARs need to be obtained from the WebSphere MQ installation directory and manually deployed to our local Maven repository. The config below defines the WebSphere MQ dependencies in our Maven POM file.
Spring jms code with ibm websphere mq example

Spring jms code with ibm websphere mq example

main.properties: This properties file contains information about QueueManager, Queue, host and port(listener port).

fromRtpQueue  is Queue name where listener will read messages.
RES.IDS.QUEUE is Queue name where JmsTemplate send messages.
queue_Idsmanager is Queue manager name.
queue_Idshostname is system ip address or localhost.
queue_Idsport is listener port of Queue manager.

Spring jms code with ibm websphere mq example

spring.xml: Spring's JMSTemplate class is the key to simplifying access to the conventional JMS API. It abstracts the common and repetitive boiler-plate code by handling the creation and closing of connections and sessions, sending and receiving of messages and handling of exceptions. JMSTemplate and a few other beans need to be defined in our Spring config.

Spring jms code with ibm websphere mq example

Spring jms code with ibm websphere mq example

Spring jms code with ibm websphere mq example

App-context.xml: This file import spring.xml and create bean for MessageService class.

Spring jms code with ibm websphere mq example


DemoMain.java: This class have main method and method to load application context file.

Spring jms code with ibm websphere mq example

TestMessageListener.java: This class is used for listen text messages from IBM MQ. Whenever any messages will come on configured Queue(I will tell how to configure queue for listener later on this post), this class will listen messages from that queue and as per requirement process.

Spring jms code with ibm websphere mq example

MessageService.java: This class is used for send messages to IBM MQ. For sending message, I used send(destination,messageCreator) of JmsTemplate where messageCreator is object of RequestSendMessageCreator. In RequestSendMessageCreator class you can create message as per your requirement(will discuss on this later on post) and destination is default destination where we need to send message. We can set destination in JmsTemplate or using annotate in MessageService class.
Spring jms code with ibm websphere mq example

RequestSendMessageCreator.java: This class is used for creating message.

Spring jms code with ibm websphere mq example

MessageServiceTest.java: This class will use for Junit test.

Spring jms code with ibm websphere mq example

How to run :  You can run this example by using DemoMain class or Junit test through MessageServiceTest.


Related Topic

IBM MQ reason code 2087 (AMQ4048)