【问题标题】:Azure Service Bus queues dynamic SpringAzure 服务总线对动态 Spring 进行排队
【发布时间】:2021-12-13 06:19:48
【问题描述】:

我有一个挑战是在 SpringBoot 中设置一个服务,它将监听多个队列。我搜索了很多,找不到我要找的东西。我有队列,可以动态增长。

示例:queue-1、queue-2、queue-3...

我可以在这个服务中使用什么来通过动态监听这些队列来启动这个服务?

【问题讨论】:

    标签: java spring azure-servicebus-queues


    【解决方案1】:

    使用 spring JMS 你可以像 here 那样做 你的配置文件是这样的:

     @Configuration
     @EnableJms
     public class AppConfig implements JmsListenerConfigurer {
    
    @Override
    public void configureJmsListeners(JmsListenerEndpointRegistrar registrar) {
        List<QueueInformation> queueInformationList = consumersStatic.getQueueInformationList();
        int i = 0;
        for (QueueInformation queueInformation :
                queueInformationList) {
            SimpleJmsListenerEndpoint endpoint = new SimpleJmsListenerEndpoint();
            endpoint.setId("myJmsEndpoint-" + i++);
            endpoint.setDestination(queueInformation.getMqQueueName());
            endpoint.setMessageListener(message -> {
                logger.debug("***********************************************receivedMessage:" + message);
            });
            registrar.registerEndpoint(endpoint);
            logger.debug("registered the endpoint for queue" + queueInformation.getMqQueueName());
       }
     }
    

    另一种方法是使用RabbitListenerConfigurer。您可以从here 获得更多想法 此链接中的代码: 对于rabbitconfig:

        @Configuration
        public class RabbitMqConfiguration implements RabbitListenerConfigurer {
        @Autowired
        private ConnectionFactory connectionFactory;
        @Bean
        public Jackson2JsonMessageConverter producerJackson2MessageConverter() {
            return new Jackson2JsonMessageConverter();
        }
        @Bean
        public MappingJackson2MessageConverter consumerJackson2MessageConverter() {
            return new MappingJackson2MessageConverter();
        }
        @Bean
        public RabbitTemplate rabbitTemplate() {
            final RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
            rabbitTemplate.setMessageConverter(producerJackson2MessageConverter());
            return rabbitTemplate;
        }
        @Bean
        public RabbitAdmin rabbitAdmin() {
            return new RabbitAdmin(connectionFactory);
        }
        @Bean
        public RabbitListenerEndpointRegistry rabbitListenerEndpointRegistry() {
            return new RabbitListenerEndpointRegistry();
        }
        @Bean
        public DefaultMessageHandlerMethodFactory messageHandlerMethodFactory() {
            DefaultMessageHandlerMethodFactory factory = new DefaultMessageHandlerMethodFactory();
            factory.setMessageConverter(consumerJackson2MessageConverter());
            return factory;
        }
        @Bean
        public MessageConverter jsonMessageConverter() {
            return new Jackson2JsonMessageConverter();
        }
        @Override
        public void configureRabbitListeners(final RabbitListenerEndpointRegistrar registrar) {
            SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
            factory.setPrefetchCount(1);
            factory.setConsecutiveActiveTrigger(1);
            factory.setConsecutiveIdleTrigger(1);
            factory.setConnectionFactory(connectionFactory);
            registrar.setContainerFactory(factory);
            registrar.setEndpointRegistry(rabbitListenerEndpointRegistry());           
      registrar.setMessageHandlerMethodFactory(messageHandlerMethodFactory());
       }
    }
    

    服务你可以找到here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-25
      • 2015-07-18
      • 1970-01-01
      • 2022-01-27
      • 2015-01-03
      • 2020-12-17
      • 2018-04-01
      • 2013-08-19
      相关资源
      最近更新 更多