Java Messaging Service(JMS) using ActiveMQ
In the below example, we have no need to create the queue in the ActiveMQ, after the successful execution of the producer will automatically create the Queue in the Apache ActiveMQ.
System Requirements:-
- Eclipse Editor or any other.
- JDK 1.5 or higher(I am using jdk 1.7.0_03)
- Required jars(activemq-all-5.4.3.jar) as referenced library.
- Apache-activemq-5.4.3
Note: - Apache
Active MQ Setup is required for the execution of this example. For doing the Active
MQ Setup please follow the below link:-
Steps for creating Eclipse java project for implementing Core
JMS using Apache ActiveMQ:-
- Create a java project named JMSUsingActiveMQ
- Create a package names com.gaurav.jms.activemq in the src directory
- Project Structure is as below:-
- Create an ActiveMQMessageProducer.java in the above specified package.
package com.gaurav.jms.activemq;
import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import
org.apache.activemq.ActiveMQConnectionFactory;
public class
ActiveMQMessageProducer {
public
static void main(String args[]) {
try
{
//
Creating a connection factory for ActiveMQ
ActiveMQConnectionFactory
activeMQConFactory = new ActiveMQConnectionFactory(
"tcp://localhost:61616");
//
Creating a connection
Connection
con = activeMQConFactory.createConnection();
con.start();
//
Creating a session;
Session
session = con
.createSession(false,
Session.AUTO_ACKNOWLEDGE);
//
Creating a destination using Topic or Queue
Destination
dest = session.createQueue("TestWelcomeActiveMQQueue");
//
creating a MessageProducer using the session to the topic or
//
queue.
MessageProducer
msgProducer = session.createProducer(dest);
msgProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
//
Creating a message for sending in the queue
String
strMessage = "WELCOME GAURAV BY "
+
Thread.currentThread().getName();
//Creating
a text message using the session.
TextMessage
txtMessage = session.createTextMessage(strMessage);
System.out.println("Sent
message : " + strMessage.hashCode()
+
" : " + Thread.currentThread().getName());
msgProducer.send(txtMessage);
//
closing the resources
msgProducer.close();
session.close();
con.close();
}
catch (Exception e) {
System.out.println("Exception
thrown : " + e);
e.printStackTrace();
}
}
/* Note:- NON_PERSISTENT means no need
for database specific persistent */
- Create an ActiveMQMessageConsumer.java in the above specified package.
package com.gaurav.jms.activemq;
import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import
org.apache.activemq.ActiveMQConnectionFactory;
public class
ActiveMQMessageConsumer {
public
static void main(String args[]) {
try
{
//
Creating a connection factory for ActiveMQ
ActiveMQConnectionFactory
activeMQConFactory = new ActiveMQConnectionFactory(
"tcp://localhost:61616");
//
Creating a connection
Connection
con = activeMQConFactory.createConnection();
con.start();
//
Creating a session;
Session
session = con
.createSession(false,
Session.AUTO_ACKNOWLEDGE);
//
Creating a destination using Topic or Queue
Destination
dest = session.createQueue("TestWelcomeActiveMQQueue");
//
creating a MessageConsumer using the session for the topic or
//
queue.
MessageConsumer
msgConsumer = session.createConsumer(dest);
Message
message = msgConsumer.receive(5000);
//Checking
the message is an instance of textMessage or not.
if(message
instanceof TextMessage){
TextMessage
txtMessage = (TextMessage)message;
String
strMessage = txtMessage.getText();
System.out.println("Received
Message from queue is : "+strMessage);
}else{
System.out.println("Received
: "+message);
}
//
closing the resources
msgConsumer.close();
session.close();
con.close();
}
catch (Exception e) {
System.out.println("Exception
thrown : " + e);
e.printStackTrace();
}
}
}
- Execute the ActiveMQMessageProducer.java first and then ActiveMQMessageConsumer.java by selecting the option Run as Java Application.
Result of ActiveMQMessageProducer.java
Message Producer output :
Sent message : 707288012 : main
Result of ActiveMQMessageConsumer.java
Message Consumer output:
Received Message from queue is: WELCOME GAURAV BY main
Result In
the ActiveMQ console
URL for
opening activemq admin console: - http://localhost:8161
No comments:
Post a Comment