【问题标题】:Spring Integration: How to know when a work flow completes?Spring Integration:如何知道工作流程何时完成?
【发布时间】:2016-04-21 15:06:01
【问题描述】:

我正在为多个 Spring 集成部署添加日志记录/监控功能。我想在工作流开始时创建一个记录器事务,并在工作流结束时关闭日志事务。在记录器事务结束时,我会将日志和指标发送到集中式记录服务器。归根结底,我想查看通过多个 Spring 集成部署的工作流的所有消息的日志。

spring 集成部署涉及很多团队,我不能指望每个团队都为我添加日志记录代码,所以我想编写跨 spring 集成部署运行的代码。

要启动日志事务,解决方案是在一组入站消息传递通道上使用全局通道拦截器。跨部署构建的所有工作流都使用同一组入站通道,因此启动日志事务拦截器将运行。 我还将记录器事务详细信息作为消息标头的一部分传递

但我无法找到结束交易的解决方案。工作流可以是同步的也可以是异步的。此外,并非工作流中的所有端点都有输出通道。

关于如何关闭记录器事务的任何策略/想法?

示例工作流示例如下图所示:

【问题讨论】:

    标签: spring logging spring-integration


    【解决方案1】:

    当您的流程以通道适配器(或其他不产生结果的端点)结束时,将最后一个通道设为发布-订阅通道;为终止“事务”的通道订阅第二个端点。

    我通常更喜欢在此类端点上添加order 属性 - 使常规端点 order="1" 和流终止符 order="2" - 清楚地表明它是在主端点之后调用的。

    重要的是不要将任务执行器添加到通道中,以便在同一线程上串行调用端点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-11
      • 1970-01-01
      • 2012-01-13
      • 1970-01-01
      • 1970-01-01
      • 2011-11-23
      • 2019-07-05
      相关资源
      最近更新 更多