SpringBoot集成ActiveMQ

Spring Boot 集成ActiveMQ

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

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

        
            org.springframework.boot
            spring-boot-starter-activemq
        
        
            org.projectlombok
            lombok
        

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)