我如何在Spring Boot Java中运行多个侦听器?

问题描述 投票:1回答:1

我一直在接收来自第三方的数据提要,并希望在不到一分钟的时间内处理大约10万条消息。

因此,考虑实现一个消息传递队列,通过该消息传递队列,我可以卸载处理部分并将消息推送到队列,

[其中100名工人(或其他任何数量)中的一名工人接替工作并处理。

了解有关基于JMS和Redis的消息传递,但是我不确定如何运行多个侦听器?

单个监听器已经配置。

java spring-boot rabbitmq jms spring-data-redis
1个回答
0
投票

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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.