RabbitMQ(四) ——路由

RabbitMQ(四)——路由

(原创内容,转载请注明来源,谢谢)

一、概述

路由模式(routing)是交换机不将消息广播到全部的队列中,而是采用交换机的另一种模式——direct。该模式下,交换机会精准的将消息发送到某个与其绑定的队列,而不是发送给全部队列。

如果没有队列绑定交换机,消息会丢失。

路由模式如下图所示:

二、绑定方式(binding)

在交换机的fanout模式下,不需要routing key,但是在此模式下,由于交换机需要精准的将消息发送给某个(某些)队列,则需要队列与交换机进行绑定。

绑定方式如下:

$routing_key ='black';
$channel->queue_bind($queue_name,$exchange_name, $routing_key);

这样绑定后,当生产者指定的routingkey是‘black’,则交换机会将其转发到上述的队列中。

三、多重绑定(multiple bindings)

当交换机的direct模式下,允许一个队列绑定多个routing key,也运行交换机将消息发给多个收听同样routing key的队列。此时,如果每个队列监听的消息是一致的,而生产者发送给交换机的routing key也是这个值,则此模式下的direct模式和fanout模式是一样的,即交换机会把消息转发给所有的队列。

四、发送与接收消息

1、定义交换机

要发送消息,首先定义交换机的时候,需要将其模式定义为direct:

$channel->exchange_declare('direct_logs','direct', false, false, false);

2、发送消息

$severity = ‘test’;
$channel->exchange_declare('direct_logs','direct', false, false, false);
$channel->basic_publish($msg,'direct_logs', $severity);
上述的$severity即routing key。

3、消费者

$severity = ‘test’;
$channel->queue_bind($queue_name,'direct_logs', $severity);

——written by linhxx 2017.08.22

原文发布于微信公众号 - 决胜机器学习(phpthinker)

原文发表时间:2017-08-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Ken的杂谈

Cookie的特点和使用经验/建议总结

Cookie就是以Key,Value的形式存储在浏览器端的数据。 https://baike.baidu.com/item/cookie/1119

842
来自专栏非著名程序员

Android Volley核心源码解析

? 闲聊Volley Volley下载 Volley.jar及源码下载:http://download.csdn.net/detail/qq_172500...

1848
来自专栏java思维导图

http超文本协议,让http不再难懂(二)

一张导图 ? 导图内容解析 http请求 请求行+请求头(多个key-value对象)+一个空行+实体内容 请求行 请求方法 常见方法:get post he...

2915
来自专栏云计算教程系列

如何在Nginx配置Gzip

网站加载的速度取决于浏览器必须下载的所有文件的大小。减少要传输的文件的大小可以使网站不仅加载更快,而且对于那些宽带是按量计费的人来说也更友好。

1784
来自专栏马涛涛的专栏

以登录注册理解Cookie的作用过程

在登录成功的一瞬间,需要后台设置一个Cookie,记录一下登陆的用户id(这里用邮箱表示,代码在上面),然后发响应给浏览器 例如在服务器端设置响应头:set-c...

904
来自专栏AndroidTv

讲讲断点续传那点儿事提问理论基础代码示例

这次想来讲讲断点续传,以前没相关需求,所以一直没去接触,近阶段了解了之后,其实并不复杂,那么也便来写一篇记录一下,分享给大伙,也方便自己后续查阅。

642
来自专栏乐沙弥的世界

基于CentOS 7配置Nginx正向代理

Nginx是一款以轻量级、低内存开销、支持缓存、支持反向代理,负载均衡,电子邮件服务而著称。对于鲜为人知的是,它还可以作为一个简单易用的正向代理服务器。本文简要...

1275
来自专栏技术支持log

GET 和 POST 请求 http 站点时数据是否加密?

GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

580
来自专栏一个默默无闻的工程师的日常

openstack tenant指定availability-zone启动虚拟机报错

1033
来自专栏编码前线

HTTP协议简介

882

扫码关注云+社区