我有一个spring集成消息存储在数据库中。此消息是在发生异常并被errorChannel捕获后存储的。
现在,当我尝试使用控制总线重播此消息时,如果发生异常,我会在日志中看到错误,但errorChannel不会捕获任何异常。
这是我使用的代码:
@Qualifier("control-bus.replay.channel")
MessageChannel controlBus;
public void redo(Message<?> msg){
controlBus.send(
MessageBuilder.withPayload(
"@mybean.transform(headers['myMessage'])")
.setHeader("myMessage", msg).build());
}
我试图在邮件的标题中添加errorChannel,但是没有用。
所以我想知道这是否是控制总线的默认行为,以及如何覆盖它。
答案 0 :(得分:0)
与控制总线本身无关。这是您用来发送邮件的Get-WebConfigurationProperty -pspath $mypspath `
-filter $myfilter `
-name $myname
类型所决定的行为。
默认情况下,使用$GetWebConfigPropertyParams = @{
PSPath = $mypspath
Filter = $myfilter
Name = $myname
}
Get-WebConfigProperty @GetWebConfigPropertyParams
连接端点。当您直接向该通道发送消息时(如您在代码段中所做的那样),该异常将直接引发给该调用者,而忽略所有可能的错误处理配置。假设您执行常规Java调用堆栈而没有任何线程移位。因此,异常只是抛出给您。
当然,如果您在该通道上的整个流程是直接的,那将很好地工作:在它们之间没有任何队列或执行程序通道配置。
从这里很高兴看到您的MessageChannel
和控制总线配置。