Spring Integration - 通道与线程

3
我希望了解消息在Spring Integration中是串行还是并行处理的。特别地,我有一个具有轮询程序和HTTP出站网关的入站通道适配器。我猜测分离器、转换器、头部增强器等不会生成自己的线程。
我可能错过了它们,但这些细节是否在文档中有指定?
另外,我能否通过编程方式获取系统中的所有通道?
2个回答

7

通道类型在这里描述。

默认的通道类型是Direct(端点在调用者线程上运行);QueueChannelExcecutorChannel提供异步操作。

context.getBeansOfType(MessageChannel.class)


链接失效 - 这个链接现在对我来说是有效的,这些天 https://docs.spring.io/spring-integration/reference/html/channel.html(Spring文档中的“消息通道”部分) - RobertG

4
实际上,“线程”取决于MessageChannel类型:
例如,DirectChannel( - 默认配置)不会对线程执行任何操作,只是将消息从send移至订阅者以处理它。如果处理器是AbstractReplyProducingMessageHandler,则将其结果发送到outputChannel,如果最后一个也是DirectChannel,则在同一线程中完成工作。
另一个示例是您的入站通道适配器。在后台有一个计划任务,在计划程序线程中执行,如果您的轮询非常频繁,下一个轮询任务可能会在新线程中执行。
最后一个“规则”适用于QueueChannel:它们的处理工作也是通过计划程序线程完成的。
ExcecutorChannel只将处理任务放置到Executor中。
您可以在Gary Russell所提供的参考手册中找到所有其他信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接