如需使用最新稳定版本,请使用 Spring Integration 7.0.4spring-doc.cadn.net.cn

MessageChannelSpec.wireTap()

Spring Integration 包含一个 .wireTap() 流式 API MessageChannelSpec 构建器。 以下示例展示了如何使用 wireTap 方法来记录输入:spring-doc.cadn.net.cn

@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 实现了 InterceptableChannelspring-doc.cadn.net.cn

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

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

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

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

在前面的示例中(以及任何未声明通道的情况下),会在 IntegrationFlow 的当前位置隐式注入 DirectChannel,并将其用作当前配置的 ServiceActivatingHandler 的输出通道(来自 .handle()如前所述)。spring-doc.cadn.net.cn