4.RabbitMQ实战 --- 解决Rabbit相关问题:编码与模式,RPC

4.2 发后即忘模型
	1.警告通知
	2.并行处理
	3.用 RabbitMQ 实现 RPC 并等待响应
RPC:
	使用rabbit来实现RPC时,你只是简单的发布消息而已。rabbitmq会负责使用绑定来路由消息到合适的队列。rpc服务器会从这些队列上消费消息。
  rabbitmq替你完成了所有工作:将消息路由到合适的地方,通过多台rpc服务器对rpc消息进行负载均衡,甚至当处理消息的服务器崩溃时,将rpc消息
  重发到另一台。

  私有队列和发送确认:
  	由于amqp消息是单向的,rpc服务器如何才能将结果返回给原始客户端呢?由于rabbit处于中间环节,rpc服务器甚至都不知道客户端调用者的身份(
  除非在消息内放入特定的id)。rabbit团队的方案:使用消息来发回应答。在每个amqp消息头中有个字段叫做 reply_to。消息的生产者可以通过该字段
  来确定队列的名称,并监听队列等待应答。然后接受消息的rpc服务器能够检测 reply_to 字段,并创建包含应答内容的新的消息,并以队列名称作为路由键。

    你也许会想'关每次创建唯一队列名就得花很多功夫吧'。我们怎么阻止其他客户端读到应答消息呢?如果你声明了没有名字的队列,rabbit会为你指定一个。
  这个名字恰好是唯一的队列名;同时在声明的时候指定 exclusive参数,确保只有你可以读取队列上的消息。所有的rpc客户端需要做的是声明临时的,排他的,
  匿名的队列,并将该队列名称包含到rpc消息的 reply_to 头中,于是服务器就知道应答消息发往哪儿了。值得注意的是我们并没有提到应答消息绑定到交换器上,
  这是因为rpc服务器将应答消息发到rabbit时没有指定交换器,rabbit就知道目的地是应答队列,路由键就是队列的名字。

4.1 解耦风雨路:谁将我们推向消息通信

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值