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.此内容没有您所选择的语言版本。
Chapter 49. 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.
					49.1. The Endpoint Interface 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Overview 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
					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 50.2, “Implementing the Consumer Interface”.
				
					Figure 49.1, “Endpoint Inheritance Hierarchy” shows the relevant Java interfaces and classes that make up the 
Endpoint inheritance hierarchy.
				Figure 49.1. Endpoint Inheritance Hierarchy
The Endpoint interface 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
					Example 49.1, “Endpoint Interface” shows the definition of the 
org.apache.camel.Endpoint interface.
				Example 49.1. Endpoint Interface
Endpoint methods 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
					The 
Endpoint interface defines the following methods:
				isSingleton()—Returnstrue, if you want to ensure that each URI maps to a single endpoint within a CamelContext. When this property istrue, multiple references to the identical URI within your routes always refer to a single endpoint instance. When this property isfalse, 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 byorg.apache.camel.spi.LifecycleStrategywhen registering the endpoint.getCamelContext()—return a reference to theCamelContextinstance to which this endpoint belongs.setCamelContext()—Sets theCamelContextinstance to which this endpoint belongs.configureProperties()—Stores a copy of the parameter map that is used to inject parameters when creating a newConsumerinstance.isLenientProperties()—Returnstrueto indicate that the URI is allowed to contain unknown parameters (that is, parameters that cannot be injected on theEndpointor theConsumerclass). Normally, this method should be implemented to returnfalse.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 givenexchangeargument 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 theDefaultEndpointclass.
createProducer()—Factory method used to create newProducerinstances.createConsumer()—Factory method to create new event-driven consumer instances. Theprocessorargument is a reference to the first processor in the route.createPollingConsumer()—Factory method to create new polling consumer instances.
Endpoint singletons 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
					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.