ActiveMQ的使用方法

流程
队列:服务端发送一个 客户端接受到就会自动销毁那个
广播:要先开启接受消息的一端 不然发送方发送的会自然消失
总结 队列会持久化 广播不可以 可以设置
步骤
- shopping_manager_service中加入activemq的依赖
- 在这个模块中进行测试
点对点形式发送消息
// 1. 创建一个连接工厂对象 需要指定服务的ip和端口
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
// 2. 使用工厂对象来创建Collection对象
Connection connection = connectionFactory.createConnection();
// 3. 开启连接 调用Collection对象的start方法
connection.start();
// 4. 创建一个Session对象 第一个参数 是否开始事务 如果开启事务 第二个参数没有意义
// 第二个参数的意思是应答模式 一般自动应答 手动应答
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 5. 使用Session创建一个Destination对象 目的地 二种形式queue,topic 现在用queue
Queue queue = session.createQueue("test_queue");
// 6. 使用Session对象创建一个Producer对象
MessageProducer producer = session.createProducer(queue);
// 7. 创建一个Message对象 可以使用TextMeasage对象
// TextMessage textMessage = new ActiveMQTextMessage();
// textMessage.setText("hello activemq");
TextMessage textMessage = session.createTextMessage("hello activemq");;
// 8. 发动消息
producer.send(textMessage);
// 9。 关闭资源
producer.close();
session.close();
connection.close();
bug
如果web点击查看时出错就是jdk版本和activemq版本不一致的问题。
Error!
Exception occurred while processing this request, check the log for more information!
接受消息
// 1. 创建一个连接工厂对象 需要指定服务的ip和端口
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
// 2. 使用工厂对象来创建Collection对象
Connection connection = connectionFactory.createConnection();
// 3. 开启连接 调用Collection对象的start方法
connection.start();
// 4. 创建一个Session对象 第一个参数 是否开始事务 如果开启事务 第二个参数没有意义
// 第二个参数的意思是应答模式 一般自动应答 手动应答
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 5. 使用Session创建一个Destination对象 目的地 二种形式queue,topic 现在用queue
Queue queue = session.createQueue("que");
// 6. 使用Session对象创建一个consumer对象
MessageConsumer consumer = session.createConsumer(queue);
// 接收消息
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
TextMessage message1 = (TextMessage) message;
try {
String text = message1.getText();
System.out.println("消息的内容是"+text);
} catch (JMSException e) {
e.printStackTrace();
}
}
});
// 等待加收消息
System.in.read();
consumer.close();
session.close();
connection.close();
创建广播形式的
Topic topic = session.createTopic("topic");
MessageProducer producer = session.createProducer(topic);