whi*_*rue 3 rpc stomp rabbitmq
我正在尝试使用RabbitMQ的STOMP适配器执行RPC.作为客户端库我正在使用STOMP over WebSocket(https://github.com/jmesnil/stomp-websocket/)库.
从文档(http://www.rabbitmq.com/stomp.html#d.tqd)我看到我必须设置回复标题.我通过指定类似"reply-to:/ temp-queue/foo"的方式完成了这一点,我在服务器端客户端(node-amqp)中看到replyTo标头设置正确(例如:replyTo:'/ reply -queue/amq.gen-w2jykNGp4DNDBADm3C4Cdx').仍然在我的服务器端客户端,我可以通过向"/reply-queue/amq.gen-w2jykNGp4DNDBADm3C4Cdx"发布消息来回复该消息.
但是,如何在启动RPC调用的客户端代码中获得此回复?文档声明"SEND和SUBSCRIBE帧不得包含/ temp-queue destination(...)自动创建对回复队列的订阅."
那么,我如何订阅回复队列?如何获得RPC调用的结果?
提前致谢.
答案是:
当您在服务器工作程序中收到rpc调用时,您将获得标题replyTo.标题如下:
replyTo: '/reply-queue/[queue_name]'
Run Code Online (Sandbox Code Playgroud)
例如: replyTo:'/reply-queue/amqp.fe43gggr5g54g54ggfd_'
诀窍是:
amqp.fe43gggr5g54g54ggfd_]nodejs中的答案示例:
function onRpcReceived(message, headers, deliveryInfo, m) {
var reply_to = m.replyTo.toString().substr(13, m.replyTo.toString().length);
connection.publish(reply_to, {response:"OK", reply:"The time is 13h35m"}, {
contentType:'application/json',
contentEncoding:'utf-8',
correlationId:m. correlationId
});
}
Run Code Online (Sandbox Code Playgroud)
现在我只想知道为什么web-stomp-plugin将/ reply-queue/string添加到标题上的"replyTo"属性而不是只添加队列名.... 如果有人知道我想知道的原因.
| 归档时间: |
|
| 查看次数: |
2241 次 |
| 最近记录: |