rabbitmq-rpc

转自:http://backend.blog.163.com/blog/static/2022941262014315104836716/

在发送消息的时候也能够带上一些属性,以支持类似rpc的功能。在rabbitmq文档例子里,实现rpc功能实际上就是client发送带属性的消息,属性中包含回调tmp_queue名和用于标示该消息的correlationId。server端收到消息后从属性中取得tmp_queue,将处理的结果放在该queue中,并将拿到的correlationId作为结果消息的属性一并发送。client端有个while循环一直阻塞并获取tmp_queue消息,直到拿到响应消息并匹配correlationId一致后退出循环,表示拿到了rpc的响应。采用此方式实现rpc的好处是一旦一个server太慢,可以简单的启动一个新的server去读取queue并响应即可。
//创建消息属性(replayTo属性常用于指定回调queue,correlationId属性常用于指定在大量回调queue中的消息哪个是属于该发送消息的回复。在rabbitmq中这些属性没有特殊作用)
BasicProperties props = new BasicProperties().builder().correlationId("id1").replyTo("temp_queue").build();
//发送时带上消息属性(AMQP协议有14种属性之多,但是实际上很少有用)
channel.basicPublish("", QUEUE_NAME, props, message.getBytes());
 
//接收消息时获取属性:
QueueingConsumer.Delivery delivery = consumer.nextDelivery();
BasicProperties props = delivery.getProperties();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值