我的SI应用程序中有两个inbound-channel-adapter
,它们都提供相同的输出通道,然后通过一系列其他SI组件进行处理。
第一个适配器每10分钟运行一次,而第二个适配器基于事件运行,并且可以随时运行(实际上每100毫秒轮询新事件)。
我希望这两个适配器一次运行一个。因此,例如,如果第一个正在运行并且正在处理其输出,则第二个适配器应该等待第一个适配器(因此其事务)完成。 SI中是否有可用于实现此行为的内置机制?
答案 0 :(得分:1)
您应该能够在<poller/>
上使用任务执行程序,使用单个线程(例如,ThreadPoolTaskExecutor
,池大小为1),并且其中包含CallerBlocksPolicy
rejectedExecutionHandler
,队列大小为1。
使用默认ABORT策略的队列大小为0也应该有效。