美文网首页
SpringBoot集成ActiveMQ

SpringBoot集成ActiveMQ

作者: 搁浅_Jay | 来源:发表于2018-07-12 21:46 被阅读102次

    Spring Boot 集成ActiveMQ

    使用ActiveMQ版本5.14.0,spring Boot版本1.5.9;

    1、向pom.xml 文件中添加依赖

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-activemq</artifactId>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
    
    

    2、application.yml添加配置

    消费者接受queue消息,需要将pub-sub-domain配置为false

    spring:
      jms:
        pub-sub-domain: true #false默认不接受topic消息,而是接受队列queue消息
      activemq:
        broker-url: tcp://172.17.1.25:61616
        in-memory: true
        enabled: false
    
    

    3、生产者producer

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jms.core.JmsMessagingTemplate;
    import org.springframework.stereotype.Service;
    
    import javax.jms.Destination;
    
    /**
     *
     * 模拟ActiveMQ生产者
     * 发送方式见Test测试类
     * @Author 孙龙
     */
    @Service("producer")
    public class Producer {
    
        @Autowired // 也可以注入JmsTemplate,JmsMessagingTemplate对JmsTemplate进行了封装
        private JmsMessagingTemplate jmsTemplate;
    
        // 发送消息,destination是发送到的队列,message是待发送的消息
        public void sendMessage(Destination destination, final String message){
            jmsTemplate.convertAndSend(destination, message);
        }
    
    }
    
    

    4、消费者Consumer

    import lombok.extern.slf4j.Slf4j;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jms.annotation.JmsListener;
    import org.springframework.stereotype.Component;
    
    @Slf4j
    @Component
    public class CarDataListener {
    
        /**
         * 接收通过车辆信息
         *
         * @param carDataInfo
         */
        @JmsListener(destination = "activetest")
        public void getPassInfo(String message) {
            log.info("收到的消息是:" + message);
        }
    }
    
    

    5、测试queue和topic

    package com.lilian;
    
    import com.lilian.jms.Producer;
    import org.apache.activemq.command.ActiveMQQueue;
    import org.apache.activemq.command.ActiveMQTopic;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import javax.jms.Destination;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class CommMQApplicationTests {
    
        @Autowired
        private Producer producer;
    
        @Test
        public void contextLoads() {
    
            Destination destination = new ActiveMQTopic("activetest");
            // Destination destination1 = new ActiveMQQueue("activetest");
    
            String info = "测试activeMQ Topic消息!";
            // String info1 = "测试activeMQ Queue消息!";
    
            producer.sendMessage(destination, info);
            // producer.sendMessage(destination1, info1);
        }
    
    }
    
    

    6、消息可视化

    ActiveMQ的服务器地址加上8161端口。例如: localhost:8161

    随后我会将自己写的Demo整理出来开源到github上,在这里公开地址,希望能够帮助到你!

    相关文章

      网友评论

          本文标题:SpringBoot集成ActiveMQ

          本文链接:https://www.haomeiwen.com/subject/umcdpftx.html