Hi,

I got an Artemis dual mirror setup and basically it works fine. Now I want to 
test the failover on the client side. I use the following

artemis-jms-client 2.39.0
factory: org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory
connection string: 
(tcp://host:41091,tcp://host:41101)?ha=true&reconnectAttempts=3&useTopologyForLoadBalancing=false&connectionLoadBalancingPolicyClassName=testingground.mq.SequentialConnectionLoadBalancingPolicy
Helidon 4.1.6

I use my own ConnectionLoadBalancingPolicy implementation which starts with the 
first host/connection and then goes to the next one (like the RoundRobin 
implementation but just always starting with the first one).

Everything works fine till I stop the one server instance the client is 
connected to. I expected that it just creates a new connection and uses the 
second server instance but it just fails with this:

2025.02.21 10:05:37 INFO org.apache.activemq.artemis.core.client 
Thread[#91,Thread-0 (ActiveMQ-client-global-threads),5,main]: AMQ214036: 
Connection closure to devil01/191.0.215.111:41091 has been detected: AMQ219015: 
The connection was disconnected because of server shutdown [code=DISCONNECTED]
2025.02.21 10:05:48 WARNING org.apache.activemq.artemis.core.client 
Thread[#91,Thread-0 (ActiveMQ-client-global-threads),5,main]: AMQ212005: Tried 
3 times to connect. Now giving up on reconnecting it.
2025.02.21 10:05:48 SEVERE io.helidon.messaging.connectors.jms.JmsConnector 
Thread[#62,jms-3,5,jms-thread-pool-1]: Error intercepted from channel events
java.util.concurrent.CompletionException: 
io.helidon.messaging.MessagingException: Error during sending JMS message.
at 
java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
at 
java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
at 
java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1770)
at 
io.helidon.common.context.ContextAwareExecutorImpl.lambda$wrap$8(ContextAwareExecutorImpl.java:161)
at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: io.helidon.messaging.MessagingException: Error during sending JMS 
message.
at 
io.helidon.messaging.connectors.jms.JmsConnector.lambda$sendingErrorHandler$18(JmsConnector.java:674)
at 
io.helidon.messaging.connectors.jms.JmsConnector.consumeAsync(JmsConnector.java:660)
at 
io.helidon.messaging.connectors.jms.JmsConnector.lambda$consume$16(JmsConnector.java:637)
at 
java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
... 4 more
Caused by: jakarta.jms.JMSException: AMQ219016: Connection failure detected. 
Unblocking a blocking call that will never get a response
at io.helidon.messaging.connectors.jms.shim.ShimUtil.exception(ShimUtil.java:67)
at io.helidon.messaging.connectors.jms.shim.ShimUtil.run(ShimUtil.java:42)
at 
io.helidon.messaging.connectors.jms.shim.JakartaMessageProducer.send(JakartaMessageProducer.java:106)
at 
io.helidon.messaging.connectors.jms.JmsConnector.consumeAsync(JmsConnector.java:657)
... 6 more
Suppressed: javax.jms.JMSException: AMQ219016: Connection failure detected. 
Unblocking a blocking call that will never get a response
at 
org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl.sendBlocking(ChannelImpl.java:580)
at 
org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl.sendBlocking(ChannelImpl.java:465)
at 
org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl.sendBlocking(ChannelImpl.java:457)
at 
org.apache.activemq.artemis.core.protocol.core.impl.ActiveMQSessionContext.sendFullMessage(ActiveMQSessionContext.java:589)
at 
org.apache.activemq.artemis.core.client.impl.ClientProducerImpl.sendRegularMessage(ClientProducerImpl.java:305)
at 
org.apache.activemq.artemis.core.client.impl.ClientProducerImpl.doSend(ClientProducerImpl.java:277)
at 
org.apache.activemq.artemis.core.client.impl.ClientProducerImpl.send(ClientProducerImpl.java:147)
at 
org.apache.activemq.artemis.core.client.impl.ClientProducerImpl.send(ClientProducerImpl.java:129)
at 
org.apache.activemq.artemis.jms.client.ActiveMQMessageProducer.doSendx(ActiveMQMessageProducer.java:483)
at 
org.apache.activemq.artemis.jms.client.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:194)
at 
io.helidon.messaging.connectors.jms.shim.JakartaMessageProducer.lambda$send$6(JakartaMessageProducer.java:106)
at io.helidon.messaging.connectors.jms.shim.ShimUtil.run(ShimUtil.java:40)
... 8 more
Caused by: ActiveMQUnBlockedException[errorType=UNBLOCKED message=AMQ219016: 
Connection failure detected. Unblocking a blocking call that will never get a 
response]
... 20 more

Am I doing something wrong? Does an automatic failover to the next server even 
work with the dual mirror setup?

Thanks in advance for any help and advice.

Mihael


Mihael Schmidt
Software Engineering

Bauformat Küchen GmbH & Co. KG
Kattwinkel 1 | 32584 Löhne | Deutschland

Fon: +495732 102-379
Fax: +495732 102-300
Mail: mschm...@bauformat.de<mailto:mschm...@bauformat.de>
Internet: www.bauformat.de<http://www.bauformat.de>

[cid:Logo_BAUFORMAT_sw_130px_61b65919-4a79-4edc-a81a-8b84d76dc540.png]

Umsatzsteuer-Identifikationsnummer: DE 124323068 - Steuer-Nr.: 310/5705/0461 / 
Finanzamt Bünde - Handelsregister Bad Oeynhausen HRA 1801
Komplementärin: Bauformat Küchen Verwaltungs GmbH - Handelsregister Bad 
Oeynhausen HRB 1465
Geschäftsführer: Michael Assner, Matthias Berens, Sabine Brockschnieder

[cid:Email_Banner_TOP100_2025_low_c7e2850c-d1e8-4332-bf08-dc1c8c4377be.jpg]<https://www.bauformat.de>

Wir erfüllen unsere Informationspflichten zum Datenschutz gem. Artt. 13-14 
DS-GVO durch Veröffentlichung auf unserer Internetseite unter:
www.bauformat.de/datenschutz<http://www.bauformat.de/datenschutz> oder durch 
Zusendung auf Ihre formlose Anfrage.

Reply via email to