我有一个发布者(使用RabbitMQ .NET客户端)和多个消费者(使用Pika Python模块)。他们使用单个主题交换,消费者有不同的队列。我想实现分布式RPC样式调用,这需要我在继续或超时之前等待回复(JSON)。
当我发布我的消息时,我需要等待并获得收到我的消息的“所有”客户的回复。 (可能是发布者方面的单个消费者。)我使用路由密钥发布我的消息,所以我不知道有多少消费者在发布之前正在监听,但我仍然需要等待任意数量的客户端。
这是为了通知用户我们正在处理他们的请求,并提供他们的请求是否已完全履行的反馈。
有没有办法用RabbitMQ实现这个目标?我不想使用Broker的特定RESTful API来获取消费者名称/消费者数量并等待循环。
答案 0 :(得分:0)
显然,仅使用AMQP无法执行此任务。我不得不使用RabbitMQ的API。
向以下地址发出GET请求:http://rabbitmq_hostname:15672/api/exchanges/%2F/worker/bindings/source
返回vhost /中交换“worker”的每个使用者。 (编码为%2F)
使用单独的队列计算消费者的数量很简单:
jsonResponse.Where(o => o["destination_type"] == "queue").Count();
如果我向主题交换发送消息,我知道应该期待多少回复。