使用 artemis-jms-client 从 ActiveMQ Artemis 接收会抛出 InvalidDestinationException

Receiving from ActiveMQ Artemis with artemis-jms-client throws InvalidDestinationException

我的代码中有这个

consumer = session.createConsumer(session.createQueue("myQueue"));

抛出以下异常

javax.jms.InvalidDestinationException: AMQ119019: Queue already exists test_simple_transaction_receiver
        at org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl.sendBlocking(ChannelImpl.java:406)
        at org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl.sendBlocking(ChannelImpl.java:304)
        at org.apache.activemq.artemis.core.protocol.core.impl.ActiveMQSessionContext.createQueue(ActiveMQSessionContext.java:546)
        at org.apache.activemq.artemis.core.client.impl.ClientSessionImpl.internalCreateQueue(ClientSessionImpl.java:1622)
        at org.apache.activemq.artemis.core.client.impl.ClientSessionImpl.createQueue(ClientSessionImpl.java:249)
        at org.apache.activemq.artemis.jms.client.ActiveMQSession.createConsumer(ActiveMQSession.java:628)
        at org.apache.activemq.artemis.jms.client.ActiveMQSession.createConsumer(ActiveMQSession.java:331)
        at consumeMessage(ReceiverClient.java:143)

我使用了错误版本的 artemis-jms-client。我的经纪人是 Artemis 2.0.0,我使用 artemis-jms-client 1.5.3.

使用匹配的客户端库版本,接收工作。

这个错误我已经犯过一次了,所以我在这里发帖以防它帮助到别人,或者我第三次。

Artemis 2.0.0 有一个新的寻址模型。如果您需要向后兼容,您必须以旧客户端连接的方式配置接受器。

所以,我建议只更新您的客户端。