(转)RabbitMQ学习之exchange总结
http://blog.csdn.net/zhu_tianwei/article/details/53969674
前面介绍了几类exchange的作用,这个总结一下:
direct:消息会被推送至绑定键(binding key)和消息发布附带的选择键(routing key)完全匹配的队列。默认有”AMQP default”,它用一个空字符串表示,它是direct类型的exchange,任何发往这个exchange的消息都会被路由到routing key的名字对应的队列上,如果没有对应的队列,则消息会被丢弃。
声明exchange
channel.basicPublish(exchange, routingKey, props, body);
发布消息
channel.basicPublish(exchange, routingKey, null, message .getBytes());
消费端绑定routing key
channel.queueBind(queue, exchange, routingKey)
接收消息
channel.basicConsume(queue, true, consumer);
fanout:一个发送到exchange的消息都会被转发到与该exchange绑定的所有队列上。
声明exchange
channel.exchangeDeclare(exchange, “fanout”);
发布消息
channel.basicPublish(exchange, queue, null, message .getBytes());
消费端绑定
channel.queueBind(queue, exchange, “”);
接收消费
channel.basicConsume(queue, true, consumer);
topic:一个附带特殊的选择键将会被转发到绑定键与之匹配的队列中。需要注意的是:关于绑定键有两种特殊的情况。
1。* 可以匹配一个标识符。
2。# 可以匹配0个或多个标识符。
声明exchange
channel.exchangeDeclare(exchange, “topic”);
发布消息
channel.basicPublish(exchange, routingKey, null, msg
消费端绑定
channel.queueBind(queue, exchange, “kernel.*”);
接收消息
channel.basicConsume(queue, true, consumer);
Headers:发送者在发送的时候定义一些键值对,接收者也可以再绑定时候传入一些键值对,两者匹配的话,则对应的队列就可以收到消息。匹配有两种方式all和any。这两种方式是在接收端必须要用键值”x-mactch”来定义。all代表定义的多个键值对都要满足,而any则代码只要满足一个就可以了。
声明exchange
channel.exchangeDeclare(exchange,ExchangeTypes.HEADERS,false,true,null);
发布消息
Map headers = new Hashtable();
headers.put(“aaa”, “01234”);
Builder properties = new BasicProperties.Builder();
properties.headers(headers);
channel.basicPublish(exchange,”“,properties.build(),message.getBytes());
消费端绑定
channel.queueDeclare(queue,false, false, true,null);
Map headers = new Hashtable();
headers.put(“x-match”, “any”);//all any
headers.put(“aaa”, “01234”);
headers.put(“bbb”, “56789”);
channel.queueBind(queue, exchange,”“, headers);
接收消息
channel.basicConsume(QUEUE_NAME, true, consumer);
一个消息先有exchange通过绑定关系,判断要投递到哪个消费队列,根据exchange类型的投递的判断逻辑也不同。
转载于:https://www.cnblogs.com/telwanggs/p/7124648.html
(转)RabbitMQ学习之exchange总结相关推荐
- RabbitMQ学习系列二:.net 环境下 C#代码使用 RabbitMQ 消息队列
上一篇已经讲了Rabbitmq如何在Windows平台安装,不懂请移步:RabbitMQ学习系列一:windows下安装RabbitMQ服务 一.理论: .net环境下,C#代码调用RabbitMQ消 ...
- RabbitMQ学习总结 第一篇:理论篇
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
- RabbitMQ学习
RabbitMQ学习 1.概述 用于进程通信的中间件. 优势: 劣势: 1.应用解耦:提高了系统容错性和可维护性 1.系统依赖越多不能保证MQ的高可用 2.异步提速:提升用户体验和系统吞吐量 2.复杂 ...
- RabbitMQ 学习笔记
RabbitMQ 学习笔记 RabbitMQ 学习笔记 1. 中间件 1.1 什么是中间件 1.2 为什么要使用消息中间件 1.3 中间件特点 1.4 在项目中什么时候使用中间件技术 2. 中间件技术 ...
- Rabbitmq学习笔记(尚硅谷2021)
Rabbitmq学习笔记 (尚硅谷) 1.MQ 的概念 1.1 什么是 MQ? 1.2 为什么要用 MQ? 削峰 解耦 异步 1.3 MQ 的分类 ActiveMQ Kafka RocketMQ Ra ...
- 乐行学院RabbitMQ学习教程 第一章 RabbitMQ介绍(可供技术选型时使用)
乐行学院RabbitMQ学习教程 第一章 RabbitMQ介绍 RabbitMQ介绍 1.RabbitMQ技术简介 2.RabbitMQ其他扩展插件 2.1监控工具rabbitmq-managemen ...
- RabbitMQ学习笔记(高级篇)
RabbitMQ学习笔记(高级篇) 文章目录 RabbitMQ学习笔记(高级篇) RabbitMQ的高级特性 消息的可靠投递 生产者确认 -- confirm确认模式 生产者确认 -- return确 ...
- Rabbitmq学习笔记教程-尚硅谷
Rabbitmq学习笔记 (尚硅谷) 尚硅谷 rabbitmq 教程 1.MQ 的概念 1.1 什么是 MQ? 存放消息的队列,互联网架构中常见的一种服务与服务之间通信的方式. 1.2 为什么要用 M ...
- RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决)
RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决) 参考文章: (1)RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决) (2)https://www.cnblogs. ...
最新文章
- Curator counters
- 谈谈神秘的ES6——(一)初识ECMAScript
- 下来安成功 打开一直白屏_推广人透露:戈洛夫金2021年可能与安德拉德上演拳王统一战...
- c语言数据结构系统化,C语言数据结构+数据库+操作系统
- Python XML解析
- 设计模式的C语言应用-责任链模式-第三章
- kafka c语言实现源码,Spring-Kafka源代码解析(消费者)
- A Filter of Java URL Encoding: GetQueryStringEn...
- [排错] Status error 2850
- 如何能把 fastdfs-client-java的jar包安装到本地的仓库中
- 在Idea2017.1中编译时发生如下的错误
- Windows server 2012体验之活动目录回收站
- Qweb Pdf 中添加 图片
- 甲骨文终获Java编程语言版权
- 日历java代码_java 日历代码实现
- 微信小程序之倒计时插件 wxTimer
- DAS、NAS、SAN、ISCSI的区别
- 【CSS】1095- CSS filter 有哪些神奇用途
- VBox 虚拟机完美迁移/复制(带快照)
- CSS3炫酷发光文字 ,自定义色彩
热门文章
- Linux之内核调试sysrq
- (110)FPGA面试题-介绍Verilog块语句begin-end执行过程
- (13)Zynq DDR控制器介绍
- (45)FPGA面试技能提升篇(Hyperlink接口)
- Interlocked原子访问系列函数
- mapreduce分组统计_mongodb中使用mapreduce进行分组统计
- pb 保存变量文件名_【Tensorflow 2.0 正式版教程】模型的保存、加载与迁移
- ubuntu12.04中安装SVN记录
- [计算机系统] - 链接
- android 画面,Android 界面组成