SpringBoot整合ActiveMQ实现Queue和Topic两种模式

本文介绍了如何在SpringBoot应用中配置ActiveMQ,包括创建点对点队列和订阅式主题,以及生产者和消费者的实现。重点展示了如何使用`@Bean`注解配置队列和主题,以及`@JmsListener`用于监听消息。同时提及了分布式技术中的相关组件如Kafka和RabbitMQ的学习资源。
摘要由CSDN通过智能技术生成

queue: queue_mq # 点对点消费名字

topic: topic_mq # 订阅式消费名字

5、配置Bean


@Configuration

@EnableJms

public class ActiveMqConfig {

@Value(“${queue}”)//对应yml文件中定义的queue

private String queue;

@Value(“${topic}”)//对应yml文件中定义的topic

private String topic;

/**

  • 创建点对点的队列 一个消息只能被一个消费者消费 — 一对一

  • @return

*/

@Bean

public Queue queue(){

return new ActiveMQQueue(queue);

}

/**

  • 创建订阅式的队列 一个消息可以被多个消费者消费 — 一对多

  • @return

*/

@Bean

public Topic topic(){

return new ActiveMQTopic(topic);

}

}

6、创建生产者(Queue+Topic)


@RestController

public class ProducerController {

@Autowired

private Queue queue;

@Autowired

private Topic topic;

@Autowired

private JmsMessagingTemplate jmsMessagingTemplate;

/**

  • 点对点的消息队列的生产者

  • @param string

*/

@GetMapping(“/queue”)

public void sendMsgQueue(@RequestParam String string){

System.out.println("消息已经发送,准备被消费,消息为 —> "+string);

jmsMessagingTemplate.convertAndSend(queue,string);

}

/**

  • 一对多的消息队列的生产者

  • @param string

*/

@GetMapping(“/topic”)

public void sendMsgTopic(@RequestParam String string){

System.out.println("消息已经发送,准备被消费,消息为 —> "+string);

jmsMessagingTemplate.convertAndSend(topic,string);

}

}

7、创建消费者(Topic模式下)


@Component

public class TopicConsumer {

/**

  • 监听消息,名字为生产者发送的名字,要一致,不然监听不到.

  • 因为是订阅者模式,可以有多个消费者,我们这里举两个来进行测试

  • @param string

*/

@JmsListener(destination = “${topic}”)

public void consumerTopicOne(String string){

System.out.println("我是消费者一号:消费消息成功,信息为—> "+string);

}

@JmsListener(destination = “${topic}”)

public void consumerTopicTwo(String string){

System.out.println("我是消费者二号:消费消息成功,信息为—> "+string);

}

}

8、测试结果(Topic模式下)


图片

9、网页版查看是否成功(Topic模式下)


网站地址  http://127.0.0.1:8161/admin/ 账号密码都是admin

图片

图片

10、创建消费者(Queue模式下)


首先把yml文件中的配置修改为Queue:pub-sub-domain: false

@Component

public class QueueConsumer {

/**

  • 监听消息,名字为生产者发送的名字,要一致,不然监听不到.

  • 因为是队列模式,只能消费者

  • @param string

*/

@JmsListener(destination = “${queue}”)

public void consumerQueue(String string){

System.out.println("消费消息成功,信息为—> "+string);

}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最后总结

ActiveMQ+Kafka+RabbitMQ学习笔记PDF

image.png

  • RabbitMQ实战指南

image.png

  • 手写RocketMQ笔记

image.png

  • 手写“Kafka笔记”

image

关于分布式,限流+缓存+缓存,这三大技术(包含:ZooKeeper+Nginx+MongoDB+memcached+Redis+ActiveMQ+Kafka+RabbitMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
65)]

关于分布式,限流+缓存+缓存,这三大技术(包含:ZooKeeper+Nginx+MongoDB+memcached+Redis+ActiveMQ+Kafka+RabbitMQ)等等。这些相关的面试也好,还有手写以及学习的笔记PDF,都是啃透分布式技术必不可少的宝藏。以上的每一个专题每一个小分类都有相关的介绍,并且小编也已经将其整理成PDF啦
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值