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.javain 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;
importorg.apache.activemq.ActiveMQConnectionFactory;
public classActiveMQMessageProducer {
publicstatic 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.javain 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;
importorg.apache.activemq.ActiveMQConnectionFactory;
public classActiveMQMessageConsumer {
publicstatic 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