我已经创建了带有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");