10. Events
The NMR has a rich event API that can be used to receive all sort of notifications about what's happening in the NMR.
Currently, two types of listeners are defined.
EndpointListener
public interface EndpointListener { void endpointRegistered(InternalEndpoint endpoint); void endpointUnregistered(InternalEndpoint endpoint); }
You can find an example endpoint listener here.
ExchangeListener
public interface ExchangeListener { void exchangeSent(Exchange exchange); void exchangeDelivered(Exchange exchange); void exchangeFailed(Exchange exchange); }
An example exchange listener can be found here.
Registering listeners
Listeners can be registered in two ways, either directly on the NMR:
nmr.getListenerRegistry().register(listener, null);
or by registering your listener as an OSGi service. It can be done using Spring-DM using the following configuration (for an exchange listener):
<bean id="myListener" class="..."> ... </bean> <!-- Exchange Listener --> <osgi:service ref="myListener"> <osgi:interfaces> <value>org.apache.servicemix.nmr.api.event.ExchangeListener</value> <value>org.apache.servicemix.nmr.api.event.Listener</value> </osgi:interfaces> </osgi:service>