JMS:更新消息版本/阻止某些消息排队

时间:2013-05-29 10:15:00

标签: c# .net jms activemq

我正在尝试使用.NET客户端创建基于ActiveMQ的基于消息的应用程序。

  • 客户端1:Web服务(生产者)
  • 客户端2:Windows服务(消费者)

我的问题是:是否可以阻止某种类型或内容的邮件被客户排队?

我想要这样做的原因是版本更新。

我认为有一段时间,我需要扩展或更改消息类型。 我的计划是按以下顺序进行更新:

  1. 防止旧版本的邮件排队。
  2. 等到消费者处理旧版本的所有消息。
  3. 更新生产者和消费者软件。
  4. 我希望Web服务在更新过程中仍然可用,以报告回调用。但它不应该能够排队新消息。

    当然,如果有更好的解决方法,请告诉我。

1 个答案:

答案 0 :(得分:2)

作为一般规则,每个队列只有一种类型的有效负载是个好主意。一种简单的方法是为两个不同的消息版本使用两个不同的队列。类似的东西:

mysystem.orders.1_0
mysystem.orders.1_1

版本应该是队列名称的最后一部分,因为它可以很容易地使用wildcards,它们用于ActiveMQ中的许多配置选项。

将不同的版本拆分到不同的队列可以解决必须同时升级生产者和消费者的问题,并且还可以让您了解是否已经消耗了所有1_0消息。