Php rabbitMQ使用者中的RPC调用,如何侦听两个队列?

Php rabbitMQ使用者中的RPC调用,如何侦听两个队列?,php,rabbitmq,Php,Rabbitmq,我的rabbitMQ实现中似乎存在设计问题 我有一个消费者,它监听队列以执行需要实现多个子任务的作业。 一旦作业完全完成,我需要向通知队列发布一条消息,说明作业已完成 我当前的WIP倾向于让作业工人监听他的队列并将RPC消息发布给专业工人。 我希望他在所有人都完成之前,先倾听RPC响应,然后才能发布回通知队列 此实现中的问题是,我需要同时侦听作业队列(接收传入作业)和RPC队列(接收来自每个专门工作者的答复) 显然,这无法通过两个队列上的consume()方法实现 我的设计有缺陷吗?(我想是的)

我的rabbitMQ实现中似乎存在设计问题

我有一个消费者,它监听队列以执行需要实现多个子任务的作业。 一旦作业完全完成,我需要向通知队列发布一条消息,说明作业已完成

我当前的WIP倾向于让作业工人监听他的队列并将RPC消息发布给专业工人。 我希望他在所有人都完成之前,先倾听RPC响应,然后才能发布回通知队列

此实现中的问题是,我需要同时侦听作业队列(接收传入作业)和RPC队列(接收来自每个专门工作者的答复)

显然,这无法通过两个队列上的consume()方法实现

我的设计有缺陷吗?(我想是的)我如何以“良好设计”的方式实现这一点


谢谢

使用PHP扩展,这是不可能的。尝试改用PHP库。

我实际上考虑过使用getMessage()方法从作业队列中提取传入消息,并从回复队列中使用()方法,但这似乎真的是一个拙劣的技巧。感谢大家的提醒,但我们已经为其他类型的TAK使用PHP amqp扩展实现了rabbitMq,我不想让两个库在同一个应用程序中运行,也不想改变所有已经完成的工作。我的问题有“设计”解决方案吗?除了完全删除RPC逻辑之外?您可以始终使用second
consume()
获取响应,或者在一个周期内使用
basic.get
(在资源使用方面无效)。我想到了这一点(请参阅我对问题的评论),但基本上,由于我无法停止consume(),所以我将“锁定”即使没有更多的消息要侦听,工作进程也无法侦听rpc队列。在所有的邪恶中,我选择了看起来最少的,我在两个队列中都使用basic.get。我会把它送到测试台上,看看效果如何。感谢您的建议:)这仍然是一个有效的答案,因此,为您提供道具:)