我有一个 JMS connectionFactory,许多 spring 集成 jms 入站网关都使用它。它们工作正常,但一次只有一条消息。我想让他们在不同的线程中一次处理 N 条并发消息。
我现在得到的代码如下。
弹簧配置.xml
<import resource="commons/jmsConnectionFactory.xml"/>
<import resource="chain/chain1.xml"/>
<import resource="chain/chain2.xml"/>
jmsConnectionFactory.xml
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL">
<value>failover:(tcp://mqmaster:61616,tcp://mqslave:61616)?jms.prefetchPolicy.all=1&randomize=false</value>
</property>
</bean>
链条看起来都像这样
<int:channel id="fooChannel"/>
<int-jms:inbound-gateway request-channel="fooChannel" request-destination-name="foo" extract-request-payload="true" />
<int:chain input-channel="fooChannel">
<int-http:outbound-gateway
url="...."
http-method="GET"
extract-request-payload="true" />
<int:object-to-string-transformer />
</int:chain>
我知道我可以在入站网关中添加“concurrent-consumers”和“max-concurrent-consumers”,让网关处理多条消息。这将导致每个链/网关处理它的线程独立管理。我想要一些方法来为使用 JMS 连接的每个人定义一个公共线程池。这将允许我指定 5 个线程并根据服务器提供的消息在网关之间分配它们,但将消费服务器限制在可管理的工作量上。
多线程处理需要哪些修改?以及如何限制线程数?