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

本文关键字:消息排队 更新 新消息 版本 JMS | 更新日期: 2023-09-27 18:15:56

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

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

我的问题是:是否有可能阻止某种类型或内容的消息被客户端排队?

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

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

  1. 禁止旧版本消息排队
  2. 等待消费者处理完所有旧版本的消息。
  3. 更新生产者和消费者软件。

我希望Web服务在更新过程中仍然可用,以便向调用报告。但是它不应该能够将新消息排队。

当然,如果有更好的方法来解决这个问题,请告诉我。

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

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

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

版本应该是队列名称的最后一部分,因为它使通配符更容易使用,通配符用于ActiveMQ中的许多配置选项。

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