Hello and welcome after a very long time !!
There are lots of things that I want to post but as of now, would post my first example code with active mq.
Active MQ – This is a open source message broker with full JMS implementation.
You can please read more details from : http://activemq.apache.org/
First step : Download and unzip apache-activemq-5.11.1-bin binary files to a drive.
Second step: Installation
————–
Run the ActiveMQ batch inside the win32 folder.
http://localhost:8161/
Testing the installation
————————
Active MQ default port is 61616
From cmd prompt
netstat -an|find “61616”
Monitoring ActiveMQ
——————-
The default username and password is admin/admin.
You can configure this in the conf/jetty-real.properties file.
Stopping ActiveMQ
——————
Type Ctrl-C at the cmd prompt.
Now open Eclipse and create a Message Producer, Message consumer and a main class. Complete codes are posted here. These are taken from the active mq website and can be modified accordingly.
Add activemq-all-5.4.3.jar in the class path.
HelloProducer.java
========================================================================================================================================================
package com.Active_MQ;
import java.awt.font.TextMeasurer;
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 HelloProducer implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
try {
//Creating connection factory
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(“tcp://localhost:61616”);
//ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_BROKER_URL);
//Create connection
Connection connection = connectionFactory.createConnection();
connection.start();
//Create session
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
//Create destination
Destination destination = session.createQueue(“TEST.FOO”);
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
//Create a message
String text = “Hello world from ” + Thread.currentThread().getName()+” : ” + this.hashCode();
TextMessage message = session.createTextMessage(text);
//Tell the producer to send the message
System.out.println(“Sent message ” + message.hashCode() + ” : ” + Thread.currentThread().getName());
producer.send(message);
//Clean up
session.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
============================================================================
============================================================================
HelloConsumer.java
========================================================================================================================================================
package com.Active_MQ;
import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.ExceptionListener;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
public class HelloConsumer implements Runnable{
public void run()
{
try {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(“tcp://localhost:61616”);
Connection connection = connectionFactory.createConnection();
connection.start();
//connection.setExceptionListener((ExceptionListener) this);
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue(“TEST.FOO”);
MessageConsumer consumer = session.createConsumer(destination);
Message message = consumer.receive(1000);
if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
String text = textMessage.getText();
System.out.println(“Received “+text);
}
else
{
System.out.println(“Received “+message);
}
consumer.close();
session.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
========================================================================================================================================================
App.java
========================================================================================================================================================
package com.Active_MQ;
public class App {
public static void main(String[] args) {
try {
thread(new HelloProducer(),false);
thread(new HelloProducer(),false);
thread(new HelloConsumer(),false);
Thread.sleep(1000);
thread(new HelloConsumer(), false);
thread(new HelloProducer(), false);
thread(new HelloConsumer(), false);
thread(new HelloProducer(), false);
Thread.sleep(1000);
thread(new HelloConsumer(), false);
thread(new HelloProducer(), false);
thread(new HelloConsumer(), false);
thread(new HelloConsumer(), false);
thread(new HelloProducer(), false);
thread(new HelloProducer(), false);
Thread.sleep(1000);
thread(new HelloProducer(), false);
thread(new HelloConsumer(), false);
thread(new HelloConsumer(), false);
thread(new HelloProducer(), false);
thread(new HelloConsumer(), false);
thread(new HelloProducer(), false);
thread(new HelloConsumer(), false);
thread(new HelloProducer(), false);
thread(new HelloConsumer(), false);
thread(new HelloConsumer(), false);
thread(new HelloProducer(), false);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void thread(Runnable runnable,boolean deamon)
{
Thread brokerThread = new Thread(runnable);
brokerThread.setDaemon(deamon);
brokerThread.start();
}
}
========================================================================================================================================================
Now when we run the main class output shows as :
========================================================================================================================================================
Sent message 700549 : Thread-1
Sent message 7702079 : Thread-0
Received Hello world from Thread-0 : 10859927
Sent message 14397555 : Thread-10
Received Hello world from Thread-1 : 18709978
Sent message 12968500 : Thread-12
Received Hello world from Thread-10 : 28432383
Sent message 12606869 : Thread-20
Sent message 29596937 : Thread-24
Sent message 32819228 : Thread-25
Received Hello world from Thread-12 : 19520119
Received Hello world from Thread-20 : 17982827
Received Hello world from Thread-25 : 24829876
Sent message 10565194 : Thread-43
Sent message 32734483 : Thread-33
Received Hello world from Thread-24 : 23815485
Sent message 25663554 : Thread-40
Sent message 19368064 : Thread-46
Sent message 26051994 : Thread-36
Received Hello world from Thread-33 : 32729846
Received Hello world from Thread-46 : 3333237
Received Hello world from Thread-43 : 3117096
Received Hello world from Thread-40 : 11203640
Received Hello world from Thread-36 : 7522198
========================================================================================================================================================
When I open my web console then I can see queue TEST.FOO is created and messages are enqueued and dequeued.
I am trying to test some more examples with Active MQ and will keep posting the same.
Till then, Happy coding !! 🙂