如果响应为空,RabbitMQ 将再次发送请求

RabbitMQ is sending the request again if response is null

我将 RabbitMq 与 masstransit 一起用于不同服务之间的消息传递,假设我们有以下场景:

第一个服务通过发送请求询问第二个服务的特定信息。

第二个服务在数据库中查找信息并使用包含找到的信息的对象进行响应。

如果数据库中没有可用信息,第二个服务将返回一个空对象。

问题是 RabbitMQ 正在考虑请求失败,因此它会再次发送请求。

我可以将总线配置为将空响应视为正常响应吗?

您不能使用空对象回复。您有两个选择:

  1. 在您的响应中添加一个布尔值 属性,表示它不成功
  2. 在请求消费者中抛出异常,然后将故障信息发送给请求客户端。