我不断收到来自第三方的数据提要,并希望在不到一分钟的时间内处理大约10万条消息。因此,我考虑实现一个消息传递队列,通过该消息传递队列,我可以分担处理部分的工作,并将消息推送到队列中,在该队列中,每100名工人(或任何数量)中的一名工人选择该作业并进行处理。
我已经阅读了有关基于JMS和Redis的消息传递的信息,但是我不确定如何运行多个侦听器。单个侦听器已配置。
最佳答案
Spring JMS允许您通过“上下”字符串指定并发限制,例如“ 5-10”,或简单的上限字符串,例如“ 10”(在这种情况下,下限将为1)。
侦听器容器将始终保持最少数量的使用者(setConcurrentConsumers(int)),并缓慢扩展至最大人数
看到:
[1] https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jms/config/DefaultJmsListenerContainerFactory.html#setConcurrency-java.lang.String-
[2] https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jms/listener/DefaultMessageListenerContainer.html#setConcurrency-java.lang.String-
Spring启动配置Bean中的示例:
@Configuration
@EnableJms
public class AppConfig {
@Bean
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() {
DefaultJmsListenerContainerFactory factory
= new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory());
factory.setConcurrency("3-10");
return factory;
}
}