【发布时间】:2018-05-25 09:41:05
【问题描述】:
我已经创建了 2 个节点的 Artemis 集群并成功连接到我的 Spring-boot 应用程序 (github link),实现基于 clustered-static-discovery
现在我正在用它测试持久订阅有一些奇怪的行为 我正在生产 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;
}
这里是完整的config
我已经通过http://localhost:816i/hawtio/ wrb UI for artemis 发现生产者只收到 5 条消息中的 5 条
(消息负载平衡 -> 严格)
我在这里做错了什么?
【问题讨论】:
-
我有一个具有 STRICT 消息负载平衡的两个代理集群(来自
clustered-static-discovery示例),您的测试运行良好。我还取消了那些使订阅持久的部分的注释,这也成功了。编辑您的问题并向我们提供 broker.xml。 -
嗨 @ArtursLicis 感谢您的回复,这里是第一台服务器 broker.xml:github.com/techguy-bhushan/ApacheArtemisCluster/tree/master/… 第二台服务器代理 xml ->github.com/techguy-bhushan/ApacheArtemisCluster/tree/master/…
-
另外,我取消了订阅者行的注释,还从 connectionFactory 中删除了客户端 ID,请提取克隆代码并重新运行测试,您能否分享您的集群代理 XML。我不确定我在代理端或弹簧配置上做错了什么。
-
您肯定签入了错误的配置或无法正常工作的代码。在您的应用程序中,您尝试连接到端口 9616,该端口从未在配置中定义——因此启动失败。当我更改此 61616(第一台服务器)时,它因安全异常而失败(要解决此问题,您可以关闭安全性或配置它的属性)。看起来您只需要仔细检查所有配置和设置。
-
对不起,我已经用 9616 端口测试过,我忘记在推送之前更改它,如果你用 61617 替换它仍然无法正常工作
标签: jms spring-jms activemq-artemis