基础知识:
在我们收到消息后,成功和错误流都非常有效。但是,当我们遇到在生成消息之前发生的错误(即无法连接到sftp服务器)时,我们没有机会附加头。
我一直在查看示例和留档,我找不到一个好方法来从MessagePublishingErrorHandler产生的错误消息中附加相同的头,而不覆盖轮询器上的错误处理程序,或者为每个入站集成创建自定义错误流。这里有什么选项?
这是一个配置示例:
IntegrationFlows
.from(
Sftp.inboundAdapter(sessionFactory)
.autoCreateLocalDirectory(true)
.localDirectory(configProperties.getLocalDirectory())
.preserveTimestamp(true)
.remoteDirectory(configProperties.getRemoteDirectory()),
c -> c.poller(Pollers
.fixedRate(properties.getSftpInterval(), properties.getSftpIntervalUnit())
.errorHandler(errorHandler)) // custom error handler?
)
.enrichHeaders(
MapBuilder
.with("vendorName", "vendor1")
.get()
)
.channel("fileChannelHandler")
.get();
是的-问题是,对于轮询的通道适配器,如果在消息源中抛出异常。receive()
,目前还没有任何消息可以通过自定义标题进行增强。
该框架目前不允许修改ErrorMessage
本身的头(它将原始异常作为此类异常的有效负载)。
一个解决方法(除了自定义EH之外)是在每个错误流上放置一个头enricher,以识别源适配器。
将来,该框架可以在ErrorMessage中添加一个头,其中包含通道适配器的id,以便在常见错误流中识别源。
欢迎打开一个“改进”JIRA问题,我们来看看。
我如何处理在Spring整合中未能向Kafka传达的信息? 我在“int kafka:outbound channel adapter”中没有看到“error channel”是一个选项,我想知道应该在哪里添加错误通道信息,以便我的ErrorHandler可以获得“failed to kafka”类型的错误。(包括所有类型的故障、配置、网络等) 此外,inputToKafka是排队通道,我应该在哪
问题内容: 入站和出站通道适配器之间的根本区别是什么? 任何示例都将非常有帮助。 我已经查看过Spring文档,这种“方向性”的区别对我来说还不清楚。我支持配置了outbound-channel-adapter的应用程序,但是我发现使用 出站 标签可以直观地了解行为计数器。该适配器获取一个外部文件,然后 将其 引入应用程序中, 在 该应用程序中我们解析文件并保留数据。 这类似于这个问题,但是我想更
我正在尝试构建一个集成解决方案,其中 我的outboundgateway定义为 请求工厂在哪里 快乐之路运行良好,我面临的问题是不太快乐的道路。 当Api调用返回错误响应时。转换(exetrnaldto到dto)失败,客户端获得500 我想把error resposne json也翻译成我的json 我如何处理错误情况 我的问题是: 如何处理错误。 在错误条件下如何停止流不转换 如何将状态代码从出
我是Spring整合的新手。 我有一个流,根据某些条件,我需要在其上执行超文本传输协议或tcp调用。我关注的问题与超文本传输协议调用有关。调用的其余endpoint需要一个访问令牌作为身份验证的标头参数,该参数由具有2个方法和的Spring服务提供。我想仅在过期时调用方法刷新。 我想做的是在执行对rest api的调用时添加以下逻辑: 如果令牌过期,restendpoint返回401,我希望在流中
我试图将从Quickfix读取消息(读取修复消息)配置到spring集成中。我知道我可以使用入站通道适配器从外部源(如QuickFix)读取数据。您能提供如何编写事件驱动入站通道适配器的示例吗?我有以下配置不起作用
我们在Oracle Weblogic 10.3.6服务器中有两个节点的集群环境,它是循环的。 我有一个服务,它从外部系统获取消息并将它们放入数据库(Oracle DB)。 我正在使用jdbc入站适配器转换这些消息并将其传递到通道。一条消息只处理一次。我计划在DB表中有一列(NODE\u NAME)。当从外部系统获取消息的第一个服务也使用NODE_名称(weblogic.NAME)更新列时。在jdb