0

在我的集成流程中,我在某些错误条件下从标准流程更改为错误流程,通过将standardStateEntryPoint启动errorStateEntryPoint/停止命令消息发送到Control Channel.

是这样的errorStateEntryPoint

@Bean
public IntegrationFlow errorStateEntryPoint() {
    return IntegrationFlows.from(
            () -> new GenericMessage<String>(""),
                    e -> e.poller(p -> p.fixedDelay(ERROR_STATE_POLLING))
                    .id("errorStateSourcePollingChannelAdapter")
                    .autoStartup(false))
            .channel("httpOutRequest")
            .get();
}

它具有Poller5_000 毫秒的固定延迟。开始时识别的生命周期是

send -> wait -> send -> wait etc.

从延迟开始,是否有可能有相反的生命周期?

wait -> send -> wait -> send etc.
4

1 回答 1

0

我发现了什么:

您可以设置轮询器的 initialDelay。如果您的轮询器的周期为 5.000 毫秒而没有初始延迟,则它的工作方式如下:

send -> wait -> send -> wait  etc.

如果您设置与初始延迟相同的 5.000 毫秒,则它完全按照要求工作:

wait -> send -> wait -> send etc.

初始延迟是第二个参数设置p.fixedDelay(...)。那么errorStateEntryPoint轮询通道适配器应该是这样的:

@Bean
public IntegrationFlow errorStateEntryPoint() {
    return IntegrationFlows.from(
            () -> new GenericMessage<String>(""),
                    e -> e.poller(p -> p.fixedDelay(ERROR_STATE_POLLING, ERROR_STATE_POLLING))
                    .id("errorStateSourcePollingChannelAdapter")
                    .autoStartup(false))
            .channel("httpOutRequest")
            .get();
}

而已。

于 2021-09-06T01:04:34.137 回答