codecamp

SpringCloud RabbitMQ Binder错误通道

从版本1.3开始,绑定程序无条件地将异常发送到每个使用者目标的错误通道,并且还可以配置为将异步生产者发送失败消息发送到错误通道。

RabbitMQ有两种类型的发送失败:

后者很少见。根据RabbitMQ文档,“只有在负责队列的Erlang进程中发生内部错误时,才会传递[nack]。”

除了启用生产者错误通道之外,RabbitMQ绑定程序仅在正确配置连接工厂的情况下,才将消息发送到通道,如下所示:

  • ccf.setPublisherConfirms(true);
  • ccf.setPublisherReturns(true);

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

  • spring.rabbitmq.publisher-confirms
  • spring.rabbitmq.publisher-returns

用于返回消息的ErrorMessage的有效负载是具有以下属性的ReturnedAmqpMessageException

  • failedMessage:发送失败的Spring消息Message<?>
  • amqpMessage:原始spring-amqp Message
  • replyCode:指示失败原因的整数值(例如312-无路由)。
  • replyText:指示失败原因的文本值(例如,NO_ROUTE)。
  • exchange:发布消息的交易所。
  • routingKey:发布消息时使用的路由密钥。

对于否定确认的确认,有效负载为NackedAmqpMessageException,具有以下属性:

  • failedMessage:发送失败Spring消息Message<?>
  • nackReason:原因(如果有,您可能需要检查代理日志以获取更多信息)。

没有对这些异常的自动处理(例如发送到死信队列)。您可以使用自己的Spring Integration流使用这些异常。


SpringCloud 整合在一起
SpringCloud 非分区目标
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

三、Spring Cloud Netflix

SpringCloud Hystrix超时和Ribbon客户

SpringCloud 重试失败的请求

五、Spring Cloud Stream

六、SpringCloud Binder实现

SpringCloud 重试RabbitMQ Binder

SpringCloud Dead-Letter队列处理

八、Spring Cloud Sleuth

SpringCloud 当前Span

十二、Spring Cloud for Cloud Foundry

十三、Spring Cloud Contract

Spring Cloud Contract验证程序设置

SrpingCloud Gradle项目

十五、Spring Cloud网关

Spring Cloud 配置路由谓词工厂和网关过滤工厂

Spring Cloud TLS / SSL

Spring Cloud网关配置

SpringCloud 故障排除

十八、Spring Cloud GCP

Spring Cloud GCP Spring资源

Spring Cloud Spring JDBC

Spring Cloud Redis的Cloud Memorystore

Spring Cloud 云身份识别代理(IAP)身份验证

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }