0

我有一个 ActiveMQ 实例,并且生产者正在将数据推送到队列中。目前,我们有一个并发设置为 1-5 的单个消费者,它是使用 Spring Boot 开发的。现在我在不同的端口上运行相同的 Spring Boot 应用程序(Consumer)来扩展消费者。当我检查日志时,只有一个消费者正在接收消息,而另一个消费者(它是另一个消费者的副本)没有从该队列接收任何消息。

请在下面找到消费者代码

    public JmsListenerContainerFactory<?> orderEventListenerFactory(ConnectionFactory connectionFactory,
            DefaultJmsListenerContainerFactoryConfigurer configurer) {
        DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
        factory.setConcurrency("1-5");
        factory.setSessionAcknowledgeMode(javax.jms.Session.CLIENT_ACKNOWLEDGE);
        configurer.configure(factory, connectionFactory);
        return factory;
    }

    @JmsListener(destination = "order_queue?consumer.prefetchSize=1", containerFactory = "orderEventListenerFactory")
    @Override
    public void consumeOrderEvent(String event) {
        // Some BL
    }

我是否需要在代理或消费者端配置一些东西,以便以循环方式使用消息,即基本上在这两个消费者之间共享负载?我尝试将预取设置为 1,但无论哪个消费者首先开始,仍然会接收消息。

4

0 回答 0