繁体   English   中英

Spring Integration - 通道和线程

[英]Spring Integration - channels and threads

我想了解 Spring Integration 中如何处理消息:串行或并行。 特别是我有一个带有轮询器和 HTTP 出站网关的入站通道适配器。 我猜拆分器、转换器、标头丰富器等不会产生自己的线程。

我可能会错过它们,但是这些细节是否在文档中的某处指定?

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

通道类型在此处描述

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

context.getBeansOfType(MessageChannel.class)

实际上“线程”取决于MessageChannel类型:

例如DirectChannel ( <channel id="foo"/> - 默认配置) 不对线程做任何事情,只是将消息从send转移到订阅者来处理它。 如果处理程序是AbstractReplyProducingMessageHandler ,它将其结果发送到outputChannel ,如果最后一个也是DirectChannel ,则工作在同一个线程中完成。

另一个示例是关于您的inbound channel adapter 在后台有一个计划任务,它在调度程序线程中执行,如果您的轮询经常是下一个轮询任务,则可能在新线程中执行。

最后一条“规则”对于QueueChannel是可以接受的:它们的handle工作也由调度程序线程完成。

ExcecutorChannel只是将handle任务放置到Executor

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM