Spring-Integration:通过上次轮询的最后一条消息执行轮询器触发器

时间:2016-07-19 15:54:12

标签: spring-integration

我有这样的轮询配置:

<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)。

如何达到这个条件?谢谢。

1 个答案:

答案 0 :(得分:1)

好吧,我建议你看一下poller的<advice-chain>。使用某些自定义MethodInterceptor,您可以执行决策逻辑并调用您的投票来源stop()。当您在下游某处获得所需的响应时,只需再次执行该端点的start()即可继续处理新的消息。

如果有足够大的polling-interval,您甚至不需要<advice-chain>,只需通过状态检查在下游执行stop()

另请考虑将Control Bus用于stop/start操作。