我可以让轮询器在 start() 命令后使用 WAIT 开始他的循环吗?
Can I make a Poller start his cycle with WAIT after start() command?
在我的集成流程中,我在某些错误情况下从标准流程更改为错误流程,通过将 start/stop 命令消息发送到 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();
}
它有一个 Poller
固定延迟 5_000 毫秒。启动时识别的生命周期是
send -> wait -> send -> wait etc.
是否有可能从延迟开始逆生命周期?
wait -> send -> wait -> send etc.
我发现了什么:
您可以设置轮询器的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();
}
就是这样。
在我的集成流程中,我在某些错误情况下从标准流程更改为错误流程,通过将 start/stop 命令消息发送到 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();
}
它有一个 Poller
固定延迟 5_000 毫秒。启动时识别的生命周期是
send -> wait -> send -> wait etc.
是否有可能从延迟开始逆生命周期?
wait -> send -> wait -> send etc.
我发现了什么:
您可以设置轮询器的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();
}
就是这样。