Spring integration 自动将错误从errorChannel发布到特定目标

Spring integration 自动将错误从errorChannel发布到特定目标,spring-integration,spring-cloud-stream,spring-rabbit,Spring Integration,Spring Cloud Stream,Spring Rabbit,也就是说,可以将错误消息从全局errorChannel自动发送到特定目标,只需设置以下属性: spring.cloud.stream.bindings.error.destination 我真的对这部分感到困惑。仅添加属性不起作用,我使用RabbitMQ,配置了Exchange和队列。所以我可以在我的应用程序中看到@ServiceActivator处理的错误,但它不会发送到RabbitMQ中的myErrors exchange。此属性似乎未定义errorChannel的出站绑定 如果在应用程序

也就是说,可以将错误消息从全局errorChannel自动发送到特定目标,只需设置以下属性:

spring.cloud.stream.bindings.error.destination
我真的对这部分感到困惑。仅添加属性不起作用,我使用RabbitMQ,配置了Exchange和队列。所以我可以在我的应用程序中看到@ServiceActivator处理的错误,但它不会发送到RabbitMQ中的myErrors exchange。此属性似乎未定义errorChannel的出站绑定

如果在应用程序中显式创建输出错误通道

/**
 * Error channel name.
 */
String ERROR_ONE = "error";

@Output(MySink.ERROR_ONE)
MessageChannel errorOne();
并从全局处理程序显式向其发送错误消息,例如,通过声明outputChannel:

@ServiceActivator(inputChannel = "errorChannel", outputChannel = "error")
public ErrorMessage errorGlobal(ErrorMessage message) {
    System.out.println("Handling ERROR GLOBAL SA: " + message);
    return message;
}
它会起作用的。但是,这也可以对绑定特定的处理程序执行,因此这里没有特定的错误通道

问题是:我错过了什么吗?可以在不明确定义出站通道的情况下进行发布吗?

关于绑定的文档。错误。。。已过时,需要修复

您应该使用自动绑定dlq并重新发布到dlq,framwork会将失败的消息发布到dlq,并带有关于失败信息的附加头