Spring Boot 整合 ActiveMQ

时间:2019-08-24
本文章向大家介绍Spring Boot 整合 ActiveMQ,主要包括Spring Boot 整合 ActiveMQ使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<!--消息队列连接池-->
<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-pool</artifactId>
    <version>5.15.0</version>
</dependency>

配置文件(application.yml)

server:
  port: 61616

spring:
  activemq:
    broker-url: tcp://localhost:61616
    user: admin
    password: admin
  jms:
    pub-sub-domain: false   # false=queue  true=topic
    
#定义队列名称
myqueue: activemq-queue

#true 表示使用内置的MQ,false则连接服务器
spring.activemq.in-memory=false

#true表示使用连接池;false时,每发送一条数据创建一个连接
spring.activemq.pool.enabled=true


#连接池最大连接数
spring.activemq.pool.max-connections=10

#空闲的连接过期时间,默认为30秒
spring.activemq.pool.idle-timeout=30000

#强制的连接过期时间,与idleTimeout的区别在于:
    idleTimeout是在连接空闲一段时间失效,而expiryTimeout不管当前连接的情况,只要达到指定时间就失效。默认为0,never
spring.activemq.pool.expiry-timeout=0

定义Queue

@Configuration
@EnableJms
public class BeanConfig {

    @Value("${myqueue}")
    private String myqueue;
    
    //定义存放消息的队列
    @Bean
    public Queue queue() {
        return new ActiveMQQueue(myqueue);
    }
}

生产者

public class QueueProducer {

    //注入存放消息的队列,用于下列方法一
    @Autowired
    private Queue queue;

    //注入springboot封装的工具类
    @Autowired
    private JmsMessagingTemplate jmsMessagingTemplate;

    public void send(String name) {
        //方法一:添加消息到消息队列
        jmsMessagingTemplate.convertAndSend(queue, name);

        //方法二:这种方式不需要手动创建queue,系统会自行创建名为test的队列
        jmsMessagingTemplate.convertAndSend("test", name);
    }
}

原文地址:https://www.cnblogs.com/loveer/p/11406455.html