Spring集成 - 池大小的动态配置,任务执行器和队列的队列容量

时间:2013-03-19 19:58:36

标签: spring spring-integration

在我的Spring-Integration Config中,我有队列,任务执行器。我想更改队列容量,任务执行程序池大小和固定延迟。我想有一个UI页面,如果有更多要处理的消息,或者如果有大量负载需要重建和部署应用程序,我应该能够更改配置。

例:                       

<si:service-activator input-channel="MessageChannel" ref="messageHandler" 
                          method="handleMessage" output-channel="ackChannel">

    <si:poller task-executor="messageTaskExecutor" fixed-delay="1000"/>
</si:service-activator>

<task:executor id="messageTaskExecutor" pool-size="10"
queue-capacity="10" keep-alive="1" rejection-policy="CALLER_RUNS"/>

我想动态更改此数字并重新加载配置以获取更改。如果你能指出我正确的方向,那就太好了。

1 个答案:

答案 0 :(得分:1)

您需要将Task Executors,Queues等注入常规bean。然后在运行时将参数设置为它们。例如

<task:executor id="messageTaskExecutor" pool-size="10"
     queue-capacity="10" keep-alive="1" rejection-policy="CALLER_RUNS"/>

将生成名为ThreadPoolExecutor的{​​{1}}类型的bean。因此,它可能会注入:

messageTaskExecutor

您可以致电messageTaskExecutor.setMaximumPoolSize