RabbitMQ请求/响应有效负载结构

时间:2016-11-10 16:34:53

标签: data-structures request rabbitmq response message-queue

我正在设计一个系统,它将RabbitMQ用于应用程序之间的请求/响应。

我过去常常使用REST API并且从那个背景开始,我一直在考虑如何在做请求/响应时构造消息。

我需要构建它来处理几种情况:

  • 从远程服务器获取/查询数据
  • 在远程服务器上创建数据
  • 处理客户端错误

我计划将有效负载JSON格式化。我正在考虑使用类似于HTTP的某种响应代码(可能使用相同的代码?)并将响应代码设置为消息上的属性/标题。

获取/查询我的想法是在有效负载对象中有一个查询属性。

但这让我觉得我可能认为这太像REST API了,可能会有一些更好,更成熟的方法。

我一直在读这本书" RabbitMQ in Action"虽然设置了这个,但我没有在那里提到这一点。我的谷歌也失败了,没有提供任何结果。

有经验的人愿意分享他们如何构建他们的消息吗?

1 个答案:

答案 0 :(得分:3)

如果您在已经熟悉或实现处理REST调用的应用程序中的请求/响应方案中使用RabbitMQ,则无需在RabbitMQ中将其与消息格式区分开来。

从您的问题来看,我收集的是RabbitMQ充当您的应用程序之间的中间服务器。你提到三个场景。如果您检索数据和写入数据,这里RabbitMQ仅作为请求检索或写入数据的应用程序与检索和写入数据的应用程序之间的路由器。如果是这样,那么已经存在一种标准的消息格式,即服务应用程序(具有数据的服务器)可以支持。假设它还没有定义标准。在这种情况下,您可以根据应用程序在请求有效负载中的期望来考虑。在此阶段忘记中间RabbitMQ服务器。考虑RabbitMQ消息可能会使您偏离使用最佳实践。

对于客户端错误,您不能直接将HTTP状态代码设置为标头,因为它会干扰使用者中的RabbitMQ错误。我相信,在这种情况下,您将不得不通过传递自定义标头并稍后将其转换为HTTP状态代码来使用自定义。

相关问题