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 条评论
登录 后参与评论

相关文章

来自专栏王亚昌的专栏

开多少个FCGI进程才合适

    现在网站很多都用FCGI布署到WEB SERVER上提供服务,但同一个服务的FCGI开多少个进程才合适呢?

851
来自专栏黑白安全

什么是ARP欺骗?

ARP欺骗是一种恶意行为者通过局域网发送伪造的ARP(地址解析协议)消息的攻击类型。这会导致将攻击者的MAC地址与网络上的合法计算机或服务器的IP地址链接起来。...

2361
来自专栏张善友的专栏

cas原理介绍

CAS用来标志用户的token是存在它自己的域名下的,不是存在web应用的域名下的.CAS判断用户登录由agent决定,agent验证用户信息有两种处理. ...

4629
来自专栏专注研发

SSH免密码登录配置

ssh免密码登录Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 的解决方案

1.1K3
来自专栏向治洪

maven配置详解

什么是pom?     pom作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺...

2565
来自专栏Java学习123

如何修改tomcat的默认端口号

3226
来自专栏图像识别与深度学习

Android多线程消息处理机制

2025
来自专栏mathor

网络协议详解

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送消息时将包含目标I...

2453
来自专栏后端技术探索

Nginx防止大图片占满带宽

修改nginx配置文件中图片访问的配置部分 对于正常小图的访问不限制,把正常图的大小限定为 100K 以内,超出时就进行限速,速度限定为最大 100k/s

1062
来自专栏PHP在线

小哥哥,小姐姐,我有一份tcp、http面试指南你要吗?

要说http就绕不开tcp,TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。但是,http是基于tcp协议的。

1274

扫码关注云+社区

领取腾讯云代金券