问题描述
我的流程从轮询入站适配器开始,该适配器使用异步执行器和服务激活器(使用2个网关的协调器)将处理交给发布/订阅通道上的下游组件
问题
1。。我想记录每次轮询执行的相关性ID,以便我可以使用此correlationId来独立于同一流的另一次执行来跟踪该流执行的日志类似于带有UUID的MDC。如何将其传递给处理中涉及的所有线程并在log语句中输出correlationId?
2。。我还试图找出什么是最好的日志记录方法。目前,我在所有通道上都有一个日志记录wireTap(由日志记录适配器消耗)。为此,我希望仅在日志记录模式为DEBUG时才能启用wireTap拦截 例如,
<int:logging-channel-adapter log-full-message="true"
logger-name="tapInbound"
level="DEBUG"
id="loggingChannel"/>
这仅在应用程序记录器为DEBUG时记录,但wireTap拦截将始终发生。仅在日志级别为DEBUG时,如何启用WireTap拦截?可能通过使用selector-expression
之类的值来使用isloggingLevelDebug()
。我该怎么做?
解决方法
-
您可以在第一个频道上使用advice on the poller或自定义拦截器来设置相关性。
-
您可以在早期(
SmartLifecycle
)中以编程方式将其分配到Integer.MIN_VALUE
bean中的通道中,而不用XML声明性地声明。