当前位置: 首页 > news >正文

rabbitMQ的扇出模式(fanout发布订阅)的生产者与消费者使用案例

扇出模式 fanout 发布订阅模式
生产者

生产者发送消息到交换机(logs),控制台输入消息作为生产者的消息发送

package com.esint.rabbitmq.work03;import com.esint.rabbitmq.RabbitMQUtils;
import com.rabbitmq.client.Channel;import java.util.Scanner;public class EmitLog {public static final String EXCHANGE_NAME = "logs";public static void main(String[] args) throws Exception {Channel channel = RabbitMQUtils.getChannel();//声明交换机channel.exchangeDeclare(EXCHANGE_NAME,"fanout");Scanner scanner = new Scanner(System.in);while(scanner.hasNext()){String mes = scanner.next();channel.basicPublish(EXCHANGE_NAME,"",null,mes.getBytes("UTF-8"));System.out.println("生产者发出消息:"+mes.toString());}}
}

交换机如下:
在这里插入图片描述
发布者如下:
在这里插入图片描述

消费者

创建两个消费来同时消费生产者的发布消息。声明两个临时队列,与交换机做绑定,消费消息

消费者01
package com.esint.rabbitmq.work03;import com.esint.rabbitmq.RabbitMQUtils;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DeliverCallback;/*** 消费者01的消息接受*/
public class ReceiveLog01 {public static final String EXCHANGE_NAME = "logs";public static void main(String[] args) throws Exception {//获取信道Channel channel = RabbitMQUtils.getChannel();//声明一个交换机channel.exchangeDeclare(EXCHANGE_NAME,"fanout");/***声明一个队列  队列名字随机* 消费者断开与队列的链接后 队列自动删除*/String queue = channel.queueDeclare().getQueue();/*** 绑定交换机与队列* 1.队列名字*/channel.queueBind(queue,EXCHANGE_NAME,"");System.out.println("wait print message...");DeliverCallback deliverCallback = (var,var2)->{System.out.println("01:"+new String(var2.getBody()));};channel.basicConsume(queue,true,deliverCallback, var->{});}
}
消费者02
package com.esint.rabbitmq.work03;import com.esint.rabbitmq.RabbitMQUtils;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.DeliverCallback;/*** 消费者02的消息接受*/
public class ReceiveLog02 {public static final String EXCHANGE_NAME = "logs";public static void main(String[] args) throws Exception {//获取信道Channel channel = RabbitMQUtils.getChannel();//声明一个交换机channel.exchangeDeclare(EXCHANGE_NAME,"fanout");/***声明一个队列  队列名字随机* 消费者断开与队列的链接后 队列自动删除*/String queue = channel.queueDeclare().getQueue();/*** 绑定交换机与队列* 1.队列名字*/channel.queueBind(queue,EXCHANGE_NAME,"");System.out.println("wait print message...");DeliverCallback deliverCallback = (var,var2)->{System.out.println("02:"+new String(var2.getBody(),"UTF-8"));};channel.basicConsume(queue,true,deliverCallback, var->{});}
}

两个临时队列:
在这里插入图片描述

运行测试生产者:
在这里插入图片描述

运行测试消费者:
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/232715.html

相关文章:

  • VSCode打开Json 文件格式化
  • 【C++】:STL——标准模板库介绍 || string类
  • Python小白之PyCharm仍然显示“No module named ‘xlwings‘”
  • 在Uni-app中实现计时器效果
  • Linux脚本shell中将Windos格式字符转换为unix
  • 【分布式】MIT 6.824 Lab 2B实现细节分析
  • MySql 数据库初始化,创建用户,创建数据库,授权
  • 【洛谷算法题】P5712-Apples【入门2分支结构】
  • vue项目中的js文件使用vuex
  • 【Vue3】 computed 完整写法 全选反选 、计算商品总价
  • Mindomo Desktop for Mac(免费思维导图软件)下载
  • Spark资源规划-资源上线评估
  • RT-Thread STM32F407 定时器
  • C#asp.net考试系统+sqlserver
  • mac上配置maven
  • 解决vue-cli node-sass安装不成功问题
  • 【Mysql】Mysql内置函数介绍
  • 【Linux】vscode远程连接ubuntu失败
  • 如何设计开发一对一交友App吸引更多活跃用户
  • UE基础篇六:音频
  • vscode+python开发之虚拟环境和解释器切换
  • vite 样式按需加载
  • Flutter打包iOS过程中pod访问github失败
  • 使用VMware安装linux虚拟机
  • Kafka、RocketMQ、RabbitMQ的比较总结Kafka、RocketMQ、RabbitMQ的比较总结
  • r语言plot函数
  • Notepad++ 和正则表达式 只保留自己想要的内容
  • SELinux零知识学习十、SELinux策略语言之客体类别和许可(4)
  • String字符串性能优化的几种方案
  • 微服务基础,分布式核心,常见微服务框架,SpringCloud概述,搭建SpringCloud微服务项目详细步骤,含源代码