【RabbitMQ】03-交换机

[复制链接]
发表于 2025-12-30 11:22:05 | 显示全部楼层 |阅读模式
1. 交换机


2. Fanout交换机

广播。生产者向exchange发消息
  1. @SpringBootTest
  2. public class SpringAmqpTest {
  3.     @Autowired
  4.     public RabbitTemplate rabbitTemplate;
  5.     @Test
  6.     void testSimple() {
  7.         String exchangName = "hmall.fabout";
  8.         rabbitTemplate.convertAndSend(exchangName, null,"hello, w");
  9.     }
  10. }
复制代码
斲丧者监听exchange绑定的队列即可。
  1. @Component
  2. @Slf4j
  3. public class SpringAmqbListener {
  4.     @Autowired
  5.     RabbitTemplate rabbitTemplate;
  6.     @RabbitListener(queues = "simple.queue")
  7.     public void Lister(String msg) {
  8.         log.info(msg);
  9.     }
  10.     @RabbitListener(queues = "fanout.q1")
  11.     public void Lister1(String msg) {
  12.         System.out.println("q1:" + msg);
  13.     }
  14.     @RabbitListener(queues = "fanout.q2")
  15.     public void Lister2(String msg) {
  16.         System.out.println("q2:" + msg);
  17.     }
  18. }
复制代码
3. Direct 直连交换机


生产者,须要指定exchange和key
  1. @SpringBootTest
  2. public class SpringAmqpTest {
  3.     @Autowired
  4.     public RabbitTemplate rabbitTemplate;
  5.     @Test
  6.     void testSimple() {
  7.         String exchangName = "hmall.direct";
  8.         rabbitTemplate.convertAndSend(exchangName, "yellow", "hello, w");
  9.     }
  10. }
复制代码
斲丧者指定对列
  1. @Component
  2. @Slf4j
  3. public class SpringAmqbListener {
  4.     @Autowired
  5.     RabbitTemplate rabbitTemplate;
  6.     @RabbitListener(queues = "simple.queue")
  7.     public void Lister(String msg) {
  8.         log.info(msg);
  9.     }
  10.     @RabbitListener(queues = "direct.q1")
  11.     public void Lister1(String msg) {
  12.         System.out.println("q1:" + msg);
  13.     }
  14.     @RabbitListener(queues = "direct.q2")
  15.     public void Lister2(String msg) {
  16.         System.out.println("q2:" + msg);
  17.     }
  18.     @RabbitListener(queues = "direct.q3")
  19.     public void Lister3(String msg) {
  20.         System.out.println("q3" + msg);
  21.     }
  22. }
复制代码
4. Topic交换机


生产者
  1. @SpringBootTest
  2. public class SpringAmqpTest {
  3.     @Autowired
  4.     public RabbitTemplate rabbitTemplate;
  5.     @Test
  6.     void testSimple() {
  7.         String exchangName = "hmall.topic";
  8.         rabbitTemplate.convertAndSend(exchangName, "china.news", "hello, w");
  9.     }
  10. }
复制代码
斲丧者
  1.     @RabbitListener(queues = "topic.q1")
  2.     public void topicLister1(String msg) {
  3.         System.out.println("q1:" + msg);
  4.     }
  5.     @RabbitListener(queues = "topic.q2")
  6.     public void topicLister2(String msg) {
  7.         System.out.println("q2:" + msg);
  8.     }
复制代码
5. 代码天生交换机


基于注解绑定,在斲丧者的@Component中写。
  1.         @RabbitListener(bindings = @QueueBinding(
  2.             value = @Queue(name = "direct.queue1"),
  3.             exchange = @Exchange(name = "hmall.direct", type = ExchangeTypes.DIRECT),
  4.             key = {"red", "yellow"}
  5.     ))
  6.     public void topicLister1(String msg) {
  7.         System.out.println("q1:" + msg);
  8.     }
  9.     @RabbitListener(bindings = @QueueBinding(
  10.             value = @Queue(name = "direct.queue2"),
  11.             exchange = @Exchange(name = "hmall.direct", type = ExchangeTypes.DIRECT),
  12.             key = {"red", "yellow"}
  13.     ))
  14.     public void topicLister2(String msg) {
  15.         System.out.println("q2:" + msg);
  16.     }
复制代码
6. 修改默认序列化器


  • 依赖
  1.         <!--jackson-->
  2.         <dependency>
  3.             <groupId>com.fasterxml.jackson.core</groupId>
  4.             <artifactId>jackson-databind</artifactId>
  5.         </dependency>
复制代码

  • 注册为Bean
  1.     @Bean
  2.     public MessageConverter messageConverter() {
  3.         return new Jackson2JsonMessageConverter();
  4.     }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表