MQ的发布订阅模式(fanout)

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

//创建临时队列

String queueName = channel.queueDeclare().getQueue();

MQ的发布订阅模式(fanout)

直接执行肯定报错的:明显告诉我们队列名不要用amq来命名,所以可以将代码稍微改造下

MQ的发布订阅模式(fanout)

channel.queueDeclare(“dy”+queueName,false,false,false,null);

MQ的发布订阅模式(fanout)

了解了交换机之后,我们就可以正式开始发布订阅模式啦~

一、生产者

=====

尽量在生产者指定交换机,毕竟按照正常逻辑来看,肯定是先发送,才能接受。否则的话接受了个寂寞哦~

public static void publishMessageIndividually() throws Exception {

//工具类获取通道

Channel channel = RabbitMqUtils.getChannel();

/**

  • 指定交换机和模式

  • 参数一:指定的交换机名称

  • 参数二:指定的交换机模式

*/

channel.exchangeDeclare(ChangeNameConstant.FANOUT_MODEL,“fanout”);

Scanner sc = new Scanner(System.in);

System.out.println(“请输入信息”);

while (sc.hasNext()) {

String message = sc.nextLine();

channel.basicPublish(ChangeNameConstant.FANOUT_MODEL, “20210804”, null, message.getBytes(“UTF-8”));

System.out.println(“生产者发出消息” + message);

}

}

MQ的发布订阅模式(fanout)

由此可见

  • 创建了一个生产者

  • 建立了一个交换机Name= fanout_pattern

  • 交换机的类型是 fanout(扇型)

二、消费者

=====

消费者A

/**

  • 这是一个测试的消费者

*@author DingYongJun

*@date 2021/8/1

*/

public class DyConsumerTest_Fanout01 {

public static void main(String[] args) throws Exception{

//使用工具类来创建通道

Channel channel = RabbitMqUtils.getChannel();

/**

  • 生成一个临时的队列 队列的名称是随机的

  • 当消费者断开和该队列的连接时 队列自动删除

*/

String queueName = channel.queueDeclare().getQueue();

//把该临时队列绑定我们的 exchange 其中 routingkey(也称之为 binding key)为空字符串

channel.queueBind(queueName, ChangeNameConstant.FANOUT_MODEL, “20210804”);

System.out.println(“交换机A等待接收消息,把接收到的消息打印在屏幕…”);

DeliverCallback deliverCallback = (consumerTag, delivery) -> {

String message = new String(delivery.getBody(), “UTF-8”);

System.out.println(“控制台打印接收到的消息”+message);

};

channel.basicConsume(queueName, true, deliverCallback, consumerTag -> {

System.out.println(“消息中断了~”);

});

}

}

消费者B代码一样,只是改成消费者B等待接受消息~

MQ的发布订阅模式(fanout)

两个消费者的申明的临时队列成功绑定到了交换机上!

执行结果

生产者

MQ的发布订阅模式(fanout)

消费者A

MQ的发布订阅模式(fanout)

消费者B

MQ的发布订阅模式(fanout)

生产者给交换机发了一条消息。

两个消费者都收到了消息。

三、总结

====

MQ的发布订阅模式(fanout)

最后

码字不易,觉得有帮助的可以帮忙点个赞,让更多有需要的人看到

又是一年求职季,在这里,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考

以下是部分内容截图
架构面试专题及架构学习笔记导图.png
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考

以下是部分内容截图
[外链图片转存中…(img-3J7nTnbQ-1714516303677)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值