springboot整合rabbitmq(topic主题模式)
2021/6/14 10:25:22
本文主要是介绍springboot整合rabbitmq(topic主题模式),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在direct模式基础上改,但是此次使用注解方式
消费者
修改对应的consumer,用注解方式定义交换机和队列的关系
@Service @RabbitListener(bindings = @QueueBinding( value = @Queue(value = "duanxin.topic.queue",durable = "true",autoDelete = "false"), exchange = @Exchange(value = "topic_order_exchange",type = ExchangeTypes.TOPIC), key = "#.duanxin.#" )) public class TopicDuanxinConsumer { @RabbitHandler public void receiveMsg(String msg){ System.out.println("TopicDuanxinConsumer ---接收到的订单信息是:->" + msg); } }
@Service @RabbitListener(bindings = @QueueBinding( value = @Queue(value = "email.topic.queue",durable = "true",autoDelete = "false"), exchange = @Exchange(value = "topic_order_exchange",type = ExchangeTypes.TOPIC), key = "*.email.#" )) public class TopicEmailConsumer { @RabbitHandler public void receiveMsg(String msg){ System.out.println("TopicEmailConsumer ---接收到的订单信息是:->" + msg); } }
@Service @RabbitListener(bindings = @QueueBinding( value = @Queue(value = "sms.topic.queue",durable = "true",autoDelete = "false"), exchange = @Exchange(value = "topic_order_exchange",type = ExchangeTypes.TOPIC), key = "com.#" )) public class TopicSmsConsumer { @RabbitHandler public void receiveMsg(String msg){ System.out.println("TopicSmsConsumer ---接收到的订单信息是:->" + msg); } }
- 启动SpringbootOrderRabbitmqConsumerApplication,查看交换机队列是否绑定成功
生产者
只需要定义路由规则即可#是任意个,可以有多个,可以有一个,也可以没有;*最少有一个
public void makeOrderTopic(String userId,String productId,int num){ String orderId = UUID.randomUUID().toString(); System.out.println("订单生成成功:" + orderId); String exchangeName = "topic_order_exchange"; String routingKey = "com.duanxin"; //@param1 交换机 @param2 路由key/queue队列名称 @param3 消息内容 rabbitTemplate.convertAndSend(exchangeName,routingKey,orderId); }
- 运行测试类
@Test void contextLoads2() { orderService.makeOrderTopic("1","1",12); }
同时客户端也可以收到,当然再次发送也可以收到。
针对于注解方式
虽然简洁,但是还是推荐配置类方式,毕竟各有多爱,另外配置类推荐写在客户端。
这篇关于springboot整合rabbitmq(topic主题模式)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)