The issue is with enable1xPrefix.
I have created the relevant org.apache.activemq.artemis.api.jms.ActiveMQJMSClient.properties file and set this value to false. But it
gets overridden when the wildfly server starts up.
I have turned "trace" on and I see where setEnable1xPrefix is set to true. I still don't quite know what is causing it so I will keep
debugging it.
Hopefully somebody may know what this is doing. Crossing my fingers.
This is the relevant code in ActiveMQMessageHandler.java that is causing the
exception that I have included in this email chain.
Around line 145:
SimpleString oldTopicName = (enable1XPrefix && !subResponse.getAddress().startsWith(PacketImpl.OLD_TOPIC_PREFIX) ?
PacketImpl.OLD_TOPIC_PREFIX : SimpleString.toSimpleString("")).concat(subResponse.getAddress());
boolean topicChanged = !oldTopicName.equals(activation.getAddress());
The topic name changed, so it tries to delete it, but it says there is already a consumer on it. The consumer is NOT one that I have
created, as the stack trace shows it is a "LocalQueueBinding", not quite sure what that means yet.
So, it fails. The subResponse.getAddress does NOT start with the old prefix, so
it tries to add it.
I have tried adding the prefix to the topic in there broker.xml.. did not work.
I have put the "multicastPrefix" in the acceptors, but that did not work,
either.
If anybody knows, I would be more than grateful for the solution. Thank you.
--------------------------------------------------------------------------------------------------------------------------------------------
*From:* Tony Lewis
*Sent:* Thursday, June 13, 2024 1:08:11 PM
*To:* dev@activemq.apache.org
*Subject:* Re: Shared Durable Subscription Problem.
Thank you for your reply and please pardon not including the whole stack. My
mistake.
Here it is:
2024-06-13 13:30:41,540 WARN [org.apache.activemq.artemis.ra.ActiveMQRALogger] (default-threads - 1) AMQ152005: Failure in broker
activation
org.apache.activemq.artemis.ra.inflow.ActiveMQActivationSpec(ra=org.wildfly.extension.messaging.activemq.ActiveMQResourceAdapter@e45ad389
destination=java:global/remoteContext/flowDataChannel destinationType=javax.jms.Topic ack=Auto-acknowledge durable=true clientID=null
subscription=DataProcessor user=null maxSession=15): ActiveMQIllegalStateException[errorType=ILLEGAL_STATE message=AMQ229025: Cannot
delete queue DataProcessor on binding DataProcessor - it has consumers = org.apache.activemq.artemis.core.postoffice.impl.LocalQueueBinding]
at
org.apache.activemq.artemis@2.19.1//org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl.sendBlocking(ChannelImpl.java:549)
at
org.apache.activemq.artemis@2.19.1//org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl.sendBlocking(ChannelImpl.java:443)
at
org.apache.activemq.artemis@2.19.1//org.apache.activemq.artemis.core.protocol.core.impl.ActiveMQSessionContext.deleteQueue(ActiveMQSessionContext.java:348)
at
org.apache.activemq.artemis@2.19.1//org.apache.activemq.artemis.core.client.impl.ClientSessionImpl.deleteQueue(ClientSessionImpl.java:766)
at
org.apache.activemq.artemis.ra@2.19.1//org.apache.activemq.artemis.ra.inflow.ActiveMQMessageHandler.setup(ActiveMQMessageHandler.java:151)
at
org.apache.activemq.artemis.ra@2.19.1//org.apache.activemq.artemis.ra.inflow.ActiveMQActivation.setup(ActiveMQActivation.java:317)
at
org.apache.activemq.artemis.ra@2.19.1//org.apache.activemq.artemis.ra.inflow.ActiveMQActivation$SetupActivation.run(ActiveMQActivation.java:763)
at
org.wildfly.extension.messaging-activemq//org.wildfly.extension.messaging.activemq.ActiveMQResourceAdapter$WorkWrapper.run(ActiveMQResourceAdapter.java:160)
at
org.jboss.ironjacamar.impl@1.5.3.Final//org.jboss.jca.core.workmanager.WorkWrapper.runWork(WorkWrapper.java:445)
at
org.jboss.as.connector@26.1.3.Final//org.jboss.as.connector.services.workmanager.WildflyWorkWrapper.runWork(WildflyWorkWrapper.java:69)
at
org.jboss.ironjacamar.impl@1.5.3.Final//org.jboss.jca.core.workmanager.WorkWrapper.run(WorkWrapper.java:223)
at
org.jboss.threads@2.4.0.Final//org.jboss.threads.SimpleDirectExecutor.execute(SimpleDirectExecutor.java:29)
at
org.jboss.threads@2.4.0.Final//org.jboss.threads.QueueExecutor.runTask(QueueExecutor.java:789)
at
org.jboss.threads@2.4.0.Final//org.jboss.threads.QueueExecutor.access$100(QueueExecutor.java:44)
at
org.jboss.threads@2.4.0.Final//org.jboss.threads.QueueExecutor$Worker.run(QueueExecutor.java:809)
at java.base/java.lang.Thread.run(Thread.java:833)
at
org.jboss.threads@2.4.0.Final//org.jboss.threads.JBossThread.run(JBossThread.java:513)
Then Wildly server is connecting to an external Artemis broker.
The Wildfly server is running Artemis modules 2.19.1. The external broker is
2.33.
I have been trying to upgrade the Wildfly server to 2.33.0 but now I am getting
slf4j class not found errors. So that's another issue.
I have just successfully created durable shared subscribers to the 2.33.0 Artemis broker with a little standalone program, non-JEE using
the following methods:
session.createSharedDurableConsumer((Topic) destination, name)
session.createDurableSubscriber((Topic) destination, name))
session.createSharedConsumer((Topic) destination, name)
session.createConsumer(destination));
When invoking the "shared" methods, I do not set the connection's client IDand
everything works as expected.
So, I'm guessing it is going to be a Wildfly issue.
--------------------------------------------------------------------------------------------------------------------------------------------
*From:* Clebert Suconic <clebert.suco...@gmail.com>
*Sent:* Thursday, June 13, 2024 11:16:06 AM
*To:* dev@activemq.apache.org
*Subject:* Re: Shared Durable Subscription Problem.
something is trying to remove a queue, but it's not allowing it because it had consumers. Post the whole stack trace.. You should have
used us...@activemq.apache.org though. Also you didn't provide mu
*Caution!* This message is potentially suspicious.
(From: clebert.suco...@gmail.com <mailto:clebert.suco...@gmail.com>, External)
*First-Time Sender*
This is the first message you've received from this sender. Be careful when
replying or interacting with any attachments or links.
something is trying to remove a queue, but it's not allowing it
because it had consumers.
Post the whole stack trace..
You should have used us...@activemq.apache.org though.
Also you didn't provide much information about what's happening...
I'm providing you an answer based on the little you posted.
On Thu, Jun 13, 2024 at 10:09 AM Tony Lewis <tle...@securelogix.com> wrote:
>
> I am having a problem with an MDB running on Wildfly 26.1.3. Artemis 2.33.
>
>
> This is the configuration for the MDB:
>
>
> @MessageDriven(activationConfig={
>
> @ActivationConfigProperty(propertyName="destinationLookup",
propertyValue="java:global/remoteContext/dataChannel")
>
> ,@ActivationConfigProperty(propertyName="destinationType",
propertyValue="javax.jms.Topic")
>
> ,@ActivationConfigProperty(propertyName="subscriptionDurability", propertyValue
="Durable")
>
> ,@ActivationConfigProperty(propertyName="subscriptionName",
propertyValue="DataProcessor")
>
> ,@ActivationConfigProperty(propertyName = "shareSubscriptions",
propertyValue="true")
>
>
>
>
> And this is the broker.xml for artemis:
>
>
> <address-setting match="dataChannel">
>
> <dead-letter-address>DLQ</dead-letter-address>
>
> <expiry-address>ExpiryQueue</expiry-address>
>
> <max-delivery-attempts>-1</max-delivery-attempts>
>
> <redelivery-delay>10000</redelivery-delay>
>
> <max-redelivery-delay>100000</max-redelivery-delay>
>
> <redelivery-delay-multiplier>1.5</redelivery-delay-multiplier>
>
> <!-- with -1 only the global-max-size is in use for limiting -->
>
> <max-size-bytes>-1</max-size-bytes>
>
>
<message-counter-history-day-limit>10</message-counter-history-day-limit>
>
> <address-full-policy>PAGE</address-full-policy>
>
> <auto-create-queues>true</auto-create-queues>
>
> <auto-create-addresses>true</auto-create-addresses>
>
> <auto-create-jms-queues>true</auto-create-jms-queues>
>
> <auto-create-jms-topics>true</auto-create-jms-topics>
>
> </address-setting>
>
> ...
>
> <address name="dataChannel">
>
> <multicast>
>
> <queue name="DataProcessor" max-consumers="15">
>
> <durable>true</durable>
>
> </queue>
>
> </multicast>
>
> </address>
>
>
>
> This is the wildfly log on start up:
>
> ```
>
> 2024-06-13 13:31:17,442 ERROR [org.apache.activemq.artemis.ra.ActiveMQRALogger] (default-threads - 1) AMQ154003: Unable to reconnect
org.apache.activemq.artemis.ra.inflow.ActiveMQActivationSpec(ra=org.wildfly.extension.messaging.activemq.ActiveMQResourceAdapter@e45ad389
destination=java:global/remoteContext/dataChannel destinationType=javax.jms.Topic ack=Auto-acknowledge durable=true clientID=null
subscription=DataProcessor user=null maxSession=15): ActiveMQIllegalStateException[errorType=ILLEGAL_STATE message=AMQ229025: Cannot
delete queue DataProcessor on binding DataProcessor - it has consumers = org.apache.activemq.artemis.core.postoffice.impl.LocalQueueBinding]
>
> ```
>
>
> This identical code worked in Wildly 18 and Artemis 2.17.
>
> I have tried just about every combination that I can think of, but I think
I'm at my wit's end.
>
> If anyone can give me a hand here, I would greatly appreciate it.
>
>
--
Clebert Suconic
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@activemq.apache.org
For additional commands, e-mail: dev-h...@activemq.apache.org
For further information, visit: https://activemq.apache.org/contact
<https://url.emailprotection.link/?bbhUssy9NPhVM3wTEVsgO7vdLNiutZIlBM-S5lvxolU4i89891M_a2F_txMMVj2H6L4SAOMGhiVSSlyeYmksYygCncUDLBRw5IM7ZWHs892s9wlAV-jePNCUyJdsxZ2iO>