Springboot整合activemq 多个topic发送消息以及接受消息

1 启动类必须加上  @EnableJms 注解

2 Springboot引入activemq  maven 依赖:

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

3 Springboot整合activemq的时候 默认为queue,如果需要使用topic模式 则配置

#默认情况下activemq提供的是queue模式,若要使用topic模式需要配置未true
spring.jms.pub-sub-domain=true


4 Springboot整合activemq的时候 如果配置连接池(如果不加以下maven依赖 会启动项目报错,提示JmsMessagingTemplate无法注入),配置如下 


spring.activemq.pool.max-connections=10
spring.activemq.pool.idle-timeout=300
spring.activemq.pool.enabled=true

使用springboot2.0+及以下版本时候,maven配置依赖是: 

        <dependency>
	        <groupId>org.apache.activemq</groupId>
	        <artifactId>activemq-pool</artifactId>
        </dependency>

使用springboot2.1+时候,maven配置依赖是:

    <dependency>
        <groupId>org.messaginghub</groupId>
        <artifactId>pooled-jms</artifactId>
    </dependency>

5由于本人使用的Springboot版本为2.3.7,activemq完整配置 application.properties 信息如下,当然还有很多可以配置的选项,可以自行研究

spring.activemq.broker-url=tcp://localhost:61616
spring.activemq.user=admin
spring.activemq.password=admin
spring.activemq.packages.trust-all=true
spring.activemq.pool.max-connections=10
spring.activemq.pool.idle-timeout=300
spring.activemq.pool.enabled=true
#默认情况下activemq提供的是queue模式,若要使用topic模式需要配置未true
spring.jms.pub-sub-domain=true

#额外配置的topic 名称
activemq.pass.data.topic=pass-data-topic
activemq.illegal.data.topic=illegal-data-topic
activemq.interval.data.topic=interval-data-topic

maven完整依赖如下,因为我启用了activemq连接池,所以需要加连接池配置

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

		<dependency>
			<groupId>org.messaginghub</groupId>
			<artifactId>pooled-jms</artifactId>
		</dependency>

6 activemq配置类ActiveMqConfig ,在此配置需要的多个topic名称

@Configuration
public class ActiveMqConfig {

    @Value("${activemq.pass.data.topic}")
    private  String activemqPassDataTopic;

    @Value("${activemq.illegal.data.topic}")
    private  String activemqIllegalAataTopic;

    @Value("${activemq.interval.data.topic}")
    private  String activemqIntervalDtaTopic;

    @Bean(name = "activemqPassDataTopic")
    public Topic activemqPassDataTopic() {
        return new ActiveMQTopic(activemqPassDataTopic);
    }

    @Bean(name = "activemqIllegalAataTopic")
    public Topic activemqIllegalAataTopic() {
        return new ActiveMQTopic(activemqIllegalAataTopic);
    }

    @Bean(name = "activemqIntervalDtaTopic")
    public Topic activemqIntervalDtaTopic() {
        return new ActiveMQTopic(activemqIntervalDtaTopic);
    }

}

7 给不同topic发送消息

    自动注入以下配置
    @Resource
    private JmsMessagingTemplate jmsMessagingTemplate;


    @Resource(name = "activemqPassDataTopic")
    private Topic activemqPassDataTopic;

    @Resource(name = "activemqIllegalAataTopic")
    private Topic activemqIllegalAataTopic;

    @Resource(name = "activemqIntervalDtaTopic")
    private Topic activemqIntervalDtaTopic;


    发送消息
    jmsMessagingTemplate.convertAndSend(activemqPassDataTopic,"我是activemqPassDataTopic");
    jmsMessagingTemplate.convertAndSend(activemqIllegalAataTopic,"我是activemqIllegalAataTopic");
    jmsMessagingTemplate.convertAndSend(activemqIntervalDtaTopic,"我是activemqIntervalDtaTopic");

8 登录activemq控制台,查看topic列表,如下图

9 接收指定 topic 消息

    @JmsListener(destination="pass-data-topic")
    public void onMessagePassData(String content) {
        log.info("pass-data-topic:{}", content);
    }

    @JmsListener(destination="illegal-data-topic")
    public void onMessageIlleagalData(String content) {
        log.info("illegal-data-topic:{}", content);
    }

    @JmsListener(destination="interval-data-topic")
    public void onMessageIntervalIlleagalData(String content) {
        log.info("interval-data-topic:{}", content);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值