此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 spring-cloud-stream 4.1.4spring-doc.cn

错误通道

从版本 1.3 开始,Binder 无条件地将异常发送到每个 Consumer 目标的错误通道,并且还可以配置为将异步 producer send failures发送到 error 通道。 有关更多信息,请参阅“错误处理”。spring-doc.cn

RabbitMQ 有两种类型的发送失败:spring-doc.cn

后者很少见。 根据 RabbitMQ 文档,“[A nack] 只有在负责队列的 Erlang 进程中发生内部错误时才会交付。 如果发布到具有队列溢出行为的有界队列,则还可以获得否定确认。reject-publishspring-doc.cn

除了启用 producer 错误通道(如“错误处理”中所述)之外,RabbitMQ Binder 仅在连接工厂配置适当时才向通道发送消息,如下所示:spring-doc.cn

将 Spring Boot 配置用于连接工厂时,请设置以下属性:spring-doc.cn

的有效负载 for a 返回的消息是 a 具有以下属性:ErrorMessageReturnedAmqpMessageExceptionspring-doc.cn

  • failedMessage:发送失败的 spring-messaging。Message<?>spring-doc.cn

  • amqpMessage:原始 spring-amqp 。Messagespring-doc.cn

  • replyCode:一个整数值,指示失败的原因(例如,312 - 无路由)。spring-doc.cn

  • replyText:指示失败原因的文本值(例如,)。NO_ROUTEspring-doc.cn

  • exchange:消息发布到的 Exchange。spring-doc.cn

  • routingKey:发布消息时使用的路由密钥。spring-doc.cn

另请参阅 Publisher Confirms 以获取接收返回消息的替代机制。spring-doc.cn

对于否定确认的确认,有效负载是具有以下属性的 a:NackedAmqpMessageExceptionspring-doc.cn

  • failedMessage:发送失败的 spring-messaging。Message<?>spring-doc.cn

  • nackReason:原因(如果可用 — 您可能需要检查代理日志以了解更多信息)。spring-doc.cn

不会自动处理这些异常(例如发送到死信队列)。 您可以在自己的 Spring 集成流中使用这些异常。spring-doc.cn