我试图理解在Spring集成中应该如何处理错误。我找到了关于errorchannel
的文档,我试图使用它,但没有捕获异常。
下面是我的HTTP出站网关:
<int-http:outbound-gateway id="orderRequestHttpGateway"
request-channel="orders-channel"
url="${url}"
http-method="POST"
expected-response-type="java.lang.String"
reply-timeout='5000'
reply-channel='pushed-channel'
charset="UTF-8">
</int-http:outbound-gateway>
我不明白应该在哪里捕捉这个组件引发的异常(比如500 HTTP错误)
路由由轮询器
启动。我尝试添加error-channel
属性:
<int:inbound-channel-adapter channel="orders-trigger-channel" expression="''">
<int:poller fixed-delay="${poller}" error-channel="errorChannel"/>
</int:inbound-channel-adapter>
我尝试使用自定义错误通道。我还尝试重写现有的ErrorChannel:
<int:channel id="errorChannel"/>
<int:outbound-channel-adapter id="errorChannelHandler"
ref="errorManager"
method="foo"
channel="errorChannel"/>
只能在调用者线程中或者在有try...catch
的地方捕获异常--Spring集成与纯Java没有什么不同:每当有try...catch
时,我们就捕获异常。
根据您的描述,
上的error-channel=“errorchannel”
是应该使用的方法,如果没有其他线程向下游移动,这样的MessageHandlingException
将真正抛出给poller,并包装成errorMessage
发送给配置的errorChannel
。
它是MessageHandlingException
,因为我们在Spring Integration中处理Messaging
,并且这样的异常携带一些上下文以及关于流和失败消息的重要信息。您的500 HTTP错误
只是该消息中的原因
。因此,在捕获和处理errormessage
时,应该查看其堆栈跟踪以查找要解析的信息。
另一方面,您可以通过ExpressionEvaluatingRequestHandlerAdvise
或RequestHandlerRetryAdvise
:https://docs.spring.io/spring-integration/docs/5.0.6.release/reference/html/messaging-endpoints-chapter.html#message-handler-advision-chain
我有一个这样的集成流程:
我有一个http出站网关,它将json消息发布到rest服务,现在rest将以json消息类型的http错误状态响应,以防我们的应用程序捕获任何错误。在将json消息发布到rest服务并获得http成功状态的愉快场景中,我们的应用程序也应该捕获json消息。 现在我通过Spring集成实现了什么,我能够发送消息并获得成功响应并捕获它,但在错误状态下Spring行为会抛出异常,我如何更改行为? 如果
我们的Web应用一旦上线之后,那么各种错误出现的概率都有,Web应用日常运行中可能出现多种错误,具体如下所示: 数据库错误:指与访问数据库服务器或数据相关的错误。例如,以下可能出现的一些数据库错误。 连接错误:这一类错误可能是数据库服务器网络断开、用户名密码不正确、或者数据库不存在。 查询错误:使用的SQL非法导致错误,这样子SQL错误如果程序经过严格的测试应该可以避免。 数据错误:数据库中的约束
我有下一个配置: 入境 出站: 链条1: 链2: 错误: Java Transformer: 当出站的Web服务关闭时,错误进入错误通道转换器,但要响应,我们有下一个错误: o、 s.m.c.GenericMessageTemplate$TemporaryReplyChannel#242已收到回复消息,但由于发送请求消息时出现异常,接收线程已退出:GenericMessage[payload=[#
我有以下Spring Integration JAva DSL代码: 创建为的bean。 我试图实现的是,当SOAP错误到达时,将错误消息路由到错误通道。我认为我可以向处理程序添加一个建议,这个建议应该是,我可以在其中设置失败通道。因此,每当出站网关中抛出错误时,错误消息将被转发到错误通道。 我将trapExecution设置为false,直接将通知添加到网关,并且必须使用,否则流将挂起。所以现在
我正在尝试构建一个集成解决方案,其中 我的outboundgateway定义为 请求工厂在哪里 快乐之路运行良好,我面临的问题是不太快乐的道路。 当Api调用返回错误响应时。转换(exetrnaldto到dto)失败,客户端获得500 我想把error resposne json也翻译成我的json 我如何处理错误情况 我的问题是: 如何处理错误。 在错误条件下如何停止流不转换 如何将状态代码从出