【问题标题】:RPC call in rabbitMQ consumer, how to listen to both queues?rabbitMQ消费者中的RPC调用,如何监听两个队列?
【发布时间】:2014-02-21 10:15:31
【问题描述】:

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

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

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

这个实现的问题是我需要同时监听作业队列(接收传入的作业)和 RPC 队列(以便接收来自每个专业工作者的回复)。

显然这不能通过两个队列上的consume()方法来实现。

我的设计有缺陷吗? (我想是的)我怎样才能以“好的设计”的方式实现它?

谢谢

【问题讨论】:

  • 我实际上想过使用 getMessage() 方法从作业队列中提取传入消息并从回复队列中提取消息,但这看起来真的很糟糕。

标签: php rabbitmq


【解决方案1】:

使用php-amqp PHP 扩展是不可能的。尝试改用php-amqplib PHP 库。

【讨论】:

  • 感谢您的提醒,但我们已经使用 php-amqp 扩展为其他类型的任务实现了 rabbitMq,我不想让两个库在同一个应用程序中运行,或者有改变所有已经完成的工作。我的问题有“设计”解决方案吗?除了完全删除 RPC 逻辑?
  • 您可以随时使用第二个consume()来获得响应,或者在一个循环中使用basic.get(在资源使用方面无效)。
  • 我想到了这一点(请参阅我对问题的评论)但基本上,由于我无法停止消费(),我将“锁定”工作人员以收听 rpc 队列,即使在那里是没有更多的消息要听。在所有邪恶中,我选择了似乎最少的东西,我在两个队列上都使用了 basic.get。我会把它发送到测试台,看看情况如何。感谢您的建议:)
  • 这仍然是一个有效的答案,所以支持你:)
猜你喜欢
  • 1970-01-01
  • 2021-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多