我有下一个配置:
入境
<int:gateway id="inGateway" service-interface="XXX"
error-channel="errorChannel"
default-request-channel="requestChannel"
default-reply-channel="replyChannel" />
出站:
<ws:outbound-gateway id="ws-outbound-gateway"
request-channel="inbound" reply-channel="outbound" uri="XXX" />
链条1:
<int:chain input-channel="requestChannel" output-channel="inbound">
XXX </int:chain>
链2:
<int:chain input-channel="outbound" output-channel="replyChannel"> XXX
</int:chain>
错误:
<int:chain input-channel="errorChannel" output-channel="replyChannel">
<int:transformer ref="logicTransformers" method="errorTransformerMethod"></int:transformer>
</int:chain>
</beans>
Java Transformer:
final GenericError errorCatalog = errorCatalog(errorMessage);
LOGGER.warn("Transformed error from catalog: {}", errorCatalog);
final MessageBuilder<Document> builder =
MessageBuilder.withPayload(XmlUtil.parseToDocument(errorCatalog)).copyHeaders(errorMessage.getHeaders()).copyHeadersIfAbsent(errorMessage.getHeaders());
当出站的Web服务关闭时,错误进入错误通道转换器,但要响应,我们有下一个错误:
o、 s.m.c.GenericMessageTemplate$TemporaryReplyChannel#242已收到回复消息,但由于发送请求消息时出现异常,接收线程已退出:GenericMessage[payload=[#document:null],headers={spanTraceId=8bf90ea9ff4266c8,spanId=598680bae5f913d5,spanParentSpanId=8BF90EA9FF4266 C8,replyChannel=org.springframework.messaging.core.GenericMessagingTemplate$TemporaryReplyChannel@76c751de也就是说,functionad=PRUEBASOA12,errorChannel=org.springframework.messaging.core.GenericMessagingTemplate$TemporaryReplyChannel@76c751de,messageSent=true,id=2108386f-99db-98b9-3d30-3bcf45335424,spanSampled=1,spanName=message:requestChannel}]
我们不明白…因为我们有相同的流程
如果服务级别出现错误,原始消息将被包装到消息异常
,带有该有效负载的
错误消息
将被发送到errorChannel
中。即使显式使用replyChannel
,也必须确保由入站网关填充的replyChannel
标头。而正是这个报头在该网关的请求-应答行为中起着主要作用。
错误流中仍然存在
reportyHeader
,但它已经是MessagingException
有效负载中失败消息
的一部分。
因此,您的<代码>逻辑转换器。errorTransformerMethod
应为此方法提取replyChannel
标头,以便将真正的回复发送到显式replyChannel
。或者,您可以完全省略此replyChannel
,因为真正的发送和接收
是基于replyChannel
头的。
请阅读参考手册中的更多信息:
https://docs . spring . io/spring-integration/docs/4 . 3 . 11 . release/reference/html/messaging-endpoints-chapter . html # gateway
https://docs . spring . io/spring-integration/docs/4 . 3 . 11 . release/reference/html/configuration . html #命名空间-errorhandler
我们使用ws-outbound-gateway以下面的方式调用webservice。 如果请求xml采用以下方式,则工作正常。 如果我在请求xml中添加SOAP-ENV:Envelope xmlns:SOAP-ENV = " http://schemas . xmlsoap . org/SOAP/Envelope/"和SOAP-ENV:Body,它将抛出如下错误: org.springframew
我有一个这样的集成流程:
我试图理解在Spring集成中应该如何处理错误。我找到了关于的文档,我试图使用它,但没有捕获异常。 下面是我的HTTP出站网关: 我不明白应该在哪里捕捉这个组件引发的异常(比如500 HTTP错误) 路由由启动。我尝试添加属性: 我尝试使用自定义错误通道。我还尝试重写现有的ErrorChannel:
我使用的API分为两个步骤: 它以异步方式开始处理文档,向您提供用于步骤2的id 因此,问题是如何为HTTP出站网关实现自定义的“成功”标准。我还想将其与我已经实现的RetryAdvice结合起来。 我已经尝试了以下操作,但首先HandleMessage建议中提供的消息的有效负载为空,其次重试未触发: 我已经从4年前的阿特姆找到了这个答案,但首先我没有在出站网关上找到回复通道方法,其次不确定这种情
我正在尝试将spring集成配置为向队列发送消息,然后接收消息,即非常简单的事情: 我认为解耦所必需的是在流程的两端都有一个消息网关。因此,我的第一次尝试(有效)如下所示: 其中MessageReceiverHandler()是扩展AbstractMessageHandler的bean。 所以上面我们有一个用于出站消息的消息网关。我假设我们也应该有一个用于入站消息的网关,允许我们将传入消息处理与应
我有一个 FileUpload 事件,应该将其发送到 http:outbound upload URL。为此,我必须首先对登录 URL 进行身份验证并获取响应,并设置要执行的出站上传 URL 的会话 ID。在我的情况下,我有一个事件侦听器,它侦听应用程序以发布文件上传事件。发布后,我的侦听器可以拾取并执行流。我正在尝试了解如何实现这一点,因为文件上传对象需要保留,直到登录响应返回。谢谢!