• ActiveMQ的安装和使用


    一、安装环境

      jdk1.8

      centos7 64系统

      ActiveMQ5.13.0版本

    二、安装

      解压mq文件即可。

      

    三、启动和停止

      启动命令:apache-activemq-5.13.0/bin/activemq start

      

      查看启动状态:apache-activemq-5.13.0/bin/activemq status

      

      停止:apache-activemq-5.13.0/bin/activemq stop

    四、访问后台管理页面

      URL:http://192.168.1.124:8161/admin

      默认账号密码为admin/admin,默认端口为8161

    五、ActiveMQ的使用方法

      点对点:(一个只能对一个)

      

      发布/订阅:(一个对多个)

      

      添加所需要的依赖:

      

    .....
    <
    activemq.version>5.13.0</activemq.version> <spring.version>4.2.4.RELEASE</spring.version> ..... <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>${activemq.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency>
    ......

      5.1  Queue使用  

        生产者:生产消息,发送端。

        第一步:创建ConnectionFactory对象,需要指定服务端ip及端口号。

        第二步:使用ConnectionFactory对象创建一个Connection对象。

        第三步:开启连接,调用Connection对象的start方法。

        第四步:使用Connection对象创建一个Session对象。

        第五步:使用Session对象创建一个Destination对象(topic、queue),此处创建一个Queue对象。

        第六步:使用Session对象创建一个Producer对象。

        第七步:创建一个Message对象,创建一个TextMessage对象。

        第八步:使用Producer对象发送消息。

        第九步:关闭资源。   

    生产者:

    public class Producer {
    
        @Test
        public void testQueueProduce() throws JMSException {
            // 第一步:创建ConnectionFactory对象,需要指定服务端ip及端口号。
            //brokerURL服务器的ip及端口号
            ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.1.124:61616");
            // 第二步:使用ConnectionFactory对象创建一个Connection对象。
            Connection connection = connectionFactory.createConnection();
            // 第三步:开启连接,调用Connection对象的start方法。
            connection.start();
            // 第四步:使用Connection对象创建一个Session对象。
            //第一个参数:是否开启事务。true:开启事务,第二个参数忽略。
            //第二个参数:当第一个参数为false时,才有意义。消息的应答模式。1、自动应答2、手动应答。一般是自动应答。
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            // 第五步:使用Session对象创建一个Destination对象(topic、queue),此处创建一个Queue对象。
            //参数:队列的名称。
            Queue queue = session.createQueue("queue-test");
            // 第六步:使用Session对象创建一个Producer对象。
            MessageProducer producer = session.createProducer(queue);
            // 第七步:创建一个Message对象,创建一个TextMessage对象
            TextMessage textMessage = session.createTextMessage("this is my first mq message");
            // 第八步:使用Producer对象发送消息。
            producer.send(textMessage);
            //第九步:关闭资源
            producer.close();
            session.close();
            connection.close();
        }
    }

      运行该方法后,查看MQ控制台。

      

    消费者:

    public class Consumer {
    
        @Test
        public void testQueueConsumer() throws JMSException, InterruptedException {
            //1.建立连接
            ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.1.124:61616");
            //2.获取连接
            Connection connection = connectionFactory.createConnection();
            //3.开启连接
            connection.start();
            //4.根据连接对象创建session
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            //5.根据session创建Destination(目的地,Queue,Topic)
            Queue queue = session.createQueue("queue-test");
            //6.创建消费者
            MessageConsumer consumer = session.createConsumer(queue);
            //7.接收消息
            System.out.println("start");
            consumer.setMessageListener(new MessageListener() {
                @Override
                public void onMessage(Message message) {
                    if(message instanceof TextMessage) {
                        TextMessage message1 = (TextMessage) message;
                        try{
                            String text = message1.getText();
                            System.out.println("获取的消息为:"+text);
                        }catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }
            });
            System.out.println("end");
            Thread.sleep(10000);
            //8.关闭资源
            consumer.close();
            session.close();
            connection.close();
        }
    }

    执行后查看MQ控制台:

      5.2 Topic的使用

       生产者:

    @Test
        public void testTopicProducer() throws JMSException {
            // 第一步:创建ConnectionFactory对象,需要指定服务端ip及端口号。
            //brokerURL服务器的ip及端口号
            ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.1.124:61616");
            // 第二步:使用ConnectionFactory对象创建一个Connection对象。
            Connection connection = connectionFactory.createConnection();
            // 第三步:开启连接,调用Connection对象的start方法。
            connection.start();
            // 第四步:使用Connection对象创建一个Session对象。
            //第一个参数:是否开启事务。true:开启事务,第二个参数忽略。
            //第二个参数:当第一个参数为false时,才有意义。消息的应答模式。1、自动应答2、手动应答。一般是自动应答。
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            // 第五步:使用Session对象创建一个Destination对象(topic、queue),此处创建一个Queue对象。
            //参数:队列的名称。
            Topic topic = session.createTopic("topic-test");
            // 第六步:使用Session对象创建一个Producer对象。
            MessageProducer producer = session.createProducer(topic);
            // 第七步:创建一个Message对象,创建一个TextMessage对象
    //        TextMessage textMessage = session.createTextMessage("this is my first topic message");
            TextMessage message = new ActiveMQTextMessage();
            message.setText("my first topic message");
            // 第八步:使用Producer对象发送消息。
            producer.send(message);
            //第九步:关闭资源
            producer.close();
            session.close();
            connection.close();
        }

      消费者:

    @Test
        public void testTopicProducer() throws JMSException {
            // 第一步:创建ConnectionFactory对象,需要指定服务端ip及端口号。
            //brokerURL服务器的ip及端口号
            ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.1.124:61616");
            // 第二步:使用ConnectionFactory对象创建一个Connection对象。
            Connection connection = connectionFactory.createConnection();
            // 第三步:开启连接,调用Connection对象的start方法。
            connection.start();
            // 第四步:使用Connection对象创建一个Session对象。
            //第一个参数:是否开启事务。true:开启事务,第二个参数忽略。
            //第二个参数:当第一个参数为false时,才有意义。消息的应答模式。1、自动应答2、手动应答。一般是自动应答。
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            // 第五步:使用Session对象创建一个Destination对象(topic、queue),此处创建一个Queue对象。
            //参数:队列的名称。
            Topic topic = session.createTopic("topic-test");
            // 第六步:使用Session对象创建一个Producer对象。
            MessageProducer producer = session.createProducer(topic);
            // 第七步:创建一个Message对象,创建一个TextMessage对象
    //        TextMessage textMessage = session.createTextMessage("this is my first topic message");
            TextMessage message = new ActiveMQTextMessage();
            message.setText("my first topic message");
            // 第八步:使用Producer对象发送消息。
            producer.send(message);
            //第九步:关闭资源
            producer.close();
            session.close();
            connection.close();
        }

    MQ控制台

      

  • 相关阅读:
    消息中间件(八)-----RabbitMQ延迟队列
    消息中间件(七)-----RabbitMQ死信队列
    通过过滤器、拦截器实现公共验证签名以及时间戳功能
    消息中间件(五)-----AMQP概论、rabbitMQ入门
    消息中间件(四)-----activemq集群
    消息中间件(三)-----限时订单的实现(delayQueue、mq)
    消息中间件(二)-----ActiveMQ高级特性和用法
    面试题:如何实现红包算法
    LRU算法与代码实现
    面试题:寻找缺失的整数
  • 原文地址:https://www.cnblogs.com/huclouy/p/9655838.html
Copyright © 2020-2023  润新知