(转)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类型的投递的判断逻辑也不同。 
(转)RabbitMQ学习之exchange总结的更多相关文章
- RabbitMQ学习系列(四): 几种Exchange 模式
上一篇,讲了RabbitMQ的具体用法,可以看看这篇文章:RabbitMQ学习系列(三): C# 如何使用 RabbitMQ.今天说些理论的东西,Exchange 的几种模式. AMQP协议中的核心思 ...
- RabbitMQ学习总结 第六篇:Topic类型的exchange
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
- RabbitMQ学习之:(六)Direct Exchange (转贴+我的评论)
From: http://lostechies.com/derekgreer/2012/04/02/rabbitmq-for-windows-direct-exchanges/ RabbitMQ fo ...
- RabbitMQ学习之:(五)Exchange Type (转贴+我的评论)
From: http://lostechies.com/derekgreer/2012/03/28/rabbitmq-for-windows-exchange-types/ RabbitMQ for ...
- RabbitMQ学习系列(三): C# 如何使用 RabbitMQ
上一篇已经讲了Rabbitmq如何在Windows平台安装,还不了解如何安装的朋友,请看我前面几篇文章:RabbitMQ学习系列一:windows下安装RabbitMQ服务 , 今天就来聊聊 C# 实 ...
- RabbitMQ学习总结 第三篇:工作队列Work Queue
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
- RabbitMQ学习总结 第一篇:理论篇
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
- RabbitMQ学习总结 第二篇:快速入门HelloWorld
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
- RabbitMQ学习总结 第四篇:发布/订阅 Publish/Subscribe
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
随机推荐
- HTTP 下载文件中文文件名在 Firefox 下乱码问题
转自:http://www.imhdr.com/991/ HTTP 下载文件,中文文件名在 Firefox 下乱码问题 最近帮助一同事解决 HTTP 下载文件时,中文文件名在 Firefox 下乱码的 ...
- CentOS平滑更新nginx版本
目前使用的nginx版本是1.4.4,平滑升级到nginx1.10.1,具体升级操作流程如下: 1.备份当前使用的nginx程序目录 tar -zcvf ./nginx1.4.4bak.tar.gz ...
- Linux 中, 安装html转pdf工具:wkhtmltopdf
wkhtmltopdf下载地址官网:https://wkhtmltopdf.org/downloads.html 进入到/opt文件夹下面,新建文件夹wkhtmltopdf,然后把下载好的wkhtml ...
- javascript/jquery获取地址栏url参数的方法
1.jquery获取url window.location.href; 2.通过javascript是如何获取url中的某个参数 function getUrlParam(name) { var re ...
- 1.Eclipse创建普通java工程
1.创建java工程 2.输入java 工程名 3.编写类
- c# 数组 字符串 C#中判断字符串中包含某个字符
string str = "1,2,3,4,5,6,7"; string[] strArray = str.Split(','); //字符串转数组 ...
- 【ACM】bailian_2703_骑车与走路_201307301543
2703:骑车与走路总时间限制: 1000ms 内存限制: 65536kB 描述 在北大校园里,没有自行车,上课办事会很不方便.但实际上,并非去办任何事情都是骑车快,因为骑车总要找车.开锁.停车.锁车 ...
- 获取Class对象方式
在java中,每个class都有一个相应的Class对象,当编写好一个类,编译完成后,在生成的.class文件中,就产生一个Class对象,用来表示这个类的类型信息.获得Class实例的三种方式: 1 ...
- oracle regexp_like介绍和例子
oracle regexp_like介绍和例子 学习了:http://www.cnblogs.com/einyboy/archive/2012/08/01/2617606.html ORACLE中的支 ...
- 支付宝又惹怒Windows Phone用户了
支付宝,重新.把WP用户惹怒了. 事情是酱紫的,苹果公布Apple Watch之后.支付宝钱包第一时间在微博上表示:"已经完毕适配Apple Watch版本号的开发工作,中国用户在订购App ...