ActiveMQ点对点的发送和接收
最近在工作中用到了ActiveMQ的点对点模式,在此用一个范例简单描述下使用过程。
1.首先在工程导入ActiveMQ的jar包,此jar包在下载的ActiveMQ资源里,这里用的是ActiveMQ版本是5.9。

2.编写消息发送者
package com.cool.jms;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
/**
* 消息生产者
* Created by hejin on 2017/4/12 0012.
*/
public class JMSProducer {
//默认连接用户名
private static final String USER= ActiveMQConnection.DEFAULT_USER;
//默认连接密码
private static final String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD;
//默认连接地址
private static final String URL=ActiveMQConnection.DEFAULT_BROKER_URL;
//发送的消息数量
private static final int SENDNUM=10;
public static void main(String[] args) throws JMSException {
//连接工厂
ConnectionFactory connectionFactory;
//连接
Connection connection;
//会话(接收或发送消息的线程)
Session session;
//消息目的地
Destination destination;
//消息生产者
MessageProducer messageProducer;
//实例化连接工厂
connectionFactory=new ActiveMQConnectionFactory(JMSProducer.USER,JMSProducer.PASSWORD,JMSProducer.URL);
try {
//通过连接工厂获取连接
connection = connectionFactory.createConnection();
//启动连接
connection.start();
//创建session
session=connection.createSession(true,Session.AUTO_ACKNOWLEDGE);
//创建一个名称为HelloWorld的消息队列
destination= session.createQueue("HelloWorld");
//创建消息生产者
messageProducer = session.createProducer(destination);
//发送消息
sendMessage(session,messageProducer);
//提交
session.commit();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void sendMessage(Session session,MessageProducer messageProducer) throws Exception{
for (int i=0;i<JMSProducer.SENDNUM;i++){
//创建需要发送的消息
TextMessage message = session.createTextMessage("ActiveMQ发送消息:" + i);
System.out.println("ActiveMQ发送消息:"+i);
messageProducer.send(message);
}
}
}
执行上面的代码控制台输出

在浏览器访问MQ的页面:http://127.0.0.1:8161/admin/queues.jsp,可以查看发送的队列的消息信息。

消息详情:

3.编写消费package com.cool.jms;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
/**
* Created by hejin on 2017/4/12 0012.
*/
public class JMSConsumer {
//默认连接名称
private static String USER= ActiveMQConnection.DEFAULT_USER;
//默认密码
private static String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD;
//默认连接地址
private static String URL=ActiveMQConnection.DEFAULT_BROKER_URL;
public static void main(String[] args) {
//连接工厂
ConnectionFactory connectionFactory;
//连接
Connection connection;
//会话 接收或发送消息的进程
Session session;
//消息的目的地
Destination destination;
//消息的消费者
MessageConsumer messageConsumer;
//实例化连接工厂
connectionFactory=new ActiveMQConnectionFactory(JMSConsumer.USER,JMSConsumer.PASSWORD,JMSConsumer.URL);
//IDEA快速捕获异常快捷键:Ctrl+Alt+T
try {
//通过连接工厂获取连接
connection=connectionFactory.createConnection();
//启动连接
connection.start();
//创建session
session=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
//创建一个HelloWorld的消息队列
destination=session.createQueue("HelloWorld");
//创建消息消费者
messageConsumer = session.createConsumer(destination);
while(true){
TextMessage message = (TextMessage) messageConsumer.receive(100000);
if(message!=null){
System.out.println("收到的消息:"+message.getText());
}else{
break;
}
}
} catch (JMSException e) {
e.printStackTrace();
}
}
}
控制台输出:

浙公网安备 33010602011771号