首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >兔Correlation_id

兔Correlation_id
EN

Stack Overflow用户
提问于 2017-05-01 20:43:53
回答 1查看 1.5K关注 0票数 1

我看了一段代码,它在默认交换中使用callback_queue和correlation_id。但是,当我试图将其更改为用户定义的exchange时,不会在队列中得到任何回复。为了测试它,我尝试了https://www.rabbitmq.com/tutorials/tutorial-six-python.html中的这个非常简单的例子,我发现如果我使用的不是默认的exchange,我就得不到任何答复。如果我还需要做什么请告诉我。谢谢

代码语言:javascript
复制
   ../rabbitmq $ ./rpc_client.py 1
    (' [x] Requesting fib%s', '1')
     [.] Got 1

    ../rabbitmq $ ./rpc_client.py 19
    (' [x] Requesting fib%s', '19')


    .../rabbitmq $ ./rpc_server.py
 [x] Awaiting RPC requests
 [.] fib(1)
 [.] fib(19)

如果我在脚本中将exchange =‘exchange=’test‘更改为exchange='test'(test是我创建的exchange),我注意到使用者只是我使用默认的sits..If,我得到一个回复。

代码语言:javascript
复制
../rabbitmq $ ./rpc_server.py   
 [x] Awaiting RPC requests

../rabbitmq $ ./rpc_client.py 1 
(' [x] Requesting fib%s', '1')

我还看了RPC模型中的correlationId和临时队列

example.py

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-03 04:28:45

如果使用自定义交换,则需要向队列添加绑定。这既适用于rpc_queue,也适用于应答队列(例如amq.gen-xxx)。

在来自rpc_client.pyRabbitMQ示例中,在result.method.queue之后添加queue_bind

代码语言:javascript
复制
self.channel.queue_bind(self.callback_queue, 'test', self.callback_queue)

rpc_server.py示例中,在queue_declare之后添加queue_bind

代码语言:javascript
复制
channel.queue_bind('rpc_queue', 'test', 'rpc_queue')

您需要添加绑定的原因是您没有使用默认的exchange。默认exchange自动绑定到所有队列,因此不需要添加上述绑定才能工作。您可以阅读更多关于默认exchange 这里的信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43726252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档