Spring Boot 整合 ActiveMQ

Posted loveer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
    

    //间隔时间3s定投,需要在主启动类添加注解:@EnableScheduling
    @Scheduled(fixedDelay = 3000)
    public void send1(String name) 
        jmsMessagingTemplate.convertAndSend(queue, name);
    

以上是关于Spring Boot 整合 ActiveMQ的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot如何整合Redis

Spring Boot如何整合Redis

Spring Boot:Spring Boot整合FreeMarker

spring boot 系列之四:spring boot 整合JPA

Spring Boot 2.X - Spring Boot整合AMQP之RabbitMQ

Spring Boot系列Spring Boot整合持久层