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

本文介绍了在Java面试中常见的ActiveMQ配置,包括如何创建点对点队列和订阅式主题,以及生产者和消费者如何交互。还提供了Spring框架下的JMS配置示例和测试方法。
摘要由CSDN通过智能技术生成

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
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);

}

最后,附一张自己面试前准备的脑图:

image

面试前一定少不了刷题,为了方便大家复习,我分享一波个人整理的面试大全宝典

  • Java核心知识整理

image

  • Spring全家桶(实战系列)

image.png

Step3:刷题

既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

以下是我私藏的面试题库:

image

很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。

最后祝愿各位身体健康,顺利拿到心仪的offer!
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
以下是我私藏的面试题库:**

[外链图片转存中…(img-mwch0JU5-1714669844547)]

很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。

最后祝愿各位身体健康,顺利拿到心仪的offer!
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值