ActiveMQ的安装和使用

Posted huclouy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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控制台

技术分享图片

 

 

 

 

 

  



以上是关于ActiveMQ的安装和使用的主要内容,如果未能解决你的问题,请参考以下文章

ActiveMQ的安装和使用

架构设计:系统间通信(22)——提高ActiveMQ工作性能(上)

ActiveMQ入门系列二:入门代码实例(点对点模式)

activeMQ的安装和使用

Java之activeMQ的使用

分布式架构实战--ActiveMQ的安装与使用(单节点)