【问题标题】:RabbitMQ Request/Response payload structureRabbitMQ 请求/响应负载结构
【发布时间】:2016-11-16 13:15:01
【问题描述】:

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

我习惯于使用 REST API,并且在此背景下,我一直在思考如何在进行请求/响应时构造消息。

我需要对其进行结构化以处理几种情况:

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

我打算将负载 JSON 格式化。我正在考虑使用某种类似于 HTTP 的响应代码(也许使用相同的代码?)并将响应代码设置为消息的属性/标题。

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

但这让我想到我可能认为这太像 REST API 并且可能有一些更好、更成熟的方法来做到这一点。

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

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

【问题讨论】:

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


    【解决方案1】:

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

    根据您的问题,我了解到 RabbitMQ 在您的应用程序之间充当中间服务器。你提到了三种情况。如果你拿取数据和写数据来说,这里的RabbitMQ只是充当请求取数据或写数据的应用程序和取数据和写数据的应用程序之间的一个路由器。如果是这样,那么已经有服务应用程序(带有数据的服务器)可以支持的标准消息格式。假设它还没有定义标准。在这种情况下,您可以根据应用程序对请求有效负载的期望进行思考。在这个阶段忘记中间的 RabbitMQ 服务器。考虑 RabbitMQ 消息可能会使您偏离最佳实践。

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

    【讨论】:

      猜你喜欢
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-15
      • 1970-01-01
      • 2017-08-07
      • 2017-05-26
      相关资源
      最近更新 更多