参考文档:
深入浅出JMS(三)–ActiveMQ简单的HelloWorld实例
http://blog.csdn.net/jiuqiyuliang/article/details/48608237
编程接口图
代码实现
准备
仅需添加avtivemq-all.jar
目录结构
src
jms
--JMSProsucer
--JMSConsumer
Library
--activmq-all.jar
生产者
package jms;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JMSProducer {
/**
* @param args
*/
private static final String url=ActiveMQConnection.DEFAULT_BROKER_URL;
private static final String queueName="queue-test";
public static void main(String[] args) throws JMSException {
//1.创建ConnectionFactory
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
//2.创建Connection
Connection connection= connectionFactory.createConnection();
//3.启动
connection.start();
//4.创建会话Session arg1:是否处理事务 arg2:自动应答
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//5.创建目标
Destination destination =session.createQueue(queueName);
//6.创建生产者
MessageProducer producer = session.createProducer(destination);
//多次向目的地发送消息
for(int i=0;i<100;i++){
//7.创建消息
TextMessage textMessage = session.createTextMessage("testMesssage "+i);
//8.生产者发布消息
producer.send(textMessage);
System.out.println("发送消息 "+textMessage.getText() );
}
//9.关闭连接
connection.close();
}
}
消费者
package jms;
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.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JMSConsumer {
private static final String url=ActiveMQConnection.DEFAULT_BROKER_URL;
private static final String queueName="queue-test";
public static void main(String[] args) throws JMSException {
//1.创建ConnectionFactory
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
//2.创建Connection
Connection connection= connectionFactory.createConnection();
//3.启动
connection.start();
//4.创建会话Session arg1:是否处理事务 arg2:自动应答
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//5.创建目标
Destination destination =session.createQueue(queueName);
//6.创建生产者
MessageConsumer consumer = session.createConsumer(destination);
//7.创建监听器
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message mes) {
TextMessage textMessage = (TextMessage) mes;
try {
System.out.println("接受消息 "+ textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
//8.关闭连接,注意:结束的时候再关,因为要一直监听
//connection.close();
}
}
http://127.0.0.1:8161可以看到web视图。
运行一次生产者和两次消费者,可以看到控制台:
INFO | Successfully connected to tcp://localhost:61616
发送消息 testMesssage 0
发送消息 testMesssage 1
发送消息 testMesssage 2
发送消息 testMesssage 3
发送消息 testMesssage 4
...
发送消息 testMesssage 99
INFO | Successfully connected to tcp://localhost:61616
接受消息 testMesssage 1
接受消息 testMesssage 3
接受消息 testMesssage 5
...
接受消息 testMesssage 99
INFO | Successfully connected to tcp://localhost:61616
接受消息 testMesssage 0
接受消息 testMesssage 1
接受消息 testMesssage 2
...
接受消息 testMesssage 98