您的位置:首页 > 其它

ActiveMQ实现消息消费者方式一

2017-05-16 00:00 316 查看
摘要: 版本使用 activemq-all-5.14.5

####创建ActiveMQ消息消费者

创建一个普通的Java项目。

引入ActiveMQ jar包 这里引入的是 activemq-all-5.14.5.jar 在ActiveMQ安装包里面有。

简单代码如下所示:

package com.example.activemq;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

public class MQConsumer {
public static void main(String[] args) {
ConnectionFactory connectionFactory;//连接工厂
Connection connection=null;//连接
Session session;//会话
Destination destination;//消息目的地
MessageConsumer  messageConsumer ;//消息消费者
//实例化工厂
connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, ActiveMQConnection.DEFAULT_BROKER_URL);
try {
connection = connectionFactory.createConnection();//创建连接
connection.setClientID("消费者1");
connection.start();//启动连接
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//这里不采用事务模式接收消息
destination = session.createQueue("mq.queue");//创建消息目的地
messageConsumer = session.createConsumer(destination);//创建消息消费者
while (true) {
TextMessage textMessage = (TextMessage) messageConsumer.receive();//无参数表示一直等待接收消息
if(textMessage!=null){
System.out.println("订阅者1接收到ActiveMQ消息:"+textMessage.getText());
}else{
break;
}
}
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(connection!=null){
try {
connection.close();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}

####代码解释

ConnectionFactory 创建ActiveMQ服务器连接工厂

connection = connectionFactory.createConnection(); 创建ActiveMQ服务器连接

connection.setClientID("消费者1"); 设置连接名,这一步也不是必须的,可以忽略,ActiveMQ会自动生成一个连接名

connection.start(); 启动ActiveMQ服务器连接

connection.createSession(false, Session.AUTO_ACKNOWLEDGE); 创建连接会话,这里采用非事务模式接收消息

Destination destination = session.createQueue("mq.queue"); 通过连接会话创建消息目的地

MessageConsumer messageConsumer = session.createConsumer(destination); 通过连接会话创建消息消费者

TextMessage textMessage = (TextMessage) messageConsumer.receive(); 这里表示接收消息,消息的类型有多种,可查阅相关文档,一般都会采用 TextMessage 常用的文本方式。

总结

这里主要简单得展示了如何创建一个消息消费者接收ActiveMQ消息,下一篇将介绍我们如何使用的注册监听器的方式来接收消息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: