RabbitMQ RPC 对最终消息的关闭响应 queue

RabbitMQ RPC close response queue on final message

我正计划使用 RabbitMQ 实现 RPC 模式。 客户端将发送消息以请求来自服务器的数据快照。 服务器将通过响应 queue 将许多包含快照数据的消息发送回客户端。 收到最后一条消息后,客户端应销毁响应 queue.

我可以通过在消息或消息 header 中放置一些字段来手动实现此模式,但是是否有实现此操作的最佳实践方法,也许是一个指定的 header 字段用于向最后一条消息?

When the last message has been received, the client should destroy the response queue.

我的第一反应是"why?"

通常的做法是让客户端应用程序在客户端连接时打开 "reply" queue,只要客户端连接就保持打开状态,re-using所有回复。正如 pinepain 所建议的那样,使用 auto-delete 会在客户端断开连接时删除 queue。

I can implement this pattern manually by placing some field in the message or message headers, but is there a best practice way of implementing this, perhaps a designated header field for signalling the last message?

除了您的建议之外,这里没有真正的最佳实践。不过,RabbitMQ 消息中没有为此指定的特定字段。

您可以在消息中添加您想要的任何 header,并使用 header 作为标志来表明此请求的回复已完成。或者,您可以只使用消息 body 来包含状态。

其中任何一个(可能还有更多选项)都可以正常工作。