MessageChannelSpec.wireTap()

Spring Integration 包含 .wireTap() Fluent 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()先前已描述)。