MessageChannelSpec.wireTap()

Spring Integration 包含一個 .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()前面描述過)的輸出通道。

© . This site is unofficial and not affiliated with VMware.