AMQP消息转发模型

48 篇文章 11 订阅
把AMQP Server暂时仍然当做一个黑盒子,如下图所示:
图中,P1发送的消息,经过AMQP Server转发以后,达到Cn,Pn发送的消息,经过AMQP Server转发以后,达到C1.在这个消息转发过程中,起关键的“路由标识”作用的是一个字符串Routing Key。
P1发送消息时会带上一个Routing Key rk_abc,而Cn也已经(提前)告知了AMQP Server,它希望接收消息的Routing Key是rk_abc。这样,当AMQP Server收到P1发送过来的消息(Routing Key=”abc”)时,就会转发给Cn。
同理,Pn发送的消息(Routing Key=“rk_xyz”)也会被转发给C1(期望接收的消息的Routing Key=“rk_xyz”)。
如果我们把AMQP Server打开,那么它的转发模型如下所示:
Producer发送消息到Exchange,Exchange根据一定的规则转发到相应的Message Queue,然后Queue通知绑定到它的Consumer。Exchange转发消息给Message Queue的规则就是依据Routing Key进行匹配。这种匹配模式分三种类型:
一Direct Exchanges
该类型模型如下图
Producer的消息只会发送到Message Queue_2,也就是说只有Consumer_2才能收到消息。这是由于Direct Exchanges类型的特征决定的:
1 Routing Key是一个字符串;
2 匹配规则是全值匹配。
也就是说,Message Queue绑定的Routing key与Producer发送的Routing Key完全相等,Exchange才会将消息转发给Message Queue。
二 Topic Exchanges
该类型模型如下图
有两个特征:
1 Routing Key是一个字符串,但是是由“.”分割为一个一个字符串;
2 匹配规则是模式匹配。
所谓模式匹配,是有两个通配符,一个是“*”,一个是“#”。“*”代表任意一个字符串,“#”代表任意多个字符串。
Producer发送的Routing Key是一个完整的字符串,没有通配符,Message Queue绑定的Routing Key可以有通配符。
图中,Message Queue_1绑定的Routing Key是“*.*.fast”,这个是与Producer发送的Routing Key ”first.green.fast”匹配的,所以,Exchange会把消息发送给Message Queue_1。同理,Message Queue_2和Message Queue_3也会接受到该消息。也就是说Message Queue_1、Message Queue_2和Message Queue_3都会收到Producer发送的消息。
三 Fanout Exchanges
该类型模型如下图
Fanout Exchanges就是俗称的“广播”,有两个特征。
1 没有Routing Key。
2 所有绑定到Fanout Exchanges Message Queue都能收到相应的Producer发送的消息。
图中,Producer发送的消息,3个Consumer都会收到。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值