Data structures RabbitMQ请求/响应负载结构

Data structures RabbitMQ请求/响应负载结构,data-structures,request,rabbitmq,response,message-queue,Data Structures,Request,Rabbitmq,Response,Message Queue,我正在设计一个系统,它将使用RabbitMQ在应用程序之间进行请求/响应 我已经习惯于使用RESTAPI,在这种背景下,我一直在思考在执行请求/响应时如何构造消息 我需要构建它来处理几个场景: 从远程服务器获取/查询数据 在远程服务器上创建数据 处理客户端错误 我计划将有效负载格式化为JSON。我正在考虑使用类似于HTTP的响应代码(可能使用相同的代码?),并将响应代码设置为消息的属性/头 对于获取/查询,我的想法是在负载对象中有一个查询属性 但这让我想到,我可能认为这太像RESTAPI了,

我正在设计一个系统,它将使用RabbitMQ在应用程序之间进行请求/响应

我已经习惯于使用RESTAPI,在这种背景下,我一直在思考在执行请求/响应时如何构造消息

我需要构建它来处理几个场景:

  • 从远程服务器获取/查询数据
  • 在远程服务器上创建数据
  • 处理客户端错误
我计划将有效负载格式化为JSON。我正在考虑使用类似于HTTP的响应代码(可能使用相同的代码?),并将响应代码设置为消息的属性/头

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

但这让我想到,我可能认为这太像RESTAPI了,可能有更好、更成熟的方法来实现这一点

我一直在读《RabbitMQ在行动》这本书,但我看不到有人提到这一点。我的google fu也让我失望,没有提供任何结果


任何有经验的人都愿意分享他们的消息结构吗?

如果您在已经熟悉或实现用于处理REST调用的应用程序之间的请求/响应场景中使用RabbitMQ,则您无需在RabbitMQ中偏离消息格式

从您的问题中,我得出的结论是RabbitMQ充当应用程序之间的中间服务器。你提到了三种情况。如果您使用检索数据和写入数据,那么RabbitMQ在这里仅充当请求检索或写入数据的应用程序与检索和写入数据的应用程序之间的路由器。如果是这样,那么服务应用程序(包含数据的服务器)可能已经支持一种标准消息格式。假设尚未定义标准。在这种情况下,您可以根据应用程序对请求负载的期望来考虑。在此阶段,请忽略中间RabbitMQ服务器。考虑RabbitMQ消息可能会偏离最佳实践

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