如何从 JMS 队列中删除消息?



我有几个作业,每个作业都有多个消息排队。 每个作业的消息是随机交错的。 如果用户决定取消作业,我想从队列中删除属于该作业的所有消息。 我已经能够使用browse()找到所有要删除的邮件,但无法弄清楚如何删除它们。 我试图通过使用receiveSelected()摆脱它们,但它只是挂起。 (我正在使用JmsTemplate(

JMS 不定义管理类型函数,例如从队列中删除消息。

编程方式是使用消息。或者,有一些消息传递管理工具允许您无需编程即可执行此操作。

没有任何 JMS API 可以删除消息。但是,您似乎可以根据对MBeanorg.apache.activemq:type=Broker,brokerName=amq,destinationType=Queue,destinationName=testQ的要求调用purgeremoveMessage或其他操作来删除消息。

你走在正确的轨道上。使用选择器使用这些消息是要走的路 - 例如使用 JmsTemplate receiveSelected。

如果它"挂起",则可能意味着队列中没有匹配的消息。你能在某些属性上识别你的消息吗,比如JMSType或其他StringProperty?确保您可以并提供一个 JMS 选择器。

即,如果您的作业是由用户 X 启动的,则将一些属性(如"initiatingUser"(设置为"x"。然后,要使用所有消息,请使用选择器initiatingUser='X'

相关内容

  • 没有找到相关文章

最新更新