08-RabbitMQ-广播模式

概述

fanout扇出也称之为广播

在广播模式下,消息发送的流程是这样的,如下所示:

  • 可以有多个消费者。
  • 每个消费者有自己的 queue(队列)
  • 每个队列都要绑定到 Exchange(交换机)
  • 生产者发送的消息,只能发送到交换机,交换机来决定要发给哪个队列,生产者无法决定。
  • 交换机把消息发送给绑定过的所有队列。
  • 队列的消费者都能拿到消息。实现一条消息被多个消费者消费。

创建生产者

java
/**
 * @author: BNZeng
 */
public class Producer {

    @Test
    public void sendMessage() throws Exception {
        Connection connection = RabbitMQUtil.getConnection();

        // 创建通道
        Channel channel = connection.createChannel();

        // 设置交换机
        channel.exchangeDeclare("logs", BuiltinExchangeType.FANOUT);

        // 向交换机发消息
        channel.basicPublish("logs", "", null, ("我是个 fanout 类型的消息").getBytes());

        RabbitMQUtil.closeChannelAndConnection(channel, connection);

        System.out.println("消息发送成功");
    }
}

创建消费者 1

java
/**
 * @author BNZeng
 */
public class Consumer1 {

    @Test
    public void receiveMessage() throws Exception {

        Connection connection = RabbitMQUtil.getConnection();

        // 得到通道
        Channel channel = connection.createChannel();

        // 绑定交换机
        channel.exchangeDeclare("logs", BuiltinExchangeType.FANOUT);

        // 从通道里面得到一个临时的队列
        String queue = channel.queueDeclare().getQueue();

        // 把临时队列和交换机进行绑定
        channel.queueBind(queue, "logs", "");

        // 接收消息
        channel.basicConsume(queue, new DefaultConsumer(channel) {
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                System.out.println("消费者【1】接收到消息" + new String(body));
            }
        });

        System.out.println("消费者【1】启动成功");
        System.in.read();
    }
}

创建消费者 2

java
/**
 * @author BNZeng
 */
public class Consumer2 {

    @Test
    public void receiveMessage() throws Exception {

        Connection connection = RabbitMQUtil.getConnection();

        // 得到通道
        Channel channel = connection.createChannel();

        // 绑定交换机
        channel.exchangeDeclare("logs", BuiltinExchangeType.FANOUT);

        // 从通道里面得到一个临时队列
        String queue = channel.queueDeclare().getQueue();

        // 把临时的队列和交换机进行绑定
        channel.queueBind(queue, "logs", "");

        // 接收消息
        channel.basicConsume(queue, new DefaultConsumer(channel) {
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                System.out.println("消费者【2】接收到消息" + new String(body));
            }
        });

        System.out.println("消费者【2】启动成功");
        System.in.read();
    }
}
posted @   鱼檬檬  阅读(329)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
  1. 1 缓缓 杜宣达
  2. 2 乌梅子酱 李荣浩
  3. 3 Plain Jane(Remix 13z) 鱼幼微
  4. 4 放空 大籽/Lil E/A1 TRIP
  5. 5 银河与星斗 yihuik苡慧
  6. 6 坏女孩 徐良/小凌
  7. 7 假面舞会 很美味
  8. 8 你画的彩虹 姜洋
  9. 9 不再犹豫 Beyond
  10. 10 童话 光良
  11. 11 不可撤销乐队
  12. 12 山楂树之恋 程佳佳
  13. 13 夏天的风 火羊瞌睡了
  14. 14 老人与海 苗田雨
  15. 15 爸爸妈妈 李荣浩
  16. 16 樱花草 (翻自 sweety) 苏白睡醒啦
  17. 17 是想你的声音啊 傲七爷(江偌绮)
  18. 18 Love Story Taylor Swift
  19. 19 晚风 7opy/BT07
  20. 20 错位时空 艾辰
  21. 21 千千万万 深海鱼子酱
  22. 22 给你呀(又名:for ya) 蒋小呢
  23. 23 把回忆拼好给你 王贰浪
  24. 24 万有引力 F*yy
  25. 25 沉醉的青丝 (想你 念你dj版) 曲甲
  26. 26 太多 阿冗
  27. 27 7710 好乐无荒/尹露浠
  28. 28 恋爱画板 锦零
  29. 29 My Cookie Can Ayi
  30. 30 日不落(温柔版)
沉醉的青丝 (想你 念你dj版) - 曲甲
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 辛沐/林乔

作曲 : 武鹏飞

编曲 : 中意

想你 念你

停止再继续

如果回忆容易

我会想你念你

假装你在这里

那本旧的日历

翻了日期

告诉我牢记不容易

如果可以作弊

我会想你念你

到最后的荼蘼

时间不会犹豫

等一缕

为你而沉醉的青丝

想你 念你

想你 念你

想你 念你

想你 念你

想你 念你

我追着你而去

想你 念你

停止再继续

我走过那条长椅

默守着那个秘密

拼命在脑海中寻你

如果回忆容易

我会想你念你

假装你在这里

那本旧的日历

翻了日期

告诉我牢记不容易

如果可以作弊

我会想你念你

到最后的荼蘼

时间不会犹豫

等一缕

为你而沉醉的青丝

想你 念你

想你 念你

想你 念你

等一缕

沉醉的青丝

出品方:网易音乐人x飓风计划

本歌曲来自〖网易飓风计划〗

10亿现金激励,千亿流量扶持!

业务联系:jf399@vip.163.com

混音:dB Audio Studio

录音:欧几

制作人:孙正洵

监制:何湲

策划:刘宇航/胡圣羽

宣传:王嘉晟/黄嘉慧/贾焱祺

DJ制作:深声文化(DJ Yaha)

OP: 讯飞音乐

点击右上角即可分享
微信分享提示