在ActiveMQ Artemis代理上发送请求时生产者超时



在向ActiveMQ Artemis broker 2.17.0发送消息时,我试图在我的生产者上引入超时。我使用以下代码实现此目的

@Bean
public ConnectionFactory jmsConnectionFactoryOnline() {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerUrl,username,password);
connectionFactory.setCallTimeout(5000);
return connectionFactory;
}
@Bean
public JmsPoolConnectionFactory pooledConnectionFactory() {
JmsPoolConnectionFactory poolingFactory = new JmsPoolConnectionFactory();
poolingFactory.setConnectionFactory(jmsConnectionFactoryOnline());
poolingFactory.setMaxConnections(MAX_CONNECTIONS);
poolingFactory.setMaxSessionsPerConnection(MAX_SESSIONS_PER_CONNECTION);
poolingFactory.setConnectionIdleTimeout(0);
return poolingFactory;
}

当我使用iptables -A INPUT -s ip_producer -j DROP在ActiveMQ Artemis节点上模拟失去网络时,我可以在生产者端看到当前连接遵守最初设置的5秒超时。

不幸的是,以下请求(新连接(似乎忽略了它,因为我可以观察到生产者在声明请求中断之前等待下一次调用,直到连接超时间隔(60秒(。

你能指导我如何解决这个问题吗?或者告诉我我做错了什么,我不能给我的制作人设置超时?

ActiveMQConnectionFactoryConnectionTTL属性决定在没有任何数据到达的情况下连接将保持活动的时间,其默认值为60秒。

ConnectionTTL属性的值设置为低于60000将减少连接超时。

最新更新