Apache Artemis:如何将 JMS 消息移动到不同的队列
Apache Artemis: How to move JMS messages to a different queue
Artemis 的新版本 removed class JMSQueueControl
以及与之关联的所有 classes。
我们的项目使用JMSAPI来send/receive/listen,以及管理。我们需要管理队列,包括通过 JMS 消息 ID 将消息从一个队列移动到另一个队列,它是 String
的 GUID 类型。
Artemis 2.2.0 的新版本有一个 QueueControl#moveMessage(long)
,它显然对内部消息 ID(而不是 JMS 消息 ID)进行操作。
问题是:如何使用 Artemis 版本 2.X 中的 JMS 消息 ID 将消息从一个队列移动到另一个队列?
您可以使用的管理方式:
org.apache.activemq.artemis.api.core.management.QueueControl#moveMessages(java.lang.String, java.lang.String)
它以“过滤器”作为第一个参数。您可以使用过滤器:
AMQUserID='<jmsMessageId>'
AMQUserID
:这是指用户设置的ID。在本例中,它是 JMS 消息 ID(即由 JMS 客户端设置的 ID)。它不涉及安全凭证。
<jmsMessageId>
:这是您要移动的 JMS 消息的消息 ID。这就是 JMSQueueControl
首先在幕后所做的事情。
明确地说,在添加对 AMQP、STOMP 和 MQTT 的支持后,JMSQueueControl
(以及所有其他特定于 JMS 的管理和配置 类)被移除,因为它不再使用单独的特定于 JMS 的方法来完成核心管理已经提供的相同事情是有意义的 API。
Artemis 的新版本 removed class JMSQueueControl
以及与之关联的所有 classes。
我们的项目使用JMSAPI来send/receive/listen,以及管理。我们需要管理队列,包括通过 JMS 消息 ID 将消息从一个队列移动到另一个队列,它是 String
的 GUID 类型。
Artemis 2.2.0 的新版本有一个 QueueControl#moveMessage(long)
,它显然对内部消息 ID(而不是 JMS 消息 ID)进行操作。
问题是:如何使用 Artemis 版本 2.X 中的 JMS 消息 ID 将消息从一个队列移动到另一个队列?
您可以使用的管理方式:
org.apache.activemq.artemis.api.core.management.QueueControl#moveMessages(java.lang.String, java.lang.String)
它以“过滤器”作为第一个参数。您可以使用过滤器:
AMQUserID='<jmsMessageId>'
AMQUserID
:这是指用户设置的ID。在本例中,它是 JMS 消息 ID(即由 JMS 客户端设置的 ID)。它不涉及安全凭证。<jmsMessageId>
:这是您要移动的 JMS 消息的消息 ID。这就是JMSQueueControl
首先在幕后所做的事情。
明确地说,在添加对 AMQP、STOMP 和 MQTT 的支持后,JMSQueueControl
(以及所有其他特定于 JMS 的管理和配置 类)被移除,因为它不再使用单独的特定于 JMS 的方法来完成核心管理已经提供的相同事情是有意义的 API。