This
is continuation to my previous post. If you are not set up ActiveMQ in the
system, I would recommend you go through my previous post and set it up.
JMSConsumer.java
My
ActiveMQ instance is running at http://127.0.0.1:5050
Below
step-by-step explains how to define a JMS producer that send messages to
ActiveMQ, and define a JMS receiver that receives messages from ActiveMQ.
Step 1: Create new maven
project in Eclipse.
Step 2: Add below maven
dependencies to the pom.xml.
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
<version>5.15.3</version>
</dependency>
Step 3: Create new package
‘com.sample.producer’ and define the class JMSProducer.java
like below.
JMSProducer.java
package com.sample.producer; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageProducer; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnectionFactory; public class JMSProducer { private static final String JMS_PROVIDER_URL = "tcp://127.0.0.1:5050"; private static final String QUEUE = "DEMO_QUEUE"; public static void main(String[] args) throws JMSException { ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(JMS_PROVIDER_URL); Connection connection = connectionFactory.createConnection(); connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue(QUEUE); MessageProducer producer = session.createProducer(destination); TextMessage message = session.createTextMessage("Hello, this is my first message."); producer.send(message); connection.close(); } }
As
you see above snippet, I am connecting the url
"tcp://127.0.0.1:5050",
ActiveMQ
provides number of transport protocols to communicate with JMS provider.
You
can get the information from {ACTIVE_MQ_INSTALL_DIR}/conf/activemq.xml file
<transportConnectors> <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB --> <transportConnector name="openwire" uri="tcp://0.0.0.0:5050?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> </transportConnectors>
Step 4: Create new package
‘com.sample.consumer’ and define a class JMSConsumer.java like below.
package com.sample.consumer; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageConsumer; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnectionFactory; public class JMSConsumer { private static final String JMS_PROVIDER_URL = "tcp://127.0.0.1:5050"; private static final String QUEUE = "DEMO_QUEUE"; public static void main(String args[]) throws JMSException { ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(JMS_PROVIDER_URL); Connection connection = connectionFactory.createConnection(); connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue(QUEUE); MessageConsumer consumer = session.createConsumer(destination); Message message = consumer.receive(); if (message instanceof TextMessage) { TextMessage textMessage = (TextMessage) message; System.out.println("Received message '" + textMessage.getText() + "'"); } connection.close(); } }
Step 5: Run the application
JMSProducer.java.
Open
the url ‘http://127.0.0.1:8161/admin/queues.jsp’, you can able to see
DEMO_QUEUE and one message is enqueued to it.
Step 6: Run ‘JMSConsumer’
application.
You
can able to see below messages.
Received
message 'Hello, this is my first message.'
Open
the url ‘http://127.0.0.1:8161/admin/queues.jsp’, you can able to see
DEMO_QUEUE is empty (Number Of Pending Messages 0).
That’s
it, you are done with first application.
No comments:
Post a Comment