在以前的spring集成应用程序中,我可以订阅该应用程序 errorChannel
而我的失败消息,发送出去绑定,将结束在我的(预定义)处理程序。
然而,现在我正试图在一个更大的应用程序中实现相同的模式,它有一个预先存在的in-bound设置,并且我不再能够在errorchannel上获得它。
最让我震惊的是:
<int:publish-subscribe-channel id="errorChannel" task-executor="errorChannelExecutor"/>
当我启动这个应用程序时,我不再看到以下令人放心的消息:
No bean named 'errorChannel' has been explicitly defined. Therefore, a default PublishSubscribeChannel will be created.
Adding {logging-channel-adapter:o.s.i.errorLogger} as a subscriber to the 'errorChannel' channel
Channel'o.s.c.s.C.errorChannel' has 2 subscriber(s).
你认为 int:publish-subscribe-channel
正在重写我对应用程序错误通道的访问权限吗?
为什么它不再引用日志中的默认errorchannel?
有没有一种方法,我可以定义一个备用的错误通道,它只与外部连接有关?
1条答案
按热度按时间9w11ddsr1#
使用异步任务执行器时,执行器捕获的异常将发送到名为
errorChannel
默认情况下。如果您定义这样一个通道,它将覆盖默认值,否则该默认值将由框架创建(并且订阅给它的日志适配器未订阅;如果定义自己的频道,就必须这样做)。
对于消息驱动的入站通道适配器/网关(例如http、amqp等),如果没有下游异步执行器,则必须显式设置
error-channel
属性,如果您希望异常转到那里。