2016-11-10 78 views
1

我正在设计一个系统,该应用程序之间将使用RabbitMQ来请求/响应。RabbitMQ请求/响应有效负载结构

我习惯于使用REST API并来自该背景我一直在思考如何在请求/响应时构造消息。

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

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

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

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

但是,这让我想到我可能会认为这太像REST API,并且可能有一些更好,更确定的方式来做到这一点。

我一直在阅读“RabbitMQ in Action”这本书,但是在这里我没有提到这一点。我的google-fu也失败了,并没有提供任何结果。

任何有经验的人都愿意分享他们如何构建他们的信息?

回答

2

如果您在请求/响应的场景,已经熟悉或实现为处理REST调用应用程序中使用RabbitMQ的,没有必要让你偏离它在的RabbitMQ的消息格式。

从你的问题,我收集到的是,RabbitMQ充当你的应用程序之间的中间服务器。你提到了三种情况。如果您检索数据并写入数据,这里RabbitMQ仅充当请求检索或写入数据的应用程序与检索和写入数据的应用程序之间的路由器。如果是这样的话,那么服务应用程序(带有数据的服务器)可能已经支持一种标准的消息格式。假定它还没有定义标准。在这种情况下,您可以根据应用程序在请求负载中的期望来进行思考。在这个阶段忘掉中间的RabbitMQ服务器。考虑RabbitMQ消息可能会使您无法使用最佳做法。

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

相关问题