activemq共有两种模式,一是点对点,一是发布和订阅,不管是哪种方式,都包含两个角色,一是消息的生产者,一是消息的消费者。点对点是消息只能被一个消费者收到,消息必达。本文将阐述使用java完成queue模式的应用。
1、前提约束
- 已经安装和启动activemq https://www.jianshu.com/p/47d6d824ad50
2、使用idea创建一个maven的项目
https://www.jianshu.com/p/042073b7710b
3、修改pom.xml
在pom.xml中加入以下依赖:
<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.15.3</version> </dependency>
4、创建一个消息的生产者
import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; public class P2PProducer { public static void main(String[] args) throws Exception{ //1.创建连接工厂 ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory("tcp://192.168.100.192:61616"); //2.获取连接 Connection connection = activeMQConnectionFactory.createConnection(); //3.启动连接 connection.start(); //4.获取session (参数1:是否启动事务,参数2:消息确认模式) Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); //5.创建队列对象 Queue queue = session.createQueue("my-queue"); //6.创建消息生产者 MessageProducer producer = session.createProducer(queue); //7.创建消息 TextMessage textMessage = session.createTextMessage("ali"); //8.发送消息 producer.send(textMessage); //9.关闭资源 producer.close(); session.close(); connection.close(); } }
5、启动,查看管理界面
依次点击Manage ActiveMQ broker->queues,我们看到自己创建的queue,此时,消息虽已进入队列,但还没有被消费。
6、创建一个消息的消费者
import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; public class P2PConsumer { public static void main(String[] args)throws Exception { //1.创建连接工厂 ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("tcp://192.168.100.192:61616"); //2.获取连接 Connection connection = connectionFactory.createConnection(); //3.启动连接 connection.start(); //4.获取session (参数1:是否启动事务,参数2:消息确认模式) Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); //5.创建队列对象 Queue queue = session.createQueue("my-queue"); //6.创建消息消费 MessageConsumer consumer = session.createConsumer(queue); //7.监听消息 consumer.setMessageListener(new MessageListener() { public void onMessage(Message message) { TextMessage textMessage=(TextMessage)message; try { System.out.println("接收到消息:"+textMessage.getText()); } catch (JMSException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); //8.等待键盘输入 System.in.read(); //9.关闭资源 consumer.close(); session.close(); connection.close(); } }
7、启动,再次查看管理界面
依次点击Manage ActiveMQ broker->queues,我们看到自己创建的queue,此时,消息已经被消费。
至此,我们完成了activemq的queue模式的测试。
来源:https://www.cnblogs.com/alichengxuyuan/p/12577057.html