【发布时间】:2011-11-20 21:38:27
【问题描述】:
我想实现一个 JMS 队列以确保每条消息只传递给一个消费者。听队列时会有很多不同类型的消费者。消息应该具有标识所需工作类型的属性集,这些属性由消费者选择器使用,以确保它们只收到他们可以处理的发送工作。
我的问题是如何确保当消费者以消费者身份向队列注册时,他们实现了选择器以避免以下情况。
如果我有 3 种消息类型(A、B 和 C)和 3 个消费者(a、b 和 c),每个消费者只消费 1 种消息类型,如下所示:a->A b->B c->C 那么所有类型 A 的消息将发送到 1,类型 B 的所有消息将发送到 2 等等。
我想阻止某人注册一个没有选择器的新消费者 (d),因为这个消费者意味着 A、B、C 类型的消息现在要么发送给他们的预期消费者,要么可能发送给消费者 d。
或者,我希望队列优先考虑具有选择器的消费者,而不是没有选择器的消费者。
附言。可能的消费者和消息类型的列表是动态的,不在我的控制范围内,这就是为什么我没有为每种消息类型设置队列的原因。
【问题讨论】: