带有Springboot的Artemis群集的耐用订阅



我已经创建了带有2个节点的Artemis群集,并成功地与我的spring-boot应用程序(github链接)连接,实现是基于群集静态发现的

现在我正在用它测试耐用的订阅我正在生产5个毫克,只消耗3

   @Bean
    public MessageListenerContainer listenerContainer1(@Qualifier("connectionFactory") ConnectionFactory connectionFactory, Consumer consumer, SimpleMessageConverter messageConverter, @Qualifier("topic") Topic topic) {
        DefaultMessageListenerContainer defaultMessageListenerContainer =
                new DefaultMessageListenerContainer();

    @Bean("connectionFactory")
    public ConnectionFactory activeMQJMSConnectionFactory(@Qualifier("amqTransportConfiguration") TransportConfiguration transportConfiguration) throws JMSException {
        ActiveMQJMSConnectionFactory activeMQJMSConnectionFactory =
                new ActiveMQJMSConnectionFactory( false, transportConfiguration);
        activeMQJMSConnectionFactory.setPassword("admin");
        activeMQJMSConnectionFactory.setUser("admin");
        activeMQJMSConnectionFactory.setClientID("admin");
        return activeMQJMSConnectionFactory;
    }
defaultMessageListenerContainer.setConnectionFactory(connectionFactory);
    defaultMessageListenerContainer.setDestination(topic);
    defaultMessageListenerContainer.setMessageListener(consumer);
    defaultMessageListenerContainer.setSessionAcknowledgeMode(1);
    defaultMessageListenerContainer.setSubscriptionName("mySub");
    defaultMessageListenerContainer.setSubscriptionDurable(true);
    defaultMessageListenerContainer.setMessageConverter(messageConverter);
    return defaultMessageListenerContainer;
}

这是整个配置

我已经与http://localhost:816i/hawtio/wrb ui for Artemis和发现的生产商只有5个杂物5

(消息 - 负载平衡 ->严格)

我在这里做错了什么?

问题是在Artemis依赖性中,现有的使用依赖性某种程度上无法使用群集处理PubSab连接,我还没有找到任何丢失消息的错误日志。我改变了依赖性

<dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>artemis-jms-client-all</artifactId>
        <version>2.2.0</version>
    </dependency>

现在正在工作。

看来问题是关于代码的。两个不同的耐用订阅共享相同的耐用订阅名称。在使用每个MessageListenerContainer实例的唯一订阅名称之后,我可以通过您的测试:

//listener container (1)
defaultMessageListenerContainer.setDurableSubscriptionName("sub1");
/* --- */
//listener container (2)
defaultMessageListenerContainer.setDurableSubscriptionName("sub2");

相关内容

  • 没有找到相关文章

最新更新