对于最新的稳定版本,请使用 Spring Integration 6.5.1spring-doc.cadn.net.cn

MessageChannelSpec.wireTap()

Spring Integration 包括一个.wireTap()流畅的 APIMessageChannelSpec建设者。 以下示例演示如何使用wireTap记录输入的方法:spring-doc.cadn.net.cn

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

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

如果MessageChannelInterceptableChannellog(),wireTap()intercept()运算符应用于当前MessageChannel. 否则,中间DirectChannel注入到当前配置的端点的流中。 在以下示例中,WireTapInterceptor 被添加到myChannel直接,因为DirectChannel实现InterceptableChannel:spring-doc.cadn.net.cn

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

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

当当前MessageChannel不实现InterceptableChannel,隐式DirectChannelBridgeHandler被注入IntegrationFlowWireTap添加到这个新的DirectChannel. 以下示例没有任何通道声明:spring-doc.cadn.net.cn

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

在前面的示例中(以及任何未声明通道时),隐式DirectChannel被注入到当前位置的IntegrationFlow并用作当前配置的ServiceActivatingHandler(从.handle()前面描述)。spring-doc.cadn.net.cn