ActiveMQ 学习札记一
Apache ActiveMQ™是最流行的开源,多协议,基于Java的消息服务器。它支持行业标准协议,因此用户可以通过广泛的语言和平台获得客户选择的好处。可以使用C,C ++,Python,.Net等连接。使用无处不在的AMQP协议集成您的多平台应用程序。使用STOMP通过websockets 在Web应用程序之间交换消息。使用MQTT管理您的IoT设备。支持您现有的JMS基础架构及其他。ActiveMQ提供强大的功能和灵活性,以支持任何消息传递用例。-----摘自
创建使用java 创建activeMQ:
一、创建ActiveMQConnectionFactory
ActiveMQConnectionFactory是一个受管理的对象,用于创建连接。该类还实现QueueConnectionFactory基于队列的不共享消息 和 TopicConnectionFactory-基于 发布/订阅 的消息队列。您可以使用此连接创建QueueConnections和TopicConnections。
二、根据连接工厂ActiveMQConnectionFactory创建连接
Connection connection=activeMQConnectionFactory.createConnection();
三、打开连接
connection.start();
四、创建会话session
/**
* createSession:可选参数有:
* param1:指示是否处理会话-true/false
* param2: Session.AUTO_ACKNOWLEDGE 自动确认
Session.CLIENT_ACKNOWLEDGE 客户端确定
Session.DUPS_OK_ACKNOWLEDGE 自动批量确认
*
*/
Session session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
五、创建消息队列
/**
* 可以允许创建不同的消息目标
* Topic topic=session.createTopic(MESSAGE_NAME);//基于发布-订阅 一个消息,多个客户端消费
Queue queue=session.createQueue(MESSAGE_NAME);--//基于 不可重复消费的 队列型消息
*/
Destination destination=session.createQueue(MESSAGE_NAME);
六、创建消息发布者或生产者
MessageProducer messageProducer=session.createProducer(destination);--消息发布者
//创建消费
MessageConsumer consumer=session.createConsumer(destination);
七、生产者生产消息
/**
* 消息类型可以有:
* ObjectMessage:对象消息
* TextMessage :文本类型
* MapMessage :键值对类型
* StreamMessage :流类型
* BytesMessage :字节型
*/
//文本型消息
TextMessage message=session.createTextMessage();
//若Session.CLIENT_ACKNOWLEDGE为客户端确认。客户端接收到消息后,
//必须调用javax.jms.Message的acknowledge方法。jms服务器才会删除消息。
//message.acknowledge();
message.setText("produect 发送消息 :第"+i+"次");
//接收一个参数为Message的消息
messageProducer.send(message);
消费者创建消息侦听,侦听生产者生产消息
//消费者侦听消息
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
/**
*Message类型可以有:
* ObjectMessage:对象消息
* TextMessage :文本类型
* MapMessage :键值对类型
* StreamMessage :流类型
* BytesMessage :字节型
*/
try {
TextMessage msg=(TextMessage) message;//与消息生成这消息类型一致
System.out.println("客户端B 侦听到 发送者消息:"+msg.getText());
} catch (Exception e) {
}
}
});
八、关闭连接
一个简单的activeMQ消息队列demo就创建好了,分别运行生产者,消费者就可看到结果,代码图:
生产者:
消费者: