This invention relates to the field of browsing a list of data items, and more particularly, to identifying different cooperating groups of browser mechanisms.
A list of data items to be browsed is provided. The list can be any collection of data items which may be built on the fly or may pre-exist. A list of data items is defined in a broad sense and may include a database, a list of files, a messaging queue, pages from an online system such as the Internet, etc.
Browsing a list of data items involves scanning through the list of data items or references to the data items. Browsing involves observing the data in the list in a non-destructive manner. A browser scans through the list reading all or part of the data items without removing or changing the data. A browser can copy data items during browsing but does not destroy or alter the original list of data items being browsed.
Browsing may be carried out to identify a specific data item, to search for data items that match search criteria, or to locate anything that looks to be of interest where the browser reads part of the data item or a heading and decides on the fly if it is of interest.
One or more browsers may typically establish what data items exist on a list and may organise the data items, for example, by allocating the data items to other processor threads to carry out actions on the data items. Other processor threads may actually remove the data items from the list in order to process them.
A list of data items may include the data items in an order according to a wide number of systems. Data items may be prioritised in a certain order, they may be chronological, alphabetical, by subject, etc. This means that a data item that is added to a list may be added in any position in the list.
In a messaging system in which the list of data item is a message queue, both destructive message retrieval and non-destructive message retrieval (browse) may be used. Messaging applications which browse a queue of messages looking for messages which meet certain criteria and, once a suitable message is found, may be written to perform a destructive get of that message.
As an example, a message queue may contain red, amber and green messages and an application may wish to consume all of the green messages. The application may browse the queue and remove each green message, thus every message would be read once all of the green messages are read once (with a non-destructive get operation) and removed (with a destructive get operation). However, if N multiple instances of the application were executed in parallel and one instance of this application could not remove the green messages fast enough (which may happen because the destructive get operation involves physical input/output), then each red and amber message in the queue would be read N times.