Spring Integration - 通道和线程

时间:2014-06-11 14:16:53

标签: java spring spring-integration

我想了解如何在Spring Integration中处理消息:串行或并行。特别是我有一个带有轮询器和HTTP出站网关的入站通道适配器。我认为分离器,变换器,标题集合器等不会产生它们自己的线程。

我本可以错过它们,但这些细节是否在文档的某处指定了?

我也可以以编程方式获取系统中的所有频道吗?

2 个答案:

答案 0 :(得分:4)

频道类型为described here

默认频道类型为Direct(端点在呼叫者的线程上运行); QueueChannelExcecutorChannel提供异步操作。

context.getBeansOfType(MessageChannel.class)

答案 1 :(得分:4)

实际上“线程化”依赖于MessageChannel类型:

E.g。 DirectChannel<channel id="foo"/> - 默认配置)不对线程执行任何操作,只是将消息从send转移到订阅者处理它。如果处理程序是AbstractReplyProducingMessageHandler,它将结果发送到outputChannel,如果最后一个是DirectChannel,则工作在同一个线程内完成。

另一个示例是关于您的inbound channel adapter。在后台有一个计划任务,它在Scheduler线程中执行,如果你的轮询很常见,下一轮询任务可能会在新线程中执行。

QueueChannel可接受最后一条“规则”:他们的handle工作也是使用Scheduler线程完成的。

ExcecutorChannel只需将handle任务放到Executor

您可以在Gary Russell在他的回答中提供的参考手册中找到所有其他信息。

相关问题