相对于队列深度n ,在使用队列中的消息时应用 JMS 选择器的算法时间复杂度是多少?特别是,每次读取是否为线性 (O(n))?它是否依赖于实现(依赖于 JMS 提供者),是否依赖于请求的字段?
(如果依赖于实现,我对 Websphere MQ 和 Solace 的行为特别感兴趣,但我欢迎处理任何特定 JMS 提供者的答案,特别是如果您有指向描述复杂性的文档的链接!)。
动机:每条消息都有两个属性:aninvocationID
和 a batchName
。一个批处理由多个调用组成。客户希望以两种方式之一消费消息;通过invocationID
或 通过batchName
。在产生消息的那一刻,我不知道它们将通过哪种方法被消耗。
这可以通过选择器来实现:
invocationID=42
或者
batchName="reconciliation"
...我可以通过使用相关 ID 而不是自定义属性来加速其中一个,但我担心另一个会保持缓慢。