1.添加依赖
<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.16.2</version> </dependency>
2.生产者代码
package com.example.queueprj.producer; import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; import static javax.jms.Session.AUTO_ACKNOWLEDGE; /** * 点对点 */ public class QueueProducer { public static void main(String[] args) throws JMSException { //获取连接工厂 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616"); //获取连接 Connection connection = connectionFactory.createConnection(); //开启连接 connection.start(); //创建会话(false:未开启事务,AUTO_ACKNOWLEDGE:消息确认模式,这里是自动确认) Session session = connection.createSession(false,AUTO_ACKNOWLEDGE); //创建队列 Queue queue = session.createQueue("test-queue"); //创建生产者 MessageProducer messageProducer = session.createProducer(queue); //创建消息 TextMessage textMessage = session.createTextMessage("我是文本内容消息体"); //发送消息 messageProducer.send(textMessage); //关闭连接 messageProducer.close(); session.close(); connection.close(); System.out.printf("消息发送成功!!!"); } }
3.生产者执行结果
4.消费者代码
package com.example.queueprj.consumer; import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; import java.io.IOException; import static javax.jms.Session.AUTO_ACKNOWLEDGE; /** * 点对点消费者 */ public class QueueConsumer { public static void main(String[] args) throws JMSException, IOException { //创建工厂 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616"); //创建连接 Connection connection = connectionFactory.createConnection(); //开启连接 connection.start(); //创建会话 Session session = connection.createSession(false,AUTO_ACKNOWLEDGE); //创建队列(其实这里是获取队列) Queue queue = session.createQueue("test-queue"); //创建消费者 MessageConsumer messageConsumer = session.createConsumer(queue); //创建一个监听器 messageConsumer.setMessageListener(new MessageListener() { @Override public void onMessage(Message message) { TextMessage textMessage = (TextMessage) message; try { System.out.printf("消费者收到的消息为 = " + textMessage.getText()); } catch (JMSException e) { e.printStackTrace(); } } }); //此处因为是控制台,防止运行完程序监听器就停止工作了,所以增加了一个键盘输入等待,这样监听器就不会停止工作。web系统不需要这么处理 System.in.read(); //关闭连接 messageConsumer.close(); session.close(); connection.close(); } }
5.消费者执行结果
自愿打赏