SpringBoot-RabbitMQ路由和主题模式
  TEZNKK3IfmPf 2023年11月14日 16 0

配置生产者

/**
* @author BNTang
*/
@Configuration
public class RoutingTopicConfig {

/**
* 声明交换机
*
* @return 交换机
*/
@Bean
public TopicExchange topicExchange() {
return new TopicExchange("topics");
}

/**
* 声明队列1 绑定info和warm
*
* @return 队列1
*/
@Bean
public Queue topicQueue1() {
return new Queue("topicQueue1");
}

/**
* 声明队列2
*
* @return 队列2
*/
@Bean
public Queue topicQueue2() {
return new Queue("topicQueue2");
}

/**
* 把队列1 绑定到交换机里面指定user.*的路由key
*
* @return 绑定之后的一个关系
*/
@Bean
public Binding binding1() {
return BindingBuilder.bind(topicQueue1()).to(topicExchange()).with("user.*");
}

/**
* 把队列2 绑定到交换机里面指定user.#的路由key
*
* @return 绑定之后的一个关系
*/
@Bean
public Binding binding2() {
return BindingBuilder.bind(topicQueue2()).to(topicExchange()).with("user.#");
}
}

发送消息

@Test
public void testTopic() {
this.rabbitTemplate.convertAndSend("topics", "user.save", "user.save 的消息");
this.rabbitTemplate.convertAndSend("topics", "user.save.findAll", "user.save.findAll 的消息");
this.rabbitTemplate.convertAndSend("topics", "user", "user 的消息");
}

消费者

消费消息

/**
* @author BNTang
*/
@Component
public class RoutingTopicConsumer {

@RabbitListener(bindings = {
@QueueBinding(
value = @Queue("topicQueue1"),
key = {"user.*"},
exchange = @Exchange(name = "topics", type = ExchangeTypes.TOPIC)
)
})
public void receive1(String message) {
System.out.println("消费者【1】接收到【user.*】消息:" + message);
}

@RabbitListener(bindings = {
@QueueBinding(
value = @Queue("topicQueue2"),
key = {"user.#"},
exchange = @Exchange(name = "topics", type = ExchangeTypes.TOPIC)
)
})
public void receive2(String message) {
System.out.println("消费者【2】接收到【user.#】消息:" + message);
}

}

测试方式同之前章节中的一样。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: DataGrid组件 下一篇: SpringBoot word文件转pdf
  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年04月26日   39   0   0 rabbitmqjava
TEZNKK3IfmPf