Apache Artemis:如何将JMS消息移动到不同的队列



新版本的Artemis删除了类JMSQueueControl和与之相关的所有类。

我们的项目使用 JMS API 来发送/接收/监听以及管理。我们需要管理队列,包括通过 JMS 消息 ID 将消息从一个队列移动到另一个队列,JMS 消息 ID 是 GUID 类型的String

新版本的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已经提供的相同事情不再有意义。

相关内容

  • 没有找到相关文章

最新更新