I'm still learning activemq. This sample seems to run ok, a sort of
hello world. However, it doesn't run so well when I actually start
activemq. Is that because activemq is "embedded" in some way?
thufir@doge:~$
thufir@doge:~$ activemq status
INFO: Loading '/home/thufir/apache-activemq-5.11.1/bin/env'
INFO: Using java '/usr/lib/jvm/java-7-openjdk-amd64/bin/java'
ActiveMQ not running
thufir@doge:~$
thufir@doge:~$ java -jar NetBeansProjects/ActiveMQ/dist/ActiveMQ.jar
log4j:WARN No appenders could be found for logger
(org.apache.activemq.broker.jmx.ManagementContext).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for
more info.
Sent message: 309334921 : Thread-1
Sent message: 1392385769 : Thread-9
Sent message: 2081591507 : Thread-0
Sent message: 1374783350 : Thread-11
Received: Hello world! From: Thread-1 : 445134555
Received: Hello world! From: Thread-11 : 1299279378
Received: Hello world! From: Thread-9 : 652364872
Sent message: 591774847 : Thread-13
Received: Hello world! From: Thread-13 : 265803401
Sent message: 1207962228 : Thread-17
Sent message: 164184341 : Thread-16
Received: Hello world! From: Thread-17 : 2122895298
Received: Hello world! From: Thread-16 : 1861409291
Sent message: 213493319 : Thread-25
Sent message: 1288767035 : Thread-27
Received: Hello world! From: Thread-25 : 1393581690
Sent message: 489077211 : Thread-29
Received: Hello world! From: Thread-29 : 979410438
Sent message: 1826381686 : Thread-22
Received: Hello world! From: Thread-27 : 573011569
Received: Hello world! From: Thread-22 : 1834164732
Sent message: 387902785 : Thread-32
Received: Hello world! From: Thread-32 : 2116585620
Received: null
thufir@doge:~$
thufir@doge:~$ activemq start
INFO: Loading '/home/thufir/apache-activemq-5.11.1/bin/env'
INFO: Using java '/usr/lib/jvm/java-7-openjdk-amd64/bin/java'
INFO: Starting - inspect logfiles specified in logging.properties and
log4j.properties to get details
INFO: pidfile created :
'/home/thufir/apache-activemq-5.11.1/data/activemq.pid' (pid '14357')
thufir@doge:~$
thufir@doge:~$ activemq status
INFO: Loading '/home/thufir/apache-activemq-5.11.1/bin/env'
INFO: Using java '/usr/lib/jvm/java-7-openjdk-amd64/bin/java'
ActiveMQ is running (pid '14357')
thufir@doge:~$
thufir@doge:~$ java -jar NetBeansProjects/ActiveMQ/dist/ActiveMQ.jar
log4j:WARN No appenders could be found for logger
(org.apache.activemq.broker.jmx.ManagementContext).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for
more info.
Sent message: 454239699 : Thread-9
Sent message: 629808856 : Thread-1
Sent message: 102256008 : Thread-11
Sent message: 1079965849 : Thread-0
Received: Hello world! From: Thread-11 : 966984015
Received: Hello world! From: Thread-1 : 1031698099
Received: Hello world! From: Thread-9 : 2091583256
Sent message: 490664783 : Thread-13
Sent message: 973112065 : Thread-16
Sent message: 495518379 : Thread-17
Received: Hello world! From: Thread-13 : 2122469300
Received: Hello world! From: Thread-17 : 1046619508
Received: Hello world! From: Thread-16 : 963084272
Sent message: 2137767383 : Thread-22
Sent message: 267200496 : Thread-25
Sent message: 409357971 : Thread-32
Sent message: 530595976 : Thread-27
Sent message: 173311637 : Thread-29
Received: Hello world! From: Thread-22 : 643720646
Received: Hello world! From: Thread-32 : 191300790
Received: Hello world! From: Thread-25 : 2054991771
Received: Hello world! From: Thread-27 : 692178825
Received: Hello world! From: Thread-29 : 1374466288
Received: null
thufir@doge:~$
thufir@doge:~$ cat NetBeansProjects/ActiveMQ/src/foo/App.java
package foo;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.ExceptionListener;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
/**
* Hello world!
*/
public class App {
public static void main(String[] args) throws Exception {
thread(new HelloWorldProducer(), false);
thread(new HelloWorldProducer(), false);
thread(new HelloWorldConsumer(), false);
Thread.sleep(1000);
thread(new HelloWorldConsumer(), false);
thread(new HelloWorldProducer(), false);
thread(new HelloWorldConsumer(), false);
thread(new HelloWorldProducer(), false);
Thread.sleep(1000);
thread(new HelloWorldConsumer(), false);
thread(new HelloWorldProducer(), false);
thread(new HelloWorldConsumer(), false);
thread(new HelloWorldConsumer(), false);
thread(new HelloWorldProducer(), false);
thread(new HelloWorldProducer(), false);
Thread.sleep(1000);
thread(new HelloWorldProducer(), false);
thread(new HelloWorldConsumer(), false);
thread(new HelloWorldConsumer(), false);
thread(new HelloWorldProducer(), false);
thread(new HelloWorldConsumer(), false);
thread(new HelloWorldProducer(), false);
thread(new HelloWorldConsumer(), false);
thread(new HelloWorldProducer(), false);
thread(new HelloWorldConsumer(), false);
thread(new HelloWorldConsumer(), false);
thread(new HelloWorldProducer(), false);
}
public static void thread(Runnable runnable, boolean daemon) {
Thread brokerThread = new Thread(runnable);
brokerThread.setDaemon(daemon);
brokerThread.start();
}
public static class HelloWorldProducer implements Runnable {
public void run() {
try {
// Create a ConnectionFactory
ActiveMQConnectionFactory connectionFactory = new
ActiveMQConnectionFactory("vm://localhost");
// Create a Connection
Connection connection =
connectionFactory.createConnection();
connection.start();
// Create a Session
Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
// Create the destination (Topic or Queue)
Destination destination = session.createQueue("TEST.FOO");
// Create a MessageProducer from the Session to the
Topic or Queue
MessageProducer producer =
session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
// Create a messages
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) {
System.out.println("Caught: " + e);
e.printStackTrace();
}
}
}
public static class HelloWorldConsumer implements Runnable,
ExceptionListener {
public void run() {
try {
// Create a ConnectionFactory
ActiveMQConnectionFactory connectionFactory = new
ActiveMQConnectionFactory("vm://localhost");
// Create a Connection
Connection connection =
connectionFactory.createConnection();
connection.start();
connection.setExceptionListener(this);
// Create a Session
Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
// Create the destination (Topic or Queue)
Destination destination = session.createQueue("TEST.FOO");
// Create a MessageConsumer from the Session to the
Topic or Queue
MessageConsumer consumer =
session.createConsumer(destination);
// Wait for a message
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) {
System.out.println("Caught: " + e);
e.printStackTrace();
}
}
public synchronized void onException(JMSException ex) {
System.out.println("JMS Exception occured. Shutting down
client.");
}
}
}
thufir@doge:~$
thufir@doge:~$
thanks,
Thufir