概述
主题转发模式
- 添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
- 添加RabbitMQ属性
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
- 配置两个队列 topic.a 与 topic.b
@Bean
public Queue top_a(){
return new Queue("topic.a");
}
@Bean
public Queue top_b(){
return new Queue("topic.b");
}
- 配置主题交换机 topicExchange
@Bean
TopicExchange exchange(){
return new TopicExchange("topicExchange");
}
- 把队列(topic.a,topic.b)绑定到主题交换机(topicExchange)上,并设置routing key
@Bean
Binding bindingExchangeMessage(Queue top_a,TopicExchange exchange){
// routing key 为 topic.a
return BindingBuilder.bind(top_a).to(exchange).with("topic.a");
}
@Bean
Binding bindingExchangeMessages(Queue top_b,TopicExchange exchange){
// routing key 为 topic.# , #代表模糊匹配零个或更多的单词
return BindingBuilder.bind(top_b).to(exchange).with("topic.#");
}
- 创建两个接收者,绑定创建的两个队列
@Component
@RabbitListener(queues = "topic.a")
public class TopicReceiverA {
@RabbitHandler
public void process(String msg){
System.out.println("接收A:"+msg);
}
}
@Component
@RabbitListener(queues = "topic.b")
public class TopicReceiverB {
@RabbitHandler
public void process(String msg){
System.out.println("接收B:"+msg);
}
}
- 创建个发送方法用来发送消息
@Component
public class TopicSender {
@Autowired
private AmqpTemplate amqpTemplate;
public void send(String exchange,String queue,String context){
this.amqpTemplate.convertAndSend(exchange,queue,context);
}
}
- 发送测试数据 , topic.1 与 topic.b的routing key(topic.#) 匹配 ,所以topic.b接收消息
topicSender.send("topicExchange","topic.1","hello");
//运行结果: 接收B:hello
- 发送测试数据 , topic.a 与 topic.b的routing key(topic.#) 和 topic.a的 routing key(topic.a) 都匹配,所以都接收消息
topicSender.send("topicExchange","topic.a","hello");
//运行结果: 接收A:hello 接收B:hello
最后
以上就是单纯海燕为你收集整理的Springboot集成RabbitMQ之主题模式的全部内容,希望文章能够帮你解决Springboot集成RabbitMQ之主题模式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复