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
Code Block |
---|
public interface EndpointListener {
void endpointRegistered(InternalEndpoint endpoint);
void endpointUnregistered(InternalEndpoint endpoint);
}
|
You can find an example endpoint listener here.
ExchangeListener
Code Block |
---|
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:
Code Block |
---|
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):
Code Block |
---|
<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>
|
#top