什么是最大的Spring入站通道适配器?

时间:2016-07-22 00:06:58

标签: java spring jms spring-integration

我有一个Spring集成配置文件,如:

<int-jms:inbound-channel-adapter
        channel="fromjmsRecon"
        jms-template="jmsTemplate"
        destination-name="com.mycompany.inbound.recon">
    <int:poller fixed-delay="3000" max-messages-per-poll="1"/>
</int-jms:inbound-channel-adapter>
<int:publish-subscribe-channel id="fromjmsRecon"/>
<int:service-activator input-channel="fromjmsRecon"
                       ref="processInboundReconFile"
                       method="execute"/>

... 10 More inbound channels ...

<int-jms:inbound-channel-adapter
        channel="fromjmsVanRecon"
        jms-template="jmsTemplate"
        destination-name="com.mycompany.inbound.another">
    <int:poller fixed-delay="3000" max-messages-per-poll="1"/>
</int-jms:inbound-channel-adapter>
<int:publish-subscribe-channel id="fromjmsVanRecon"/>
<int:service-activator input-channel="fromjmsVanRecon"
                       ref="processInboundAnother"
                       method="execute"/>

</beans>

有11个入站通道适配器。前10个连接到ActiveMQ,但第11个连接到ActiveMQ。列出这些适配器的顺序无关紧要,第11个始终被忽略。服务适配器已初始化,但通道适配器从未连接到ActiveMQ。

入站通道适配器的数量是否有限制?是否有可以在某处更改此限制的属性?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

正确,有一个名为TaskScheduler线程池的限制,其大小为10

http://docs.spring.io/spring-integration/reference/html/configuration.html#namespace-taskscheduler

因此,请考虑使用spring.integration.taskScheduler.poolSize属性更改其大小,使用TaskExecutor这些适配器将任务转移到其他线程,并且不要吃昂贵的TaskScheduler

还有其他方法:不要使用<int-jms:inbound-channel-adapter>,而是切换到<int-jms:message-driven-channel-adapter>,这是倾听本质上更好。