【发布时间】:2021-08-16 22:01:25
【问题描述】:
我的app.properties 中有一个队列列表,如下所示:
queue.listener.names=queue0, queue1, queue2, queue3, queue4
queue.concurrency=1, 2, 3, 4, 5
queue.prefetchSize=1, 2, 3, 4, 5
我的任务是在 ActiveMQ 中使用app.properties 的详细信息注册所有端点。
现在,我的代码是这样的:
@Configuration
@EnableJms
public class MyClass implements JmsListenerConfigurer {
@Value("${queue.listener.names}")
private List<String> listeners;
@Value("${queue.concurrency}")
private String[] concurr;
@Value("${queue.prefetchSize}")
private String[] prefetchSize;
@Override
public void configureJmsListeners(JmsListenerEndpointRegistrar registrar) {
listeners.forEach(listener -> {
SimpleJmsListenerEndpoint endpoint = new SimpleJmsListenerEndpoint();
int index = listeners.indexOf(listener);
endpoint.setId(listener);
endpoint.setDestination(listener);
endpoint.setConcurrency(concurr[index]);
endpoint.setMessageListener(message -> {
// do something
});
registrar.registerEndpoint(endpoint);
});
}
}
问题是我找不到为每个队列设置预取大小的方法。当我通过代理 url 时,我只是通过设置 prefetchSize 来为所有队列获取它。
【问题讨论】:
标签: spring-boot activemq