47.2. How to Implement a Component
Overview
This section gives a brief overview of the steps required to implement a custom Apache Camel component.
Which interfaces do you need to implement?
When implementing a component, it is usually necessary to implement the following Java interfaces:
org.apache.camel.Component
org.apache.camel.Endpoint
org.apache.camel.Consumer
org.apache.camel.Producer
In addition, it can also be necessary to implement the following Java interfaces:
org.apache.camel.Exchange
org.apache.camel.Message
Implementation steps
You typically implement a custom component as follows:
- Implement the
Component
interface—A component object acts as an endpoint factory. You extend theDefaultComponent
class and implement thecreateEndpoint()
method. - Implement the
Endpoint
interface—An endpoint represents a resource identified by a specific URI. The approach taken when implementing an endpoint depends on whether the consumers follow an event-driven pattern, a scheduled poll pattern, or a polling pattern.For an event-driven pattern, implement the endpoint by extending theDefaultEndpoint
class and implementing the following methods:createProducer()
createConsumer()
For a scheduled poll pattern, implement the endpoint by extending theScheduledPollEndpoint
class and implementing the following methods:createProducer()
createConsumer()
For a polling pattern, implement the endpoint by extending theDefaultPollingEndpoint
class and implementing the following methods:createProducer()
createPollConsumer()
- Implement the
Consumer
interface—There are several different approaches you can take to implementing a consumer, depending on which pattern you need to implement (event-driven, scheduled poll, or polling). The consumer implementation is also crucially important for determining the threading model used for processing a message exchange. - Implement the
Producer
interface—To implement a producer, you extend theDefaultProducer
class and implement theprocess()
method. - Optionally implement the Exchange or the Message interface—The default implementations of
Exchange
andMessage
can be used directly, but occasionally, you might find it necessary to customize these types.
Installing and configuring the component
You can install a custom component in one of the following ways:
- Add the component directly to the CamelContext—The
CamelContext.addComponent()
method adds a component programatically. - Add the component using Spring configuration—The standard Spring
bean
element creates a component instance. The bean'sid
attribute implicitly defines the component prefix. For details, see Section 47.3.2, “Configuring a Component”. - Configure Apache Camel to auto-discover the component—Auto-discovery, ensures that Apache Camel automatically loads the component on demand. For details, see Section 47.3.1, “Setting Up Auto-Discovery”.