【问题标题】:Spring Integration Flow Level CorrelationId for logging and tracking flowSpring Integration Flow Level CorrelationId 用于记录和跟踪流
【发布时间】:2020-09-02 09:13:36
【问题描述】:

我的流程从轮询入站适配器开始,该适配器通过异步执行器和服务激活器(使用 2 个网关的协调​​器)将处理移交给发布/订阅通道上的下游组件

问题

1. 我想为每次轮询的执行记录一个关联 ID,以便我可以使用此关联 ID 独立于同一流的另一次执行跟踪该流执行的日志,例如类似于具有 UUID 的 MDC。如何将这个传递给所有参与处理的线程,并在日志语句中输出correlationId?

2. 我也在尝试找出最好的日志记录方法。目前,我在所有通道上都有一个日志线接(由日志适配器消耗)。对于这个,我希望只有在记录模式为 DEBUG 时才能启用wireTap拦截 例如,

 <int:logging-channel-adapter log-full-message="true"
                                 logger-name="tapInbound"
                                 level="DEBUG"
                                 id="loggingChannel"/>

这只会在应用程序记录器是 DEBUG 时记录,但窃听拦截总是会发生。如何仅在日志级别为DEBUG时启用wireTap拦截?可能通过使用selector-expressionisloggingLevelDebug() 之类的值。我该怎么做?

【问题讨论】:

    标签: spring-integration


    【解决方案1】:
    1. 您可以使用advice on the poller 或第一个通道上的自定义拦截器来设置相关性。

    2. 您可以在早期阶段 (Integer.MIN_VALUE) 以编程方式将它们添加到 SmartLifecycle bean 中的通道中,而不是在 XML 中以声明方式声明。

    【讨论】:

    • 如何为异步切换配置 MDC?我有各种异步流程,并希望在其中安装 MDC。
    • 不要在 cmets 中提出新问题;它不能帮助人们找到问题/答案。 MDC.copyContextMap() - 将其添加为消息头并在新线程中设置 MDC,
    • 好的,下次我会处理的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 2019-05-19
    相关资源
    最近更新 更多