【问题标题】:Spring Integration and TaskExecutorsSpring 集成和 TaskExecutors
【发布时间】:2013-09-30 12:21:46
【问题描述】:

在 Spring Integration 中,一个任务执行器可以在不同的通道之间共享吗?它会影响性能,因为现在多个渠道将竞争相同的资源,还是只是共享的定义?

【问题讨论】:

    标签: spring-integration


    【解决方案1】:

    不,这不仅仅是一个定义,它是一个特定的 TE 实例。如果您将其注入多个位置,它的线程将在这些元素之间共享。

    您可以调整执行器的属性(池大小等)以适合,但如果您有一个关键组件,您可以随时为其提供专用 TE。

    【讨论】:

    • 非常感谢加里。当通道连接到 service-activator/chain/jms:outbound-channel-adapter 等时,是否也应该为这些元素配置任务执行器?或者,这些元素的实例是否会自动与发送给它们的通道一样多?
    • 否;通常这些组件是被动的并且在调用线程上运行(当使用 DirectChannels 时)。您需要任务执行器的唯一情况是“活动”入站适配器(例如 JMS 消息驱动),或者使用轮询(轮询端点或您有一个 QueueChannel 中间流)。大多数需要 TE 的组件都提供了默认值;如果您需要调整参数或希望跨多个组件共享它,您只需要提供一个特定的参数。
    • 对于jms:inbound-channel-adapter,使用jms:inbound-channel-adapter的“concurrent-consumers”属性和设置task-executor有什么区别?
    • 不确定您的意思 - 轮询入站通道适配器,并发性由轮询间隔以及您是否移交给任务(通过 TE)控制。消息驱动通道适配器使用消息侦听器容器,并发由并发设置控制。它有一个内部的TE(或者你可以指定一个外部的),但是并发控制线程的数量。入站适配器(非消息驱动)没有并发设置。
    猜你喜欢
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    • 2019-03-08
    • 2011-03-24
    • 2013-05-02
    • 2015-01-11
    相关资源
    最近更新 更多