MessageChannelSpec.wireTap()

Spring 集成包含一个.wireTap() 流式 API MessageChannelSpec 构建器。以下示例演示了如何使用wireTap方法记录输入

@Bean
public QueueChannelSpec myChannel() {
    return MessageChannels.queue()
            .wireTap("loggingFlow.input");
}

@Bean
public IntegrationFlow loggingFlow() {
    return f -> f.log();
}

如果MessageChannelInterceptableChannel的实例,则log()wireTap()intercept()操作符将应用于当前的MessageChannel。否则,一个中间DirectChannel将被注入到当前配置的端点的流程中。在以下示例中,WireTap拦截器直接添加到myChannel,因为DirectChannel实现了InterceptableChannel

@Bean
MessageChannel myChannel() {
    return new DirectChannel();
}

...
    .channel(myChannel())
    .log()
}

当当前MessageChannel未实现InterceptableChannel时,一个隐式的DirectChannelBridgeHandler将被注入到IntegrationFlow中,并且WireTap将被添加到这个新的DirectChannel。以下示例没有任何通道声明

.handle(...)
.log()
}

在前面的示例中(以及任何没有声明通道的地方),一个隐式的DirectChannel将被注入到IntegrationFlow的当前位置,并用作当前配置的ServiceActivatingHandler(来自.handle()前面已描述)的输出通道。