RabbitMQ: Routing结构

生产者 

package com.qf.mq2302.routing;import com.qf.mq2302.utils.MQUtils;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;public class EmitLog {public static final String EXCHANGE_NAME="emitlogs";public static void main(String[] args) throws Exception {Connection connection = MQUtils.getConnection();Channel channel = connection.createChannel();//创建一个路由模式的交换机,默认创出来,不持久化,不自动删除,不是内部交换机channel.exchangeDeclare(EXCHANGE_NAME,"direct");String msg="hello routing!!";//准备routingKeyString routingKey="info";//发送消息channel.basicPublish(EXCHANGE_NAME,routingKey,null,msg.getBytes("utf-8"));channel.close();connection.close();}}

消费者1号

package com.qf.mq2302.routing;import com.qf.mq2302.utils.MQUtils;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.DeliverCallback;
import com.rabbitmq.client.Delivery;import java.io.IOException;public class ReceiveError {private static final String EXCHANGE_NAME="emitlogs";public static void main(String[] args) throws Exception {Connection connection = MQUtils.getConnection();Channel channel = connection.createChannel();channel.exchangeDeclare(EXCHANGE_NAME,"direct");//该消费者创建一个自己独占的队列,绑定到指定交换机接收消息。String queueName = channel.queueDeclare().getQueue();//准备号要绑定时使用的routingkeyString routingKey = "error";//绑定该队列到交换机channel.queueBind(queueName,EXCHANGE_NAME,routingKey);//设置预留消息队列,也就是,RabbitMQ发过来,我可以存几个。当确认一个就会又发过来一个,// 但是这些相当于线程池里的线程,然后每个线程又去开辟一个新的线程去执行,回调方法,// 当回调方法确认完事,才会释放当前这个线程,然后去队列里在消费一个过来。channel.basicQos(1);//autoAck :false不自动确认,需要手动确认,如果手动不确认,就会按照 channel.basicQos(1);的数量,给多少就消费多少,不会再给你发了。channel.basicConsume(queueName, false, new DeliverCallback() {@Overridepublic void handle(String consumerTag, Delivery message) throws IOException {byte[] body = message.getBody();String msg = new String(body, "utf-8");System.out.println(msg);//手动ACKchannel.basicAck(message.getEnvelope().getDeliveryTag(),false);}},consumerTag -> {});}}

消费者2号

package com.qf.mq2302.routing;import com.qf.mq2302.utils.MQUtils;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.DeliverCallback;
import com.rabbitmq.client.Delivery;import java.io.IOException;public class ReceiveIOther {private static final String EXCHANGE_NAME="emitlogs";public static void main(String[] args) throws Exception {Connection connection = MQUtils.getConnection();Channel channel = connection.createChannel();channel.exchangeDeclare(EXCHANGE_NAME,"direct");//该消费者创建一个自己独占的队列,绑定到指定交换机接收消息。String queueName = channel.queueDeclare().getQueue();//准备号要绑定时使用的routingkeyString routingKey1 = "error";String routingKey2 = "info";String routingKey3 = "warn";//绑定该队列到交换机channel.queueBind(queueName,EXCHANGE_NAME,routingKey1);channel.queueBind(queueName,EXCHANGE_NAME,routingKey2);channel.queueBind(queueName,EXCHANGE_NAME,routingKey3);channel.basicQos(1);channel.basicConsume(queueName, false, new DeliverCallback() {@Overridepublic void handle(String consumerTag, Delivery message) throws IOException {byte[] body = message.getBody();//获取routingKeyString routingKey = message.getEnvelope().getRoutingKey();String msg = new String(body, "utf-8");System.out.println(msg);//手动ACKchannel.basicAck(message.getEnvelope().getDeliveryTag(),false);}},consumerTag -> {});}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/71717.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RAC_11g重启顺序以及常用管理命令

● 1、关闭数据库 切换至oracle用户,实验发现grid用户也可以 ○ 1.1 查看数据库实例状态 [oracledb1 ~]$ srvctl status database -d orcl Instance orcl1 is running on node db1 Instance orcl2 is running on node db2 ○ 1.2 停止所有节点上实例 [oracledb1 ~]…

【Unity编辑器扩展】| Inspector监视器面板扩展

前言【Unity编辑器扩展】| Inspector监视器面板扩展一、ContextMenu和ContextMenuItem二、Custom Editors 自定义编辑器三、Property Drawer 属性绘制器总结前言 前面我们介绍了Unity中编辑器扩展的一些基本概念及基础知识,还有编辑器扩展中用到的相关特性Attribute介绍。后面…

vue3:5、组合式API-reactive和ref函数

<script setup> /* reactive接收一个对象类型的数据&#xff0c;返回一个响应式的对象 *//*** ref:接收简单类型或复杂类型&#xff0c;返回一个响应式对象* 本质&#xff1a;是在原有传入数据的基础上&#xff0c;外层报了一层对象&#xff0c;包成了复杂类型* 底层&…

Deep Java Library(四)使用DJL Serving部署JAVA模型 For Windows

1.下载Windows版DJL Serving Windows版DJL Serving下载地址&#xff1a; https://publish.djl.ai/djl-serving/serving-0.23.0.zip 下载下来是一个zip压缩包&#xff0c;大约50M左右&#xff0c;目前最新版本为0.23.0 2.安装DJL Serving 解压serving-0.23.0.zip后目录如下 …

StarRocks数据库FE——Catalog层

​仓外挂湖是指以 MPP 数据库为基础&#xff0c;使用可插拔架构&#xff0c;通过开放接口对接外部存储实现统一存储&#xff0c;在存储底层共享一份数据&#xff0c;计算、存储完全分离&#xff0c;实现从强管理到兼容开放存储和多引擎。实现方向为增加存储能力&#xff0c;提升…

微信小程序实现连续签到七天

断签之后会从第一天重新开始 <template><view class"content" style"height: 100vh;background: white;"><view class"back"><view style"position: absolute;bottom: 200rpx;left: 40rpx;width: 90%;"><i…

MySQL 连接查询和存储过程

一、连接查询 mysql的连接查询&#xff0c;通常都是将来自两个或多个表的记录行结合起来&#xff0c;基于这些表之间的共同字段&#xff0c;进行数据的拼接 首先&#xff0c;要确定一个主表作为结果集&#xff0c;然后将其它表的行有选择性的连接到选定的主表结果上&#xff…

stride与padding对输出尺寸的计算

公式&#xff1a; 练习&#xff1a; 图1&#xff1a; input4&#xff0c;filter3&#xff0c;padding0&#xff0c;stride1 output2 图2&#xff1a; input5&#xff0c;filter3&#xff0c;padding0&#xff0c;stride2 output2 图3&#xff1a; input6&#xff0c;filter3&am…

go语言基本操作---五

error接口的使用 Go语言引入了一个关于错误处理的标准模式&#xff0c;即error接口&#xff0c;它是Go语言内建的接口类型 type error interface {Error() string }package mainimport ("errors""fmt" )type Student struct {name stringid int }func …

elementui表格自定义表头的两种方法

表格自定义表头的方式 多选框表头换文字 请查看上篇博客&#xff1a;http://t.csdn.cn/69De2 文字换按钮 render-header render-header方法详情 Table-column Attributes 参数说明类型可选值默认值render-header列标题 Label 区域渲染使用的 FunctionFunction(h, { column, $in…

异常的顶级理解

目录 1.异常的概念与体系结构 1.1异常的体系结构 1.2异常的举例 1.3错误的举例 2.异常的分类 2.1编译时异常 2.2运行时异常 3.异常的处理 3.1异常的抛出throw 3.2try-catch捕获并处理 3.3finally 3.4 异常声明throws 4.自定义异常类 1.异常的概念与体系结构 1.1异常的…

有关使用HttpServletRequest的Cookie的设置和获取

文章目录 小结问题和解决参考 小结 介绍了如何在HttpServletRequest中对Cookie的进行设置和获取。 问题和解决 在服务器端的HttpServletRequest中对Cookie的进行设置后&#xff0c;客户端在接下来的请求中会携带此设置好的Cookie&#xff0c;所以可以在服务器端接收请求时提…

springboot项目实现helloworld

使用Spring官方源创建项目&#xff08;推荐&#xff09; 缺陷&#xff1a;镜像在国外下载速度有点慢 选择配置 选择版本 实现HelloWorld 删除部分不重要的文件 idea隐藏文件 使用云原生的方式创建项目&#xff08;spring官方源&#xff09; 访问地址&#xff1a;Spring Init…

深入理解联邦学习——纵向联邦学习

分类目录&#xff1a;《深入理解联邦学习》总目录 假设进行联邦学习的数据提供方为 A A A和 B B B&#xff0c;第三方为 C C C&#xff0c;则纵向联邦学习步骤如下&#xff1a; 在系统级做加密样本对齐&#xff0c;在企业感知层面不会暴露非交叉用户对齐样本进行模型加密训练&…

01-ZooKeeper快速入门

1 Zookeeper概念 Zookeeper是Apache Hadoop项目下的一个子项目&#xff0c;是一个树形目录服务。 zookeeper翻译过来就是 动物园管理员&#xff0c;它是用来管理Hadoop&#xff08;大象&#xff09;、Hive&#xff08;蜜蜂&#xff09;、Pig&#xff08;小猪&#xff09;的管…

Hadoop:HDFS--分布式文件存储系统

目录 HDFS的基础架构 VMware虚拟机部署HDFS集群 HDFS集群启停命令 HDFS Shell操作 hadoop 命令体系&#xff1a; 创建文件夹 -mkdir 查看目录内容 -ls 上传文件到hdfs -put 查看HDFS文件内容 -cat 下载HDFS文件 -get 复制HDFS文件 -cp 追加数据到HDFS文件中 -appendTo…

【FusionInsight 迁移】HBase从C50迁移到6.5.1(01)迁移概述

【FusionInsight 迁移】HBase从C50迁移到6.5.1&#xff08;01&#xff09;迁移概述 HBase从C50迁移到6.5.1&#xff08;01&#xff09;迁移概述迁移范围迁移前的准备HDFS文件检查确认HBase迁移目录确保数据落盘停止老集群HBase服务停止新集群HBase服务 HBase从C50迁移到6.5.1&a…

设计模式之观察者模式、访问者模式与模板方法模式

目录 观察者模式 简介 优缺点 结构 实现 运用场景 访问者模式 简介 优缺点 结构 实现 运用场景 模板方法模式 简介 优缺点 结构 实现 运用场景 观察者模式 简介 又叫发布-订阅模式&#xff0c;定义对象间一种一对多的依赖关系&#xff0c;使得每当一个对象改…

JAVA-中国矿业大学作业-计算阶乘毫秒时间

import java.util.Scanner; import java.math.BigInteger; public class 计算阶乘毫秒时间 {public static void main(String []args){long start System.currentTimeMillis();for (int i 1; i < 50; i) {System.out.println(i "! " factorial(i));}long end…

vue3自定义指令

自定义指令是用来增强与扩展元素功能的 在vue官方文当中写的很明白,这里我就不在赘述官方文档.只记录在项目中的实际应用. 局部定义 <template><h4>指令</h4><p v-color-red>字体固定颜色的指令</p><p v-color-value"blue">可…