【发布时间】:2020-12-07 06:09:48
【问题描述】:
是否可以使用 RabbitMQ 调度消息并在满足某些条件时删除消息(计划处理的消息)? 我们有一个要求,我们需要调用外部服务来获取一些数据。调用是异步的。客户端调用服务器的 API 端点,提及它需要的数据。服务器只是响应它已收到来自客户端的请求的确认。在内部,服务器也开始处理客户端请求,它会调用客户端 API 端点,并使用对有时从客户端返回的查询的实际响应。
在客户端需要等待从服务器获得响应之前,有一个时间限制(30 秒)。如果客户端在 30 秒内收到响应,那么它将继续执行。即使客户端在 30 秒内没有收到服务器的响应,也会继续执行其他步骤。
在客户端和服务器之间每秒发生数千个独立的事务(请求和响应)。客户端如何使用 RabbitMQ 以最有效的方式跟踪收到的请求和响应。 RabbitMQ 插件 rabbitmq_delayed_message_exchange 是否可以用于这种情况,在这种情况下,客户端将在队列中推送新消息以及 x-delay 标头(30 秒)?如果客户端在 30 秒之前收到来自服务器的响应,如何从队列中删除预定消息?
【问题讨论】:
-
你控制客户端和服务器吗?
-
服务器是一个外部服务,它会在一段时间后响应客户端的请求。服务器不受控制。只有发起请求并接受服务器响应的客户端在我们的控制范围内。
标签: rabbitmq message-queue rabbitmq-exchange