最终消息上的RabbitMQ RPC关闭响应队列

时间:2016-03-17 04:53:58

标签: rabbitmq

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

我可以通过在消息或消息头中放置一些字段来手动实现此模式,但是有一种最佳实现方法来实现这一点,可能是指定的头字段用于发送最后一条消息吗?

1 个答案:

答案 0 :(得分:0)

  

当收到最后一条消息时,客户端应该销毁响应队列。

我的第一反应是,"为什么?"

通常的做法是让客户端应用程序打开"回复"客户端连接时排队,并在客户端连接时保持打开状态,并将其重新用于所有回复。正如pinepain建议的那样,使用自动删除会在客户端断开连接时删除队列。

  

我可以通过在消息或消息头中放置一些字段来手动实现此模式,但是有一种最佳实现方法来实现这一点,可能是指定的头字段用于发送最后一条消息吗?

除了你所建议的以外,这里没有真正的最佳做法。但是,RabbitMQ消息中没有特定字段。

您可以将任何标题添加到邮件中,并使用该标题作为标记来表示此请求的回复已完成。或者,您可以使用邮件正文来包含状态。

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