当前位置: 首页 > article >正文

【RabbitMQ】03-交换机

1. 交换机

在这里插入图片描述

2. Fanout交换机

广播。生产者向exchange发消息

@SpringBootTest
public class SpringAmqpTest {
    @Autowired
    public RabbitTemplate rabbitTemplate;

    @Test
    void testSimple() {
        String exchangName = "hmall.fabout";
        rabbitTemplate.convertAndSend(exchangName, null,"hello, w");
    }
}

消费者监听exchange绑定的队列即可。

@Component
@Slf4j
public class SpringAmqbListener {
    @Autowired
    RabbitTemplate rabbitTemplate;

    @RabbitListener(queues = "simple.queue")
    public void Lister(String msg) {
        log.info(msg);
    }

    @RabbitListener(queues = "fanout.q1")
    public void Lister1(String msg) {
        System.out.println("q1:" + msg);
    }

    @RabbitListener(queues = "fanout.q2")
    public void Lister2(String msg) {
        System.out.println("q2:" + msg);
    }
}

3. Direct 直连交换机

在这里插入图片描述
生产者,需要指定exchange和key

@SpringBootTest
public class SpringAmqpTest {
    @Autowired
    public RabbitTemplate rabbitTemplate;

    @Test
    void testSimple() {
        String exchangName = "hmall.direct";
        rabbitTemplate.convertAndSend(exchangName, "yellow", "hello, w");
    }
}

消费者指定对列

@Component
@Slf4j
public class SpringAmqbListener {
    @Autowired
    RabbitTemplate rabbitTemplate;

    @RabbitListener(queues = "simple.queue")
    public void Lister(String msg) {
        log.info(msg);
    }

    @RabbitListener(queues = "direct.q1")
    public void Lister1(String msg) {
        System.out.println("q1:" + msg);
    }

    @RabbitListener(queues = "direct.q2")
    public void Lister2(String msg) {
        System.out.println("q2:" + msg);
    }

    @RabbitListener(queues = "direct.q3")
    public void Lister3(String msg) {
        System.out.println("q3" + msg);
    }
}

4. Topic交换机

在这里插入图片描述
生产者

@SpringBootTest
public class SpringAmqpTest {
    @Autowired
    public RabbitTemplate rabbitTemplate;

    @Test
    void testSimple() {
        String exchangName = "hmall.topic";
        rabbitTemplate.convertAndSend(exchangName, "china.news", "hello, w");
    }
}

消费者

    @RabbitListener(queues = "topic.q1")
    public void topicLister1(String msg) {
        System.out.println("q1:" + msg);
    }

    @RabbitListener(queues = "topic.q2")
    public void topicLister2(String msg) {
        System.out.println("q2:" + msg);
    }

5. 代码生成交换机

在这里插入图片描述
基于注解绑定,在消费者的@Component中写。

 	@RabbitListener(bindings = @QueueBinding(
            value = @Queue(name = "direct.queue1"),
            exchange = @Exchange(name = "hmall.direct", type = ExchangeTypes.DIRECT),
            key = {"red", "yellow"}
    ))
    public void topicLister1(String msg) {
        System.out.println("q1:" + msg);
    }

    @RabbitListener(bindings = @QueueBinding(
            value = @Queue(name = "direct.queue2"),
            exchange = @Exchange(name = "hmall.direct", type = ExchangeTypes.DIRECT),
            key = {"red", "yellow"}
    ))
    public void topicLister2(String msg) {
        System.out.println("q2:" + msg);
    }

6. 修改默认序列化器

  1. 依赖
        <!--jackson-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
  1. 注册为Bean
    @Bean
    public MessageConverter messageConverter() {
        return new Jackson2JsonMessageConverter();
    }

http://www.kler.cn/a/382578.html

相关文章:

  • ReLU6替换ReLU为什么可以增强硬件效率?
  • vue3展示pag格式动态图
  • 低代码环境中的领域与根实体解析
  • Redis学习:BigKey、缓存双写一致性更新策略和案例
  • Redis(2):内存模型
  • 云轴科技ZStack在CID大会上分享VF网卡热迁移技术
  • vue 快速入门
  • cv::Mat初始化、赋值初始化与访问方式
  • 野火PID调试助手由HAL库移植到标准库
  • 蓝桥杯第21场小白入门赛补题
  • FastDDS服务发现之PDP的收发
  • 【线程与并发】详谈 可见性,有序问题
  • Spring Boot 与 Vue 共筑畅销图书推荐卓越平台
  • C#-类:静态成员的介绍
  • LaTeX中的\pdfoutput命令:输出PDF
  • android 使用xml设置背景图片和圆角
  • 新兴好用办公软件,协作效率翻倍就用它了!ONLYOFFICE最近发布了文档8.2版本
  • 猫用宠物空气净化器推荐,希喂,美的哪款除毛好、噪音小?
  • dolphin 配置data 从文件导入hive
  • 智慧水肥一体化:道品科技现代农业的智能管理模式
  • 印度高速升降机行业深度分析及未来预测
  • Echats柱状图的横坐标用图片显示
  • Python机器学习:分类器决策函数详解
  • 【jvm】堆空间分代思想
  • Renesas R7FA8D1BH (Cortex®-M85) Flash的功能介绍
  • 美畅物联丨物联网通信新纪元:Cat.1与5G RedCap的差异化应用