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

MessageChannelSpec.wireTap()

Spring 集成包括一个 Fluent API 构建器。 以下示例演示如何使用该方法记录 input:.wireTap()MessageChannelSpecwireTapspring-doc.cn

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

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

如果 是 的实例,则 、 或 运算符将应用于当前 。 否则,将中间节点注入到当前配置的终端节点的流程中。 在下面的示例中,拦截器被直接添加到 ,因为 implements :MessageChannelInterceptableChannellog()wireTap()intercept()MessageChannelDirectChannelWireTapmyChannelDirectChannelInterceptableChannelspring-doc.cn

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

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

当 current 未实现 时,隐式 和 被注入到 中,并且 被添加到这个新的 . 以下示例没有任何 channel 声明:MessageChannelInterceptableChannelDirectChannelBridgeHandlerIntegrationFlowWireTapDirectChannelspring-doc.cn

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

在前面的示例中(以及任何时候未声明通道时),将隐式注入到的当前位置,并用作当前配置的输出通道(来自前面描述的)。DirectChannelIntegrationFlowServiceActivatingHandler.handle()spring-doc.cn