You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Steffen Vinther Sørensen <sv...@gmail.com> on 2021/05/28 08:42:16 UTC

ActiveMQ 5.x and Artemis compatibility

Hi all,

Being inexperienced with messaging and ActiveMQ, I considered
replacing an ActiveMQ 5.16 broker installation with Artemis, and I
wonder if this is possible without having to upgrade the Java based
clients ?

On the Artemis broker, I have a simple acceptor:
<acceptor name="withoutssl">tcp://0.0.0.0:61616?securityDomain=withoutssl</acceptor>

I do a JMS test where I use the ActiveMQ deps like this:
<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-all</artifactId>
    <version>5.16.2</version>
</dependency>

But upon sending a message I get this Exception:
javax.jms.JMSSecurityException: AMQ229213: User: client1 does not have
permission='CREATE_NON_DURABLE_QUEUE' for queue
c4146f5e-4d97-448c-b8b0-2e6001bfe499 on address
ActiveMQ.Advisory.TempQueue
at org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection.convertException(OpenWireConnection.java:415)
at org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection.act(OpenWireConnection.java:327)
at org.apache.activemq.artemis.utils.actors.Actor.doTask(Actor.java:33)
at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65)
at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
at org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)


What is up with that. Advisory TempQueue ?

/Steffen

Re: ActiveMQ 5.x and Artemis compatibility

Posted by Domenico Francesco Bruscino <br...@gmail.com>.
Hi Steffen,

your application is getting the `AMQ229213` error[1] because artemis uses
not durable queue to implement the ActiveMQ Advisory Message[2].

To fix this error grant the `createNonDurableQueue` permission to the
`client1` user[3] or disable the advisory support adding the
`supportAdvisory=false` to the acceptor, ie:

<acceptor name="artemis">tcp://0.0.0.0:61616?supportAdvisory=false
</acceptor>

[1] AMQ229213: User: client1 does not have
permission='CREATE_NON_DURABLE_QUEUE' for queue
c4146f5e-4d97-448c-b8b0-2e6001bfe499 on address ActiveMQ.Advisory.TempQueue

[2] https://activemq.apache.org/advisory-message

[3]
https://activemq.apache.org/components/artemis/documentation/latest/security.html

Regards,
Domenico

On Fri, 28 May 2021 at 10:42, Steffen Vinther Sørensen <sv...@gmail.com>
wrote:

> Hi all,
>
> Being inexperienced with messaging and ActiveMQ, I considered
> replacing an ActiveMQ 5.16 broker installation with Artemis, and I
> wonder if this is possible without having to upgrade the Java based
> clients ?
>
> On the Artemis broker, I have a simple acceptor:
> <acceptor name="withoutssl">tcp://0.0.0.0:61616?securityDomain=withoutssl
> </acceptor>
>
> I do a JMS test where I use the ActiveMQ deps like this:
> <dependency>
>     <groupId>org.apache.activemq</groupId>
>     <artifactId>activemq-all</artifactId>
>     <version>5.16.2</version>
> </dependency>
>
> But upon sending a message I get this Exception:
> javax.jms.JMSSecurityException: AMQ229213: User: client1 does not have
> permission='CREATE_NON_DURABLE_QUEUE' for queue
> c4146f5e-4d97-448c-b8b0-2e6001bfe499 on address
> ActiveMQ.Advisory.TempQueue
> at
> org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection.convertException(OpenWireConnection.java:415)
> at
> org.apache.activemq.artemis.core.protocol.openwire.OpenWireConnection.act(OpenWireConnection.java:327)
> at org.apache.activemq.artemis.utils.actors.Actor.doTask(Actor.java:33)
> at
> org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65)
> at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42)
> at
> org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31)
> at
> org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:65)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> at
> org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118)
>
>
> What is up with that. Advisory TempQueue ?
>
> /Steffen
>