1

我有一个发布者(使用 RabbitMQ .NET 客户端)和多个消费者(使用 Pika Python 模块)。他们使用单个主题交换,消费者有单独的队列。我想实现分布式 RPC 风格的调用,这需要我在继续或超时之前等待回复 (JSON)。

当我发布我的消息时,我需要等待并从收到我消息的“所有”客户那里得到回复。(可能是发布者端的单个消费者。)我使用路由键发布消息,所以我不知道在发布之前有多少消费者在收听,但我仍然需要等待任意数量的客户端。

这是为了通知用户我们正在处理他们的请求,并就他们的请求是否已完全满足提供反馈。

有没有办法用 RabbitMQ 实现这一点?我不想使用 Broker 的特定 RESTful API 来获取消费者名称/消费者数量并等待循环。

4

1 回答 1

0

显然,仅使用 AMQP 无法完成此任务。我不得不使用 RabbitMQ 的 API。

向以下地址发出 GET 请求:http://rabbitmq_hostname:15672/api/exchanges/%2F/worker/bindings/source返回虚拟主机 / 中交换“工人”的每个消费者。(编码为 %2F)

使用单独的队列获取消费者的数量很简单:

jsonResponse.Where(o => o["destination_type"] == "queue").Count();

如果我向主题交换发送消息,我会知道我应该期待多少响应。

于 2014-02-15T16:10:29.280 回答