|
Nirvana provides
a mechanism for browsing (peeking) queues. Queue browsing
is a non-destructive read of events from a queue. The
queue reader used by the peek will return an array of
events, the size of the array being dependent on how
many events are in the queue, and the window size defined
when your reader context is created. For more information,
please see the Nirvana Client API documentation.
An example of a queue browser is shown below:
public class myQueueBrowser {
nQueueReader reader = null;
nQueuePeekContext ctx = null;
nQueue myQueue = null;
public myQueueBrowser() throws Exception {
// construct
your session
and queue objects
here
// create the queue
reader
reader = myQueue.createReader(new
nQueueReaderContext());
ctx = nQueueReader.createContext(10);
}
public void start() throws Exception {
boolean more = true;
long eid =0;
while (more) {
// browse (peek)
the queue
nConsumeEvent[] evts = reader.peek(ctx);
for (int x=0; x < evts.length; x++) {
go(evts[x]);
}
more = ctx.hasMore();
}
}
public void go(nConsumeEvent event) {
System.out.println("Consumed event "+event.getEventID());
}
public static void main(String[] args) {
try {
myQueueBrowser qbrowse = new myQueueBrowser();
qbrowse.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Queue browsers can also be created using a selector,
which defines a set of event
properties and their values that a browser is interested
in. For example if events are being published with the
following event properties:
nEventProperteis props =new nEventProperties();
props.put(“BONDNAME”,”bond1”);
If you then provide a message selector string in the
form of:
String selector = "BONDNAME='bond1'";
And pass this string into the constructor for the nQueuePeekContext
object shown in the example code, then your browser
will only receive messages that contain the correct
value for the event property BONDNAME.
An example of an queue browser can be found here.
For more information on Nirvana message queues, please
see the API documentation.
|