不使用轮询器的事务边界

时间:2016-08-03 10:28:30

标签: spring-integration

我们的项目有以下流程模式:

<input-flow> | <routing-flow> | <output-flow>

管道符号表示事务边界,所有流程都是使用TaskExecutors进行多线程处理的。在输入流中,事务由消息驱动通道适配器启动,但在路由流和输出流中,它当前由轮询器启动,这导致延迟。

为了避免轮询器延迟,我想使用ExecutorChannels创建事务边界,但ExecutorChannel不会为流启动事务。

还有其他可能实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

您可以通过减少轮询间隔(甚至为0)和增加接收超时来避免延迟(以占用调度程序线程来等待消息为代价)。

对于执行程序通道,您可以在流中插入事务网关(有关示例,请参阅this answer,或使用AOP在执行程序下游某处的直接通道send()上启动事务。