Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.Ce contenu n'est pas disponible dans la langue sélectionnée.
Chapter 48. Endpoint Interface
Abstract
						This chapter describes how to implement the 
Endpoint interface, which is an essential step in the implementation of a Apache Camel component.
					48.1. The Endpoint Interface
Copier lienLien copié sur presse-papiers!
Overview
Copier lienLien copié sur presse-papiers!
					An instance of 
org.apache.camel.Endpoint type encapsulates an endpoint URI, and it also serves as a factory for Consumer, Producer, and Exchange objects. There are three different approaches to implementing an endpoint:
				- Event-driven
- scheduled poll
- polling
					These endpoint implementation patterns complement the corresponding patterns for implementing a consumer—see Section 49.2, “Implementing the Consumer Interface”.
				
					Figure 48.1, “Endpoint Inheritance Hierarchy” shows the relevant Java interfaces and classes that make up the 
Endpoint inheritance hierarchy.
				Figure 48.1. Endpoint Inheritance Hierarchy
The Endpoint interface
Copier lienLien copié sur presse-papiers!
					Example 48.1, “Endpoint Interface” shows the definition of the 
org.apache.camel.Endpoint interface.
				Example 48.1. Endpoint Interface
Endpoint methods
Copier lienLien copié sur presse-papiers!
					The 
Endpoint interface defines the following methods:
				- isSingleton()—Returns- true, if you want to ensure that each URI maps to a single endpoint within a CamelContext. When this property is- true, multiple references to the identical URI within your routes always refer to a single endpoint instance. When this property is- false, on the other hand, multiple references to the same URI within your routes refer to distinct endpoint instances. Each time you refer to the URI in a route, a new endpoint instance is created.
- getEndpointUri()—Returns the endpoint URI of this endpoint.
- getEndpointKey()—Used by- org.apache.camel.spi.LifecycleStrategywhen registering the endpoint.
- getCamelContext()—return a reference to the- CamelContextinstance to which this endpoint belongs.
- setCamelContext()—Sets the- CamelContextinstance to which this endpoint belongs.
- configureProperties()—Stores a copy of the parameter map that is used to inject parameters when creating a new- Consumerinstance.
- isLenientProperties()—Returns- trueto indicate that the URI is allowed to contain unknown parameters (that is, parameters that cannot be injected on the- Endpointor the- Consumerclass). Normally, this method should be implemented to return- false.
- createExchange()—An overloaded method with the following variants:- Exchange createExchange()—Creates a new exchange instance with a default exchange pattern setting.
- Exchange createExchange(ExchangePattern pattern)—Creates a new exchange instance with the specified exchange pattern.
- Exchange createExchange(Exchange exchange)—Converts the given- exchangeargument to the type of exchange needed for this endpoint. If the given exchange is not already of the correct type, this method copies it into a new instance of the correct type. A default implementation of this method is provided in the- DefaultEndpointclass.
 
- createProducer()—Factory method used to create new- Producerinstances.
- createConsumer()—Factory method to create new event-driven consumer instances. The- processorargument is a reference to the first processor in the route.
- createPollingConsumer()—Factory method to create new polling consumer instances.
Endpoint singletons
Copier lienLien copié sur presse-papiers!
					In order to avoid unnecessary overhead, it is a good idea to create a single endpoint instance for all endpoints that have the same URI (within a CamelContext). You can enforce this condition by implementing 
isSingleton() to return true.
				Note
						In this context, same URI means that two URIs are the same when compared using string equality. In principle, it is possible to have two URIs that are equivalent, though represented by different strings. In that case, the URIs would not be treated as the same.
					
