【问题标题】:Delete specific message in activemq queue from c#从c#中删除activemq队列中的特定消息
【发布时间】:2014-09-17 05:10:09
【问题描述】:

我正在使用 C# 和 activemq 进行编码,使用 NMS 和 apache-activemq-5.9.1。我想在发送时为每条消息在自定义属性中设置一个唯一的 guid,然后我可以通过它删除特定消息guid(不清除队列,仅删除其中的一条消息)。我在Can I delete a message from a queue of ActiveMQ in c# code? 找到了类似的问题,但没有答案,所以我再问一次。

【问题讨论】:

    标签: c# activemq


    【解决方案1】:

    在这方面,您只能使用 NMS API 做两件事。第一个是删除整个目的地,如referenced 问题所示。

    第二种方法是使用分配了选择器的消费者,该选择器仅匹配您要丢弃的消息。消费者将接收并确认将从代理中删除它的消息。这仅在队列深度不太大以至于消息存储在消息存储中并且由于 ActiveMQ 中的 maxPageSize 设置不够大而不会被分页时才有效。

    唯一的其他解决方案是使用 Jolokia 提供的 REST API 来访问 ActiveMQ MBean 并尝试以这种方式删除消息,但是您仍然会遇到消息处于脱机存储中而无法存储的问题分页删除。

    这里的根本问题是您试图将 ActiveMQ 用作数据库,而它(或任何其他 JMS 代理)并不打算使用它。这是一个经常出现的反模式。如果您想以 DB 方式访问消息,然后使用 DB,您将为自己节省大量时间和精力。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-28
      • 1970-01-01
      • 2012-07-09
      • 2014-02-13
      • 1970-01-01
      • 2013-11-22
      • 1970-01-01
      • 2016-08-28
      相关资源
      最近更新 更多