《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
//创建临时队列
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
生产者给交换机发了一条消息。
两个消费者都收到了消息。
三、总结
====
最后
码字不易,觉得有帮助的可以帮忙点个赞,让更多有需要的人看到
又是一年求职季,在这里,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考
以下是部分内容截图
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考
以下是部分内容截图
[外链图片转存中…(img-3J7nTnbQ-1714516303677)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!