需要选择器的JMS队列

时间:2011-09-20 08:53:07

标签: queue jms selector

我想实现一个JMS队列,以确保每条消息只传递给一个消费者。听取队列会有许多不同类型的消费者。消息应该具有标识所需工作类型的属性,并且消费者选择器使用这些属性来确保它们仅被发送到他们可以处理的工作。

我的问题是如何确保当消费者向Queue注册为消费者时,他们实现了一个选择器以避免出现以下情况。

如果我有3种消息类型(A,B和C)和3个消费者(a,b和c),每个消费者只消费1种消息类型,如下所示:a-> A b-> B c-> C然后所有类型A的消息将被发送到1,所有类型B的消息将被发送到2等。

我想阻止有人注册没有选择器的新消费者(d),因为这个消费者意味着A,B,C类型的消息现在要么转发给他们的消费者,要么消费者消费者。

或者,我希望队列优先考虑消费者,这些消费者的选择器与没有选择器的消费者匹配。

聚苯乙烯。可能的消费者和消息类型的列表是动态的,而不是我的控制,我为什么没有每个消息类型的队列。

1 个答案:

答案 0 :(得分:1)

您无法在JMS API实现级别上实现它。我认为最好的办法是对代理中的队列施加安全限制,例如应用程序必须提供的用户/密码才能读取队列,并且只有您的应用程序才能知道。请咨询您的JMS提供商文档如何操作,它是任何严肃的JMS提供商的标准功能。

我有一种感觉,出于安全原因你不想要它,而是为了稳定,你自己的安心,或“以防万一”。您可能必须说服贵公司管理您公司的队列是否合理。