Custom Processors
If your integration requires specific filtering and/or formatting, you can write your own processor by implementing the org.apache.camel.Processor
interface.
For example, we can implement a custom processor used for event forwarding:
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
public class MyEventProcessor implements Processor {
@Override
public void process(final Exchange exchange) throws Exception {
final Event event = exchange.getIn().getBody(Event.class);
// Filtering
if (!shouldForward(event)) {
exchange.setProperty(Exchange.ROUTE_STOP, Boolean.TRUE);
return;
}
// Transforming
MyDTO eventAsDTO = toDTO(event);
exchange.getIn().setBody(eventAsDTO, MyDTO.class);
}
}
To use the processor, package it as a bundle, and expose it to the OSGi service registry using:
<bean id="myEventProcessor" class="org.opennms.integrations.evilcorp.MyEventProcessor" />
<service id="myEventProcessorService" ref="myEventProcessor" interface="org.apache.camel.Processor">
<service-properties>
<entry key="name" value="evilcorp-event-forwarder-processor"/>
</service-properties>
</service>
Once your bundle is in the Karaf container, you can update the loaded bundle and refer to your processor with:
config:edit org.opennms.features.amqp.eventforwarder
config:property-set processorName evilcorp-event-forwarder-processor
config:update
If the event forwarder feature was already started, it should automatically restart and start using the new processor. Otherwise, you can start the feature with:
feature:install opennms-amqp-event-forwarder