【发布时间】:2016-01-27 13:39:58
【问题描述】:
我有一个带有多个入站通道适配器的 Spring Integration 上下文,每个适配器都有自己的轮询器(目前所有轮询器的刷新时间都配置为固定延迟,但将来可能会使用固定速率)。所有入站适配器将其生成的消息输出到同一处理链。问题是在这种情况下轮询和消息消费的行为是什么?想象一下,1 号轮询器产生了 1000 条消息,它们被交给了我的处理链。由于处理可能需要相当长的时间,轮询器#2 可能已经到了完成其工作并可能产生消息的时候了。但请记住 - 我的处理链仍在处理轮询器 #1 传递的消息。会发生什么?
- 在处理完所有轮询器 #1 消息之前,轮询器 #2 根本不会运行。
- Poller #2 正在运行(但如果我们只有一个线程,它怎么可能运行呢?),它的消息会被存储起来,供以后在处理所有 poller #1 消息时使用。
- 轮询器 #1 启动的处理被中断,轮询器 #2 运行,产生的消息立即传递到处理链。
- 其他答案
请注意,我所有的频道都是直接频道,没有使用任务执行器。
【问题讨论】: