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>

top