02 activemq的queue模式

无人久伴 提交于 2020-03-29 18:44:51

activemq共有两种模式,一是点对点,一是发布和订阅,不管是哪种方式,都包含两个角色,一是消息的生产者,一是消息的消费者。点对点是消息只能被一个消费者收到,消息必达。本文将阐述使用java完成queue模式的应用。

1、前提约束

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,此时,消息已经被消费。
3.png
至此,我们完成了activemq的queue模式的测试。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!