//创建临时队列
String queueName = channel.queueDeclare().getQueue();

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

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

了解了交换机之后,我们就可以正式开始发布订阅模式啦~
一、生产者
=====
尽量在生产者指定交换机,毕竟按照正常逻辑来看,肯定是先发送,才能接受。否则的话接受了个寂寞哦~
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);
}
}

由此可见
-
创建了一个生产者
-
建立了一个交换机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等待接受消息~

两个消费者的申明的临时队列成功绑定到了交换机上!
执行结果
生产者

消费者A

消费者B

生产者给交换机发了一条消息。
两个消费者都收到了消息。
三、总结
====

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。


既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
看完美团、字节、腾讯这三家的面试问题,是不是感觉问的特别多,可能咱们又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。
开篇有提及我可是足足背下了1000道题目,多少还是有点用的呢,我看了下,上面这些问题大部分都能从我背的题里找到的,所以今天给大家分享一下互联网工程师必备的面试1000题。
注意不论是我说的互联网面试1000题,还是后面提及的算法与数据结构、设计模式以及更多的Java学习笔记等,皆可分享给各位朋友

互联网工程师必备的面试1000题
而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题。
[外链图片转存中…(img-G9lYn5kd-1713475073233)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
本文介绍了MQ的发布订阅模式,通过Java实现fanout交换机的生产和消费。生产者指定fanout交换机发送消息,消费者创建临时队列并绑定到交换机,实现消息的广播。内容包括生产者、消费者代码示例,以及作者的个人经历和学习资源分享。
&spm=1001.2101.3001.5002&articleId=137946959&d=1&t=3&u=1750556c8df24873906fdae7bb6e5e43)
4351

被折叠的 条评论
为什么被折叠?



