Was ist die algorithmische Zeitkomplexität beim Anwenden von JMS-Selektoren beim Verbrauchen von Nachrichten aus einer Warteschlange in Bezug auf die Warteschlangentiefe n? Insbesondere ist es linear (O (n)) pro gelesen? Ist es implementierungsabhängig (auf dem JMS-Provider) und hängt es davon ab, welche Felder angefordert werden?Wie skalieren JMS-Selektoren mit der Warteschlangentiefe?
(wenn implementierungsabhängig, bin ich besonders interessiert an Websphere MQ und Solace Verhalten, aber ich begrüße Antworten, die mit einem bestimmten JMS-Anbieter, vor allem, wenn Sie Links zu Dokumentation beschreiben die Komplexität!).
Motivation: Jede Nachricht hat zwei Eigenschaften: eine invocationID
und eine batchName
. Ein Batch besteht aus mehreren Aufrufen. Clients möchten Nachrichten auf zwei Arten konsumieren. entweder durch invocationID
oder durch batchName
. An dem Punkt, an dem Nachrichten produziert werden, weiß ich nicht, mit welcher Methode sie konsumiert werden.
Diese durch Selektoren realisiert werden kann:
invocationID=42
Oder
batchName="reconciliation"
... und ich kann unter Verwendung der Korrelations-ID anstelle einer benutzerdefinierten Eigenschaft eines dieser nach oben beschleunigen, aber bin besorgt, dass der andere langsam bleiben wird.
Große Frage! Ich vermute, das ist sehr schwierig, eine gute Antwort zu bekommen, aber es ist offensichtlich von grundlegender Bedeutung, bestimmte architektonische Entscheidungen zu treffen. –
Danke @Tomanderson! – bacar