gpt4 book ai didi

exception-handling - Spring Integration - 在服务激活器组件中发生异常时写入错误队列

转载 作者:行者123 更新时间:2023-12-03 23:41:21 27 4
gpt4 key购买 nike

我开始使用 Spring 集成,如果可能的话,我不知道如何解决这种情况。

我想自动“捕获”我的应用程序的服务激活器中可能发生的每个异常,并将此错误发送到专用队列。网关不是一个解决方案,因为我需要一些自定义代码,所以如果我正确理解了原理,我必须使用服务激活器元素。

我认为像这样的东西就可以了:

<jms:outbound-channel-adapter channel="errorChannel"
connection-factory="jmsConnectionFactory" destination="oneErrorQueue"/>

那是行不通的。我不知道 errorChannel 是否被 spring integration 用于确实放入错误。


谢谢,看来可以了。

我已经让转换器监听启动流程的入站组件的错误 channel ,当服务激活器发生错误时它会收到 MessagingException。现在的问题是这个错误没有到达我的队列。我让你看代码:

<jms:message-driven-channel-adapter
channel="input-channel" concurrent-consumers="1"
max-concurrent-consumers="3" connection-factory="jmsConnectionFactory"
transaction-manager="jtaTransactionManager" destination="myQueue" error-channel="myErrorChannel"/>

<transformer input-channel="myErrorChannel" output-channel="create-error-channel" ref="errorTransporter" method="transform"/>

<jms:outbound-channel-adapter channel="create-error-channel"
connection-factory="jmsConnectionFactory" destination="creationErrorQueue" extract-payload="true"/>

...

和变压器:

public class ErrorTransporter {

@Transformer
public Message<CreateCustomerOrder> transform(MessagingException exception) {
return (Message<CreateCustomerOrder>) exception.getFailedMessage();
}
}

在此先感谢您的帮助!

最佳答案

向启动流程的入站组件添加错误 channel 属性

error-channel="myErrorChannel"

当上游组件(例如服务激活器调用的服务)抛出异常时,入站组件将在错误 channel 上放置一条错误消息。该消息的有效负载是一个具有两个属性的 MessagingException:

failedMessage
cause

因此,在您的错误流程中,添加一个转换器...

<int:transformer input-channel="myErrorChannel"
output-channel="toJmsChannel"
expression="payload.failedMessage"

后跟您的 jms 出站 channel 适配器。

关于exception-handling - Spring Integration - 在服务激活器组件中发生异常时写入错误队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12284280/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com