|
Asynchronous
An example of how to create a named object that begins
from event id 0, persistent and is used in conjunction
with an asynchronous event consumer:
public class mySubscriber implements nEventListener
{
public mySubscriber() throws Exception {
// construct
your session
and channel objects
here
// create the named
object and begin consuming events from the channel
at event id 0
// i.e. the beginning of the channel
nNamedObject nobj = myChannel.createNamedObject("unique1",
0, true);
myChannel.addSubscriber(this , nobj);
}
public void go(nConsumeEvent event) {
System.out.println("Consumed event "+event.getEventID());
}
public static void main(String[] args) {
new mySubscriber();
}
}
Synchronous
An example of how to create a named object that begins
from event id 0, persistent and is used in conjunction
with a synchronous event consumer:
public class myIterator {
nChannelIterator iterator = null;
public myIterator() throws Exception {
// construct
your session
and channel objects
here
// start the iterator
at the beginning of the channel (event id 0)
nNamedObject nobj = myChannel.createNamedObject("unique2",
0, true);
iterator = myChannel.createIterator(0);
}
public void start() {
while (true) {
nConsumeEvent event = iterator.getNext();
go(event);
}
}
public void go(nConsumeEvent event) {
System.out.println("Consumed event "+event.getEventID());
}
public static void main(String[] args) {
myIterator itr = new myIterator();
itr.start();
}
}
Both synchronous and asynchrnous channel consumers
allow message selectors to be used in conjunction with
named objects. Please see the API documentation for
more information.
There are also different ways in which events consumed
by named consumers can be acknowledged. By specifying
that 'auto acknowledge' is true when constructing either
the synchronous or asynchronous consumers, then each
event is acknowledged as consumed automatically. If
'auto acknowledge' is set to false, then each event
consumed has to be acknowledged by calling the ack()
method:
public void go(nConsumeEvent event) {
System.out.println("Consumed event "+event.getEventID());
event.ack();
}
An example of an asynchronous durable consumer can
be found here.
For more information on Nirvana publish / subscribe,
please see the API
documentation.
|