我有这样的轮询配置:
<int:poller id="myPoller" default="true" max-messages-per-poll="2" task-executor="executor"
error-channel="errorChannel" receive-timeout="20000" trigger="dynamicTrigger">
</int:poller>
但是我需要使用上一次民意调查中的上一次消息来触发轮询器。例如流程:
如果我有4(A,B,C,D)后休息,应用程序将首先处理2(A,B)消息,然后等待最后一个响应(来自A或B),然后触发轮询下一条消息(C,D)。
如何达到这个条件?谢谢。
答案 0 :(得分:1)
好吧,我建议你看一下poller的<advice-chain>
。使用某些自定义MethodInterceptor
,您可以执行决策逻辑并调用您的投票来源stop()
。当您在下游某处获得所需的响应时,只需再次执行该端点的start()
即可继续处理新的消息。
如果有足够大的polling-interval
,您甚至不需要<advice-chain>
,只需通过状态检查在下游执行stop()
。
另请考虑将Control Bus
用于stop/start
操作。