1

我有一个似乎与丢失来自我的 heroku Web 服务的响应有关的竞争条件。

Heroku 路由器将请求传递给 Web 服务,Web 服务处理请求并返回响应,但在此期间,由于客户端(中断)或后端超时,heroku 路由器使请求失败。

问题是 Web 服务请求处理在后端更改了状态,并希望将状态更改发送到响应正文中的客户端。响应永远不会到达客户端,因此状态更改将永远丢失。

在我的情况下,状态变化恰好是从 RabbitMQ 消息队列中传递和删除消息。Web 服务请求处理程序从 RabbitMQ 队列中弹出请求,但它无法到达客户端并且再也没有听说过。

我可以实现自己的基于客户端的消息 ACK 系统来缓解这种情况。但是,我怀疑你们中的一些人可能有更好的解决方案来处理如何确保响应到达客户端。我可以在我的 Web 服务上使用任何回调来确定响应是否丢失?FWIW 我的 Web 服务是运行嵌入式 Jetty 的 JAX-RS 服务。

谢谢!

4

0 回答 0