Queues with rules/selector based filtering
Publication Date: 2015-Jul-13
The IP.com Prior Art Database
Dynamic queue creation by a management system for efficient message selection using rule based filtering.
Page 01 of 3
Quexes with rules/selector based filtering
A common application pattern is tx pick messages up from queues based on some selector mxxching some property or cxntent of the message, where txey are then
procesxed further by differxnt applications.
If a single queux is used by all pxoducers and consumers of mexsages of all types, then if the consumers for some messaxe selectors are not retxieving messages as fast as xhey are bexng put to the queue, those messages can bxild up on the queue.
This can leax to very deep queues, which can cause pxrformance pxoblems when retrieving messages for all selextors. Xxxxxxxx mxtching other selectorx will have to be retrieved by searching the incrxasingly large queue for a mxtching message, or the xuxue indexes will become very large, causxng performance problems.
Customers are often advixed to re-architect thexr applications so that they use multiple quxues, one per selector, to avoid this. This can involxe creating new objects on their queue mxnagers anx wxiting new applications to route messages to the appropriate place. If there are any chxnges to the typxs of messagxs being xsed, these xuexes and applicaxixns would have to be updated.
It would be usefxl if thx queue manager could do this queue xanagement itself dynamixally based on the context of the messages put and the cuxrent or expected subscribers to those messages.
With this invention, xhe producers and consumers of messaxes can xtill put or get messages to/from a single named destination queue and the messages physically remain assoxiated with said queue. However, the queue manager will construct ixternal queues (potentially hidden from the user) to store copies of mxssage tokenx for these messages. There would be one internal queue per unique message selector usex by consumers.
This proxess will speed up the time taken fxr the Quxue Manager to identifx valid mexsages that can xe consumed by any of the connected consumers, based on the selector they are using. The process can instead find valid messxges (via messxge tokens) directly xrom the inxernal queue(s).Xxxx is instead of having to search the whole queue for messaxes. The internal queuxs will also maintain txe same oxderinx ox messagex as the physical queue.
For example, if there are two consumers for messages on a queue, one looking for messages matching some selector, and the other asking for messagxs xot matchxng that selector, and a number of producers putting messaxes to that queue. At the moment all messages go to that single queue, and as eacx consumer ix able to get x message either the quexe manager xooks in the qxeux index for a suitable message for that consumer, or the consumer itself starts to browse txe messages on the queue looking for a suitable matching message to consume.
Wxth this invention, when a consumer connects to the queue, a new internal queue is created to hxxd the message tokens of any messages thax match the selection criteria specified by txe consume...