(转)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学习总结 ...
随机推荐
- vue.js层叠轮播
最近写公司项目有涉及到轮播banner,一般的ui框架无法满足产品需求:所以自己写了一个层叠式轮播组件:现在分享给大家: 主要技术栈是vue.js ;javascript;jquery:确定实现思路因 ...
- Springmvc中ajax与jason应用
Springmvc中ajax与jason应用 相关依赖包 json数据转换的jar包 jackson-annotations-2.5.4 jackson-core-2.5.4 jackson-data ...
- Python语言数据结构和语言结构(2)
目录 1. Python预备基础 2. Python数据类型 3. Python条件语句 4. while循环和for循环 1. Python预备基础 1.1 变量的命名 变量命名规则主要有以下几 ...
- win7 VMware下安装centos和Ubuntu共存
最近在空闲时间学习Linux环境中各种服务的安装与配置,都属于入门级别的,这里把所有的学习过程记录下来,和大家一起分享. 我的电脑系统是win7,所以我需要在win7上安装一个虚拟机-VMware ...
- 【ACM】hdu_2115_I Love This Game_201308021517
I Love This GameTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- [python]win32api
安装完pywin32以后一定要重启啊!!!!!!!!!!!!
- Android入门:短信和拨打电话
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...
- Notepad++ 设置执行 lua 和 python
Notepad++ 设置执行 lua 和 python 一.设置 run -> 设置 cmd /k lua "$(FULL_CURRENT_PATH)" & PAUS ...
- HDU 2255 奔小康赚大钱 KM算法题解
KM算法求的是完备匹配下的最大权匹配,是Hungary算法的进一步,由于Hungary算法是最大匹配的算法,不带权. 经典算法,想不出来的了,要參考别人的.然后消化吸收吧. 由于真的非常复杂的算法. ...
- map-reduce入门
map-reduce入门 近期在改写mahout源代码,感觉自己map-reduce功力不够深厚,因此打算系统学习一下. map-reduce事实上是一种编程范式,从统计词频(wordCount)程序 ...