1

在我的 Spring 集成配置中,我有队列、任务执行器。我想更改队列容量、任务执行器池大小和固定延迟。我想要一个 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"/>

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

4

1 回答 1

1

您需要将您的任务执行器、队列等作为常规 bean 注入。然后在运行时为它们设置参数。例如

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

将产生ThreadPoolExecutor具有 name类型的 bean messageTaskExecutor。因此,它可能被注入为:

@Autowired @Qualifier("messageTaskExecutor") // or @Inject @Named("messageTaskExecutor")
ThreadPoolExecutor messageTaskExecutor;

之后你可以调用messageTaskExecutor.setMaximumPoolSize

于 2013-03-19T20:23:14.247 回答