当前位置: 首页 > 知识库问答 >
问题:

Spring集成-通道和线程

蒋联
2023-03-14

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

我可能错过了,但是这些细节在留档的某个地方指定了吗?

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

共有2个答案

宗弘扬
2023-03-14

实际上,“线程”依赖于消息通道类型:

E、 g.<代码>直接频道(<代码>

另一个示例是关于入站通道适配器的。在后台有一个调度任务,它在调度程序线程中执行,如果轮询非常频繁,则下一个轮询任务可能会在新线程中执行。

最后一个“规则”对于QueueChannel是可以接受的:他们的句柄工作也是使用Scheduler线程完成的。

ExcecutorChannel只是将句柄任务放置到Execitor

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

高云瀚
2023-03-14

此处介绍了通道类型。

默认通道类型为Direct(直接)(endpoint在调用方线程上运行)<代码>队列通道和异常通道提供异步操作。

context.getBeansOfType(MessageChannel.class)

 类似资料:
  • 我在我们的项目中引入了spring集成,而不是遗留集成架构。该体系结构支持发送者和累犯。每个发件人可以配置3个目的地。 null Spring integration gateways看起来很合适。我可以使用default-request-channel来表示主流,error-channel来表示失败流。备份流的问题。如何复制网关传入消息并将其放置到备份通道? 更准确地说,这里是一个测试和代码。

  • 我需要在我的Spring集成上下文中动态地将消息分配给MessageChannel。当我知道我想要的MessageChannel的名称时,我可以通过从上下文中获取MessageChannel bean来做到这一点。 我需要做的是通过编程查找在ChannelAdapter/服务中设置的消息通道的名称/id。 但是,MessageChannel API没有与之关联的getName()或getId()方

  • 这是使用注释代码示例的Spring集成执行器通道的后续问题。 我试图通过在“公共频道”中发布一条消息并阅读味精中设置的REPLY_CHANNEL来测试用红色突出显示的框。 “公共通道”是发布-订阅通道。REPLY_通道是一个队列通道。 由于这是一个JUnit测试,我已经模拟了jdbcTemboard、数据源和Impl以忽略任何DB调用。 我的问题是:当我在“公共频道”上发布消息时,我在REPLY\

  • 可以在运行时向spring integration dsl注册MessageSources吗? 在我的例子中,我想创建多个FileReadingMessageSources(基于UI的输入),然后将有效负载发送到特定的通道/jms路由(从元数据或用户输入读取) 另一个问题是,是否可以动态注册IntegrationFlows?

  • 我需要实现一个由多个步骤组成的集成流程,每个步骤都可以由不同数量的处理器(插件)执行。 到目前为止我所拥有的: 预期的行为如下: 通过网关发送第一个请求 一切正常,但结果不是预期的,我只收到2个(随机)项目,而不是4个。 我认为问题在于聚合器仅在两个项目之后触发发布,因为“step/2”通道中的“apply sequence”覆盖了“step/1”中的“apply sequence”。所以问题是:

  • 对于我正在构建的应用程序,我需要能够发送slack消息,指示处理文件的进度和成功/失败。 我没有找到一种完全直接的方法,所以我做了以下几点: 声明队列通道以接收需要发送的消息 发送到该通道的每条消息都将作为松弛消息发送。为了在那里推送信息,我做了一个窃听,比如: 最后,松弛流: 类SlackService具有发送消息的所有逻辑。我喜欢这种方法,因为我可以从不同的地方向slack通道发送消息,并以相