ActiveMQ详解(1)——ActiveMQ简介与入门程序

ActiveMQ详解(1)——ActiveMQ简介与入门程序

一. ActiveMQ简介

ActiveMQ是Apache发布的一款功能强大的消息中间件,它基于JMS 1.1 和 J2EE 1.4规范,目前使用十分广泛。

ActiveMQ的主要特点如下:

  • 实现了JMS规范

  • 支持多语言的客户端,包括Java, C, C++, C#, Ruby, Perl, Python, PHP等;

  • 提供了AMQP v1.0 规范和MQTT v3.1规范的支持;

  • 支持许多消息队列的高级特性,如消息组、虚拟目的地、组合目的地等;

  • 可支持JDBC的高性能、快速消息持久化;

  • 方便与Spring进行整合;

    …..

二. 环境搭建

本节介绍ActiveMQ在Linux系统上的安装与运行:

  1. 下载

    扫描二维码关注公众号,回复: 3013685 查看本文章

    在ActiveMQ官网可以下载到安装包,目前最新版本为5.15.5。地址:http://activemq.apache.org/activemq-5155-release.html

  2. 安装

    解压安装包

    tar -zxvf apache-activemq-5.15.5-bin.tar.gz

    运行bin/active脚本启动服务

    cd apache-activemq-5.15.5
    sh bin/activemq start

    ActiveMQ成功启动,默认监听61616端口。可以使用netstat命令查看端口监听状态。

    netstat -nltp | grep 61616
    tcp        0      0 :::61616                    :::*                        LISTEN      10337/java

    ActiveMQ提供了一个管控台,可以监控队列状态并且对消息进行操作。管控台端口为8161,可访问http://localhost:8161/admin进入管控台,默认用户名和密码都为admin。

  3. 关闭

    可通过bin/activemq脚本进行关闭

    sh bin/activemq stop

三 .SpringBoot整合ActiveMQ的入门案例

SpringBoot提供了对JMS的支持。因为ActiveMQ实现了JMS规范,因此可以使用SpringBoot快速地整合ActiveMQ。下面介绍具体步骤:

  1. 在pom文件中引入activemq依赖

    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-activemq</artifactId>
    </dependency>
  2. 添加ActiveMQ配置

    
    #ActiveMQ配置
    
    spring:
     activemq:
       broker-url: 'tcp://localhost:61616'   #配置Broker URL,默认为tcp://localhost:61616
       in-memory: true
       pool:
         enabled:  false
  3. 消息生产者

    Spring提供了JmsTemplate模板,可以方便地对JMS进行操作

    /**
    * @Auther: ZhangShenao
    * @Date: 2018/8/29 07:48
    * @Description: ActiveMQ消息生产者
    */
    @Service
    public class MessageProducer {
       //也可以注入JmsTemplate,JmsMessagingTemplate对JmsTemplate进行了封装
       @Autowired
       private JmsMessagingTemplate jmsMessagingTemplate;
    
       /**
        * 发送消息
        * @param destination 要发送到的队列
        * @param payload 待发送的消息
        */
       public void sendMessage(Destination destination,String payload){
           jmsMessagingTemplate.convertAndSend(destination,payload);
       }
    }
  4. 消息消费者

    Spring提供了@JmsListener注解,可以声明式注册消息监听器

    /**
    * @Auther: ZhangShenao
    * @Date: 2018/8/29 08:24
    * @Description: ActiveMQ 消息消费者
    */
    @Service
    public class MessageConsumer {
       //使用JmsListener配置消费者监听指定的队列,其中message是接收到的消息
       @JmsListener(destination = "my-queue")
       public void receiveMessage(String message){
           System.err.println("接收到了消息: " + message);
       }
    }
  5. 测试

    /**
    * @Auther: ZhangShenao
    * @Date: 2018/8/29 08:28
    * @Description: ActiveMQ 测试
    */
    @SpringBootTest
    @RunWith(SpringRunner.class)
    public class TestActiveMQ {
       @Autowired
       private MessageProducer producer;
    
       @Test
       public void testSendMessage(){
           Destination destination = new ActiveMQQueue("my-queue");
           for (int i = 1;i <= 100;i++){
               producer.sendMessage(destination,"message-" + i);
           }
       }
    }

    查看控制台输出:

    接收到了消息: message-1
    接收到了消息: message-2
    接收到了消息: message-3
    接收到了消息: message-4
    接收到了消息: message-5
    接收到了消息: message-6
    接收到了消息: message-7
    接收到了消息: message-8
    接收到了消息: message-9
    接收到了消息: message-10
    接收到了消息: message-11
    接收到了消息: message-12
    ...

    可以看到,使用SpringBoot提供的spring-boot-starter-activemq可以十分方便地操作ActiveMQ。

猜你喜欢

转载自blog.csdn.net/weixin_34452850/article/details/82181541