Hi Community.
I have an application that uses HornetQ (2.4.1.Final). It's a pretty simple
setup (no HA) - it uses the HornetQ protocol (rather than JMS) and an embedded
server. There are about a dozen clients, each in their own JVM, that talk to
the server. It all works really well, and has done for over 5 years.
In order to move with the times, I decided to update the version of HornetQ we
use, and that means migrating to Apache ActiveMQ (2.19.0). The process was
very straightforward, and required very little code changes. It literally was
a case of changing things like HornetQServer to ActiveMQServer.
To give a rough idea of the configuration:
final Configuration configuration = new ConfigurationImpl();
configuration.setPersistenceEnabled(false);
configuration.setJournalDirectory(System.getProperty("java.io.tmpdir"));
configuration.setCreateJournalDir(false);
configuration.setSecurityEnabled(false);
configuration.getAcceptorConfigurations().add(new
TransportConfiguration(this.acceptor.getName()));
configuration.setClusterUser("unused");
configuration.setClusterPassword("disabled");
// final HornetQServer server = HornetQServers.newHornetQServer(configuration);
final ActiveMQServer server = ActiveMQServers.newActiveMQServer(configuration);
server.start();
...
this.locator = ActiveMQClient.createServerLocatorWithoutHA(
new TransportConfiguration("(a name)");
this.locator.setAckBatchSize(1);
this.locator.setPreAcknowledge(true);
this.locator.setReconnectAttempts(RETRY_FOREVER);
this.locator.setCallTimeout(120_000);
this.locator.setConnectionTTL(300_000);
...
final QueueConfiguration qc = new QueueConfiguration(queueName);
qc.setAddress("(a queue name)");
qc.setTemporary(true);
qc.setDurable(false);
this.session.createQueue(qc);
None of this changed between using HornetQ and using ActiveMQ.
Now, to the problem ...
On the face of it, everything works perfectly. However, after a variable
amount of time, I get the following:
WARN : o.a.a.a.u.critical.CriticalMeasure: Component
org.apache.activemq.artemis.core.server.impl.QueueImpl is expired on path 0
WARN : o.a.activemq.artemis.core.server: AMQ224081: The component
QueueImpl[name=faff23f5-fdec-48d3-aad2-591c553b2bdf, postOffice=PostOfficeImpl
[server=ActiveMQServerImpl::name=localhost], temp=true]@3b4d33ea is not
responsive
Even when this occurs, the application continues to behave correctly -- in
other words, messages do appear to keep flowing on that queue. Also note that
it's not the same queue that fails each time - and it's never more than one
queue.
As I understand it, the default timeout period is quite large (120 seconds, as
per
https://activemq.apache.org/components/artemis/documentation/latest/critical-analysis.html)
-- and I can say that the application remains responsive during these times
... so my question to the list is then: why am I getting this expiry
notification.
If I can provide any further context to help further this discussion, please
let me know.
Thanks for your help.
Kindest regards,
--
Greg