再战RabbitMQ-模式三-发布订阅模式

rabbitmq 发布订阅订阅模式

尝试使用fanout模式进行发送
具体操作步骤如下

发送端

准备10条消息

 ConnectionFactory connectionFactory = connectionFactory();
        Connection connection = connectionFactory.newConnection();
        Channel channel = connection.createChannel();
        channel.exchangeDeclare(EXCHANGE_01, BuiltinExchangeType.FANOUT);
        for (int i = 0; i < 10; i++) {
            byte[] body = ("张三,你好,"+i).getBytes();
            channel.basicPublish(EXCHANGE_01, "", MessageProperties.PERSISTENT_TEXT_PLAIN, body);
        }

接收端1

    ConnectionFactory connectionFactory = connectionFactory();
        Connection connection = connectionFactory.newConnection();
        Channel channel = connection.createChannel();

        //申明交换机、队列、绑定关系
        channel.exchangeDeclare(EXCHANGE_01, BuiltinExchangeType.FANOUT);
        channel.queueDeclare(QUEUE_01,true,false,false,null);
        channel.queueBind(QUEUE_01,EXCHANGE_01,"");

        DeliverCallback deliverCallback = (consumerTag, delivery) -> {
            String message = new String(delivery.getBody(), "UTF-8");
            System.out.println(" [x] Received '" + message + "'");
        };
        channel.basicConsume(QUEUE_01, true, deliverCallback, consumerTag -> { });

接收端2

 ConnectionFactory connectionFactory = connectionFactory();
        Connection connection = connectionFactory.newConnection();
        Channel channel = connection.createChannel();

        //申明交换机、队列、绑定关系
        channel.exchangeDeclare(EXCHANGE_01, BuiltinExchangeType.FANOUT);
        channel.queueDeclare(QUEUE_02,true,false,false,null);
        channel.queueBind(QUEUE_02, EXCHANGE_01, "");

        DeliverCallback deliverCallback = (consumerTag, delivery) -> {
            String message = new String(delivery.getBody(), "UTF-8");
            System.out.println(" [x] Received '" + message + "'");
        };
        channel.basicConsume(QUEUE_02, true, deliverCallback, consumerTag -> {
        });

队列模型图

以上代码生关系

运行结果-并非把所有消息发送到两个消息费

消费端1

消费端1## 消费端2
消费端2

结论

可以正确的把消息广播到两个消费者。

遗留小问题:之前尝试几次发送,消费者1和消费者2收到的消息个数不同。后续尝试几次,结论正常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值