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

rabbitMQ的direct模式的生产者与消费者使用案例

在这里插入图片描述

消费者C1的RoutingKey 规则按照info warn 两种RoutingKey匹配 绑定队列console

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->{});}
}

消费者C2的RoutingKey 规则按照error RoutingKey匹配 绑定队列disk

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->{});}
}

生产者发送 基于下面调试程序改变参数RoutingKey 切换info warn error 可以观察两个生产者的不同数据接收

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());}}
}
http://www.lryc.cn/news/233496.html

相关文章:

  • 分布式应用服务拆分
  • matplotlib 绘制双纵坐标轴图像
  • 74基于matlab的PSO-ELM的多输入,单输出结果预测,输出训练集和测试机预测结果及误差。
  • shell之head命令
  • 网络安全之了解安全托管服务(MSS)
  • linux进程间通信之共享内存(mmap,shm_open)
  • C/C++---------------LeetCode第1748.唯一元素的和
  • 什么是好用的HR人才测评?
  • 【ARM Trace32(劳特巴赫) 使用介绍 5 -- Trace32 scan dump 详细介绍】
  • Java版B/S架构云his医院信息管理系统源码(springboot框架)
  • 面试经典(2/150)移除元素
  • 基于JavaWeb+SpringBoot+掌上社区疫苗微信小程序系统的设计和实现
  • python_主动调用其他类的成员
  • Pytorch部分报错问题
  • cmmlu数据处理
  • 【ARM Trace32(劳特巴赫) 使用介绍 2.2 -- TRACE32 进阶命令之 DIAG 弹框命令】
  • 黑马程序员微服务 分布式搜索引擎3
  • Python正则表达式学习笔记(入门)
  • C++核心编程 day09 类型转换、异常、输入输出流
  • Docker安装PostgreSQL
  • py并发编程实践-demo
  • 1-2 暴力破解-模拟
  • 机器学习中的Bagging思想
  • 基于PyTorch搭建你的生成对抗性网络
  • ROS话题(Topic)通信:自定义msg - 例程与讲解
  • 【Vue配置项】 computed计算属性 | watch侦听属性
  • linux 查看命令使用说明
  • ceph修复pg inconsistent( scrub errors)
  • 【论文精读】VOYAGER: An Open-Ended Embodied Agent with Large Language Models
  • Linux安装DMETL5与卸载