SpringBoot集成ActiveMQ

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上,在这里公开地址,希望能够帮助到你!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容