You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2017/04/21 09:21:01 UTC

[5/5] camel git commit: CAMEL-10798 Splitted camel-ignite component for each endpoint

CAMEL-10798 Splitted camel-ignite component for each endpoint


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/df656782
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/df656782
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/df656782

Branch: refs/heads/master
Commit: df6567829d6712987dbb62b26110096a35464739
Parents: 9b3e7eb
Author: Tomohisa Igarashi <tm...@gmail.com>
Authored: Wed Apr 19 23:21:30 2017 +0900
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Fri Apr 21 11:20:12 2017 +0200

----------------------------------------------------------------------
 .../src/main/docs/ignite-cache-component.adoc   |  96 ++++
 .../src/main/docs/ignite-component.adoc         | 473 -------------------
 .../src/main/docs/ignite-compute-component.adoc |  98 ++++
 .../src/main/docs/ignite-events-component.adoc  |  54 +++
 .../src/main/docs/ignite-idgen-component.adoc   |  51 ++
 .../main/docs/ignite-messaging-component.adoc   |  69 +++
 .../src/main/docs/ignite-queue-component.adoc   |  74 +++
 .../src/main/docs/ignite-set-component.adoc     |  63 +++
 .../camel-ignite/src/main/docs/ignite.adoc      | 111 +++++
 .../ignite/AbstractIgniteComponent.java         | 156 ++++++
 .../ignite/AbstractIgniteEndpoint.java          |   8 +-
 .../camel/component/ignite/IgniteComponent.java | 116 +----
 .../ignite/cache/IgniteCacheComponent.java      |  78 +++
 .../ignite/cache/IgniteCacheEndpoint.java       |  61 ++-
 .../ignite/compute/IgniteComputeComponent.java  |  78 +++
 .../ignite/compute/IgniteComputeEndpoint.java   |  68 ++-
 .../ignite/events/IgniteEventsComponent.java    |  78 +++
 .../ignite/events/IgniteEventsEndpoint.java     |  54 ++-
 .../ignite/idgen/IgniteIdGenComponent.java      |  78 +++
 .../ignite/idgen/IgniteIdGenEndpoint.java       |  61 ++-
 .../messaging/IgniteMessagingComponent.java     |  78 +++
 .../messaging/IgniteMessagingEndpoint.java      |  58 ++-
 .../ignite/queue/IgniteQueueComponent.java      |  78 +++
 .../ignite/queue/IgniteQueueEndpoint.java       |  40 +-
 .../ignite/set/IgniteSetComponent.java          |  78 +++
 .../component/ignite/set/IgniteSetEndpoint.java |  35 +-
 .../org/apache/camel/component/ignite-cache     |  18 +
 .../org/apache/camel/component/ignite-compute   |  18 +
 .../org/apache/camel/component/ignite-events    |  18 +
 .../org/apache/camel/component/ignite-idgen     |  18 +
 .../org/apache/camel/component/ignite-messaging |  18 +
 .../org/apache/camel/component/ignite-queue     |  18 +
 .../org/apache/camel/component/ignite-set       |  18 +
 .../component/ignite/AbstractIgniteTest.java    |  15 +-
 .../ignite/IgniteCacheContinuousQueryTest.java  |  19 +-
 .../camel/component/ignite/IgniteCacheTest.java |  41 +-
 .../component/ignite/IgniteComputeTest.java     |  41 +-
 .../component/ignite/IgniteEventsTest.java      |  21 +-
 .../camel/component/ignite/IgniteIdGenTest.java |  41 +-
 .../component/ignite/IgniteMessagingTest.java   |  23 +-
 .../camel/component/ignite/IgniteQueueTest.java |  83 ++--
 .../camel/component/ignite/IgniteSetTest.java   |  56 ++-
 .../src/test/resources/log4j2.properties        |   2 +-
 components/readme.adoc                          |  23 +-
 docs/user-manual/en/SUMMARY.md                  |   7 +
 .../IgniteCacheComponentAutoConfiguration.java  | 114 +++++
 .../IgniteCacheComponentConfiguration.java      |  88 ++++
 ...IgniteComputeComponentAutoConfiguration.java | 114 +++++
 .../IgniteComputeComponentConfiguration.java    |  88 ++++
 .../IgniteEventsComponentAutoConfiguration.java | 114 +++++
 .../IgniteEventsComponentConfiguration.java     |  88 ++++
 .../IgniteIdGenComponentAutoConfiguration.java  | 114 +++++
 .../IgniteIdGenComponentConfiguration.java      |  88 ++++
 ...niteMessagingComponentAutoConfiguration.java | 115 +++++
 .../IgniteMessagingComponentConfiguration.java  |  88 ++++
 .../IgniteQueueComponentAutoConfiguration.java  | 114 +++++
 .../IgniteQueueComponentConfiguration.java      |  88 ++++
 .../IgniteSetComponentAutoConfiguration.java    | 114 +++++
 .../IgniteSetComponentConfiguration.java        |  88 ++++
 ...dditional-spring-configuration-metadata.json |  46 ++
 .../main/resources/META-INF/spring.factories    |  31 ++
 61 files changed, 3503 insertions(+), 779 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/docs/ignite-cache-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/docs/ignite-cache-component.adoc b/components/camel-ignite/src/main/docs/ignite-cache-component.adoc
new file mode 100644
index 0000000..2ba9347
--- /dev/null
+++ b/components/camel-ignite/src/main/docs/ignite-cache-component.adoc
@@ -0,0 +1,96 @@
+## Ignite Cache Component
+
+*Available as of Camel version 2.17*
+
+The Ignite Cache endpoint is one of link:ignite.html[camel-ignite endpoints] which allows you to interact with an https://apacheignite.readme.io/docs/data-grid[Ignite Cache].
+This offers both a Producer (to invoke cache operations on an Ignite cache) and a Consumer (to consume changes from a continuous query).
+
+The cache value is always the body of the message, whereas the cache key is always stored in the `IgniteConstants.IGNITE_CACHE_KEY` message header.
+
+Even if you configure a fixed operation in the endpoint URI, you can vary it per-exchange by setting the `IgniteConstants.IGNITE_CACHE_OPERATION` message header.
+
+
+// component options: START
+The Ignite Cache component supports 4 options which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **ignite** (common) | Sets the Ignite instance. |  | Ignite
+| **configurationResource** (common) | Sets the resource from where to load the configuration. It can be a: URI String (URI) or an InputStream. |  | Object
+| **igniteConfiguration** (common) | Allows the user to set a programmatic IgniteConfiguration. |  | IgniteConfiguration
+| **resolveProperty Placeholders** (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|=======================================================================
+// component options: END
+
+// endpoint options: START
+The Ignite Cache endpoint is configured using URI syntax:
+
+    ignite-cache:[cacheName]
+
+with the following path and query parameters:
+
+#### Path Parameters (1 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **cacheName** | *Required* The cache name. |  | String
+|=======================================================================
+
+#### Query Parameters (16 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **propagateIncomingBodyIfNo ReturnValue** (common) | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | boolean
+| **treatCollectionsAsCache Objects** (common) | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute etc. | false | boolean
+| **autoUnsubscribe** (consumer) | Whether auto unsubscribe is enabled in the Continuous Query Consumer. | true | boolean
+| **bridgeErrorHandler** (consumer) | Allows for bridging the consumer to the Camel routing Error Handler which mean any exceptions occurred while the consumer is trying to pickup incoming messages or the likes will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions that will be logged at WARN or ERROR level and ignored. | false | boolean
+| **fireExistingQueryResults** (consumer) | Whether to process existing results that match the query. Used on initialization of the Continuous Query Consumer. | false | boolean
+| **oneExchangePerUpdate** (consumer) | Whether to pack each update in an individual Exchange even if multiple updates are received in one batch. Only used by the Continuous Query Consumer. | true | boolean
+| **pageSize** (consumer) | The page size. Only used by the Continuous Query Consumer. | 1 | int
+| **query** (consumer) | The Query to execute only needed for operations that require it and for the Continuous Query Consumer. |  | Object>>
+| **remoteFilter** (consumer) | The remote filter only used by the Continuous Query Consumer. |  | Object>
+| **timeInterval** (consumer) | The time interval for the Continuous Query Consumer. | 0 | long
+| **exceptionHandler** (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this options is not in use. By default the consumer will deal with exceptions that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| **exchangePattern** (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| **cachePeekMode** (producer) | The CachePeekMode only needed for operations that require it (link IgniteCacheOperationSIZE). | ALL | CachePeekMode
+| **failIfInexistentCache** (producer) | Whether to fail the initialization if the cache doesn't exist. | false | boolean
+| **operation** (producer) | The cache operation to invoke. Possible values: GET PUT REMOVE SIZE REBALANCE QUERY CLEAR. |  | IgniteCacheOperation
+| **synchronous** (advanced) | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|=======================================================================
+// endpoint options: END
+
+
+#### Headers used
+
+This endpoint uses the following headers:
+[width="100%",cols="1,1,1,4",options="header"]
+|=======================================================================
+| Header name | Constant | Expected type | Description
+| CamelIgniteCacheKey | IgniteConstants.IGNITE_CACHE_KEY | String |
+The cache key for the entry value in the message body.
+
+| CamelIgniteCacheQuery | IgniteConstants.IGNITE_CACHE_QUERY | Query |
+The query to run (producer) when invoking the QUERY operation.
+
+| CamelIgniteCacheOperation | IgniteConstants.IGNITE_CACHE_OPERATION | IgniteCacheOperation enum |
+Allows you to dynamically change the cache operation to execute (producer).
+
+| CamelIgniteCachePeekMode | IgniteConstants.IGNITE_CACHE_PEEK_MODE | CachePeekMode enum |
+Allows you to dynamically change the cache peek mode when running the SIZE operation.
+
+| CamelIgniteCacheEventType | IgniteConstants.IGNITE_CACHE_EVENT_TYPE | int (EventType constants) |
+This header carries the received event type when using the continuous query consumer.
+
+| CamelIgniteCacheName | IgniteConstants.IGNITE_CACHE_NAME | String |
+This header carries the cache name for which a continuous query event was received (consumer).
+It does not allow you to dynamically change the cache against which a producer operation is performed. Use EIPs for that (e.g. recipient list, dynamic router).
+
+| CamelIgniteCacheOldValue | IgniteConstants.IGNITE_CACHE_OLD_VALUE | Object |
+This header carries the old cache value when passed in the incoming cache event (consumer).
+|=======================================================================
+

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/docs/ignite-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/docs/ignite-component.adoc b/components/camel-ignite/src/main/docs/ignite-component.adoc
deleted file mode 100644
index 36b1e39..0000000
--- a/components/camel-ignite/src/main/docs/ignite-component.adoc
+++ /dev/null
@@ -1,473 +0,0 @@
-## Ignite Component
-
-*Available as of Camel version 2.17*
-
-https://ignite.apache.org/[Apache Ignite] In-Memory Data Fabric is a high-performance, integrated and distributed in-memory platform for computing and transacting on large-scale data sets in real-time, orders of magnitude faster than possible with traditional disk-based or flash technologies. It is designed to deliver uncompromised performance for a wide set of in-memory computing use cases from high performance computing, to the industry most advanced data grid, highly available service grid, and streaming. See all https://ignite.apache.org/features.html[features].
-
-image:https://ignite.apache.org/images/apache-ignite.png[]
-
-This component offers seven endpoints to cover much of Ignite's functionality:
-
-* <<Ignite-Cache,Ignite Cache>>.
-* <<Ignite-Compute,Ignite Compute>>.
-* <<Ignite-Messaging,Ignite Messaging>>.
-* <<Ignite-Events,Ignite Events>>.
-* <<Ignite-Sets,Ignite Sets>>.
-* <<Ignite-Queues,Ignite Queues>>.
-* <<Ignite-IDGenerator,Ignite ID Generator>>.
-
-To use this component, add the following dependency to your pom.xml:
-
-[source,xml]
-----
-<dependency>
-    <groupId>org.apache.camel</groupId>
-    <artifactId>camel-ignite</artifactId>
-    <version>${camel.version}</version> <!-- use the same version as your Camel core version -->
-</dependency>
-----
-
-[IMPORTANT,title=Running in OSGi]
-====
-If running in an OSGi container, please don't miss the <<Ignite-OsgiSupport,OSGi Support>> section below.
-====
-
-// component options: START
-// component options: END
-
-// endpoint options: START
-// endpoint options: END
-
-
-### CACHE: Ignite Cache Endpoint
-
-This endpoint allows you to interact with an https://apacheignite.readme.io/docs/data-grid[Ignite Cache]:
-
-[source,text]
-----
-ignite:cache:cacheName?option1=value1&option2=value2...
-----
-
-Offers both a Producer (to invoke cache operations on an Ignite cache) and a Consumer (to consume changes from a continuous query).
-
-The cache value is always the body of the message, whereas the cache key is always stored in the `IgniteConstants.IGNITE_CACHE_KEY` message header.
-
-Even if you configure a fixed operation in the endpoint URI, you can vary it per-exchange by setting the `IgniteConstants.IGNITE_CACHE_OPERATION` message header.
-
-#### Options
-
-[width="100%",cols="1,1,1,4,1,1",options="header"]
-|=======================================================================
-| Option | Type | Default value | Description | Compulsory | Consumer/producer
-| operation | IgniteCacheOperation enum | --- |
-Cache operation to perform.
-Possible values: GET, PUT, REMOVE, SIZE, REBALANCE, QUERY, CLEAR. |
-N | Producer
-
-| failIfInexistentCache | boolean | false |
-Whether to fail the initialization if the cache doesn't exist.  |
-N | Producer
-
-| cachePeekMode | CachePeekMode (Ignite) enum | ALL |
-The cache peek mode used for SIZE operations. |
-N | Producer
-
-| query | Query | --- |
-The query used for QUERY operations (as a producer) or to launch the continuous query (as a consumer). You can use a reference to a registry bean with a syntax like: ?query=#myQuery. |
-Y for the consumer / N for the producer | Producer (for QUERY operation) and Consumer
-
-|remoteFilter | CacheEntryEventSerializableFilter | --- |
-An optional remote filter for the continuous query consumer. You can use a reference to a registry bean with a syntax like: ?remoteFilter=#myRemoteFilter. |
-N | Consumer
-
-| oneExchangePerUpdate | boolean | true |
-Whether to send one exchange per cache update, even if multiple changes arrive in a group. |
-N | Consumer
-
-| fireExistingQueryResults | boolean | false |
-When starting the continuous query consumer, whether to fire existing cache results. |
-N  | Consumer
-
-| autoUnsubscribe | boolean | ContinuousQuery.DFLT_AUTO_UNSUBSCRIBE |
-Auto-unsubscribe flag on the Continuous Query (see Ignite docs). |
-N | Consumer
-
-| pageSize | int | ContinuousQuery.DFLT_PAGE_SIZE |
-Page size on the Continuous Query (see Ignite docs). |
-N | Consumer
-
-| timeInterval | long | ContinuousQuery.DFLT_TIME_INTERVAL |
-Time interval in millis on the Continuous Query (see Ignite docs). | N | Consumer
-|=======================================================================
-
-#### Headers used
-
-This endpoint uses the following headers:
-[width="100%",cols="1,1,1,4",options="header"]
-|=======================================================================
-| Header name | Constant | Expected type | Description
-| CamelIgniteCacheKey | IgniteConstants.IGNITE_CACHE_KEY | String |
-The cache key for the entry value in the message body.
-
-| CamelIgniteCacheQuery | IgniteConstants.IGNITE_CACHE_QUERY | Query |
-The query to run (producer) when invoking the QUERY operation.
-
-| CamelIgniteCacheOperation | IgniteConstants.IGNITE_CACHE_OPERATION | IgniteCacheOperation enum |
-Allows you to dynamically change the cache operation to execute (producer).
-
-| CamelIgniteCachePeekMode | IgniteConstants.IGNITE_CACHE_PEEK_MODE | CachePeekMode enum |
-Allows you to dynamically change the cache peek mode when running the SIZE operation.
-
-| CamelIgniteCacheEventType | IgniteConstants.IGNITE_CACHE_EVENT_TYPE | int (EventType constants) |
-This header carries the received event type when using the continuous query consumer.
-
-| CamelIgniteCacheName | IgniteConstants.IGNITE_CACHE_NAME | String |
-This header carries the cache name for which a continuous query event was received (consumer).
-It does not allow you to dynamically change the cache against which a producer operation is performed. Use EIPs for that (e.g. recipient list, dynamic router).
-
-| CamelIgniteCacheOldValue | IgniteConstants.IGNITE_CACHE_OLD_VALUE | Object |
-This header carries the old cache value when passed in the incoming cache event (consumer).
-|=======================================================================
-
-
-### COMPUTE: Ignite Compute Endpoint
-
-This endpoint allows you to run https://apacheignite.readme.io/docs/compute-grid[compute operations] on the cluster by passing in an IgniteCallable, an IgniteRunnable, an IgniteClosure, or collections of them, along with their parameters if necessary.
-
-[source,text]
-----
-ignite:compute:endpointId?executionType=...&option1=value1&option2=value2...
-----
-
-This endpoint only supports producers.
-
-The host part of the endpoint URI is a symbolic endpoint ID, it is not used for any purposes.
-
-The endpoint tries to run the object passed in the body of the IN message as the compute job. It expects different payload types depending on the execution type.
-
-#### Expected payload types
-
-Each operation expects the indicated types:
-[width="100%",cols="1,4",options="header"]
-|=======================================================================
-| Operation | Expected payloads
-| CALL | Collection of IgniteCallable, or a single IgniteCallable.
-| BROADCAST | IgniteCallable, IgniteRunnable, IgniteClosure.
-| APPLY | IgniteClosure.
-| EXECUTE | ComputeTask, Class<? extends ComputeTask> or an object representing parameters if the taskName option is not null.
-| RUN | A Collection of IgniteRunnables, or a single IgniteRunnable.
-| AFFINITY_CALL | IgniteCallable.
-| AFFINITY_RUN | IgniteRunnable.
-|=======================================================================
-
-#### Options
-
-[width="100%",cols="1,1,1,4,1,1",options="header"]
-|=======================================================================
-| Option | Type | Default value | Description | Compulsory | Consumer/producer
-| executionType | IgniteComputeExecutionType enum | --- |
-The compute operation to perform. Possible values: CALL, BROADCAST, APPLY, EXECUTE, RUN, AFFINITY_CALL, AFFINITY_RUN.
-The component expects different payload types depending on the operation. See above. |
-Y | Producer
-
-| clusterGroupExpression | ClusterGroupExpression | --- |
-An expression that returns the Cluster Group for the IgniteCompute instance. |
-N | Producer
-
-| taskName | String | --- | The task name, only used when performing the EXECUTE if a ComputeTask is not passed in the payload. |
-N | Producer
-
-| computeName | String | --- | The name for the IgniteCompute instances produced by this endpoint. |
-N | Producer
-
-| timeoutMillis | Long | --- | The timeout for the compute job. | N | Producer
-|=======================================================================
-
-#### Headers used
-
-This endpoint uses the following headers:
-[width="100%",cols="1,1,1,4",options="header"]
-|=======================================================================
-| Header name | Constant | Expected type | Description
-| CamelIgniteComputeExecutionType | IgniteConstants.IGNITE_COMPUTE_EXECUTION_TYPE | IgniteComputeExecutionType enum |
- Allows you to dynamically change the compute operation to perform.
-
-| CamelIgniteComputeParameters | IgniteConstants.IGNITE_COMPUTE_PARAMS | Any object or Collection of objects. |
-Parameters for APPLY, BROADCAST and EXECUTE operations.
-
-| CamelIgniteComputeReducer | IgniteConstants.IGNITE_COMPUTE_REDUCER | IgniteReducer |
-Reducer for the APPLY and CALL operations.
-
-| CamelIgniteComputeAffinityCacheName | IgniteConstants.IGNITE_COMPUTE_AFFINITY_CACHE_NAME | String |
-Affinity cache name for the AFFINITY_CALL and AFFINITY_RUN operations.
-
-| CamelIgniteComputeAffinityKey | IgniteConstants.IGNITE_COMPUTE_AFFINITY_KEY | Object |
-Affinity key for the AFFINITY_CALL and AFFINITY_RUN operations.
-|=======================================================================
-
-
-### MESSAGING: Ignite Messaging Endpoint
-
-The Ignite Messaging endpoint allows you to send and consume messages from an https://apacheignite.readme.io/docs/messaging[Ignite topic].
-
-[source,text]
-----
-ignite:messaging:topicName?option1=value1&option2=value2...
-----
-
-This endpoint supports producers (to send messages) and consumers (to receive messages).
-
-#### Options
-
-[width="100%",cols="1,1,1,4,1,1",options="header"]
-|=======================================================================
-| Option | Type | Default value | Description | Compulsory | Consumer/producer
-| clusterGroupExpression | ClusterGroupExpression | --- |
-An expression that returns the Cluster Group for the IgniteMessaging instance. |
-N |Consumer and Producer
-
-| sendMode | IgniteMessagingSendMode enum | UNORDERED |
-The send mode to use.
-Possible values: UNORDERED, ORDERED. |
-N | Producer
-
-| timeout | Long | --- | The timeout for the send operation when using ordered messages. |
-N | Producer
-|=======================================================================
-
-#### Headers used
-
-This endpoint uses the following headers:
-[width="100%",cols="1,1,1,4",options="header"]
-|=======================================================================
-| Header name | Constant | Expected type | Description
-| CamelIgniteMessagingTopic | IgniteConstants.IGNITE_MESSAGING_TOPIC | String |
-Allows you to dynamically change the topic to send messages to (producer). 
-It also carries the topic on which a message was received (consumer).
-
-| CamelIgniteMessagingUUID | IgniteConstants.IGNITE_MESSAGING_UUID | UUID |
-This header is filled in with the UUID of the subscription when a message arrives (consumer).
-|=======================================================================
-
-
-### EVENTS: Ignite Events Endpoint
-
-The Ignite Events endpoint allows you to https://apacheignite.readme.io/docs/events[receive events] from the Ignite cluster by creating a local event listener.
-
-[source,text]
-----
-ignite:events:endpointId?option1=value1&option2=value2...
-----
-
-This endpoint only supports consumers.
-The Exchanges created by this consumer put the received Event object into the body of the IN message.
-
-#### Options
-
-[width="100%",cols="1,1,1,4,1,1",options="header"]
-|=======================================================================
-| Option | Type | Default value | Description | Compulsory | Consumer/producer
-| events | Set<Integer> or String | EventType.EVTS_ALL |
-The event IDs to subscribe to. You can set a Set<Integer> directly where the IDs are the different constants in org.apache.ignite.events.EventType, or you can specify a comma-separated list of constant names.
-For example: EVT_CACHE_ENTRY_CREATED,EVT_CACHE_OBJECT_REMOVED,EVT_IGFS_DIR_CREATED. |
-N | Consumer
-| clusterGroupExpression | ClusterGroupExpression | --- |
-An expression that returns the Cluster Group to be used by the IgniteEvents instance. |
-N | Consumer
-|=======================================================================
-
-
-
-### SETS: Ignite Sets Endpoint
-
-The Ignite Sets endpoint allows you to interact with https://apacheignite.readme.io/docs/queue-and-set[Ignite Set data structures].
-
-[source,text]
-----
-ignite:sets:setName?option1=value1&option2=value2...
-----
-
-This endpoint only supports producers.
-
-#### Options
-
-[width="100%",cols="1,1,1,4,1,1",options="header"]
-|=======================================================================
-| Option | Type | Default value | Description | Compulsory | Consumer/producer
-| operation | IgniteSetOperation enum | --- |
-The operation to invoke on the Ignite Set.
-Superseded by the IgniteConstants.IGNITE_SETS_OPERATION header in the IN message.
-Possible values: CONTAINS, ADD, SIZE, REMOVE, ITERATOR, CLEAR, RETAIN_ALL, ARRAY. |
-N | Producer
-
-| configuration | CollectionConfiguration | empty CollectionConfiguration |
-The configuration for this data structure. You can also specify inner properties by using the config. prefix.
-For example: ?config.backups=4 |
-N | Producer
-|=======================================================================
-
-#### Headers used
-
-This endpoint uses the following headers:
-[width="100%",cols="1,1,1,4",options="header"]
-|=======================================================================
-| Header name | Constant | Expected type | Description
-| CamelIgniteSetsOperation | IgniteConstants.IGNITE_SETS_OPERATION | IgniteSetOperation enum |
-Allows you to dynamically change the set operation.
-|=======================================================================
-
-
-### QUEUES: Ignite Queue Endpoint
-
-The Ignite Queue endpoint allows you to interact with https://apacheignite.readme.io/docs/queue-and-set[Ignite Queue data structures].
-
-[source,text]
-----
-ignite:queue:queueName?option1=value1&option2=value2...
-----
-
-This endpoint only supports producers.
-
-#### Options
-
-[width="100%",cols="1,1,1,4,1,1",options="header"]
-|=======================================================================
-| Option | Type | Default value | Description | Compulsory | Consumer/producer
-| operation | IgniteQueueOperation enum | --- |
-The operation to invoke on the Ignite Queue.
-Superseded by the IgniteConstants.IGNITE_QUEUE_OPERATION header in the IN message.
-Possible values: CONTAINS, ADD, SIZE, REMOVE, ITERATOR, CLEAR, RETAIN_ALL, ARRAY, DRAIN, ELEMENT, PEEK, OFFER, POLL, TAKE, PUT. |
-N | Producer
-
-| configuration | CollectionConfiguration | empty CollectionConfiguration |
-The configuration for this data structure. You can also specify inner properties by using the config. prefix.
-For example: ?config.backups=4 |
-N | Producer
-
-| timeoutMillis | Long | | --- |
-The timeout in milliseconds to use when invoking the OFFER or POLL operations. |
-N | Producer
-
-| capacity | int | --- (unbounded) |
-The queue capacity if you'd like to use a bounded queue. |
-N | Producer
-|=======================================================================
-
-#### Headers used
-
-This endpoint uses the following headers:
-[width="100%",cols="1,1,1,4",options="header"]
-|=======================================================================
-| Header name | Constant | Expected type | Description
-| CamelIgniteQueueOperation | IgniteConstants.IGNITE_QUEUE_OPERATION | IgniteQueueOperation enum |
-Allows you to dynamically change the queue operation.
-
-| CamelIgniteQueueMaxElements | IgniteConstants.IGNITE_QUEUE_MAX_ELEMENTS | Integer or int |
-When invoking the DRAIN operation, the amount of items to drain.
-
-| CamelIgniteQueueTransferredCount | IgniteConstants.IGNITE_QUEUE_TRANSFERRED_COUNT | Integer or int |
-The amount of items transferred as the result of the DRAIN operation.
-
-| CamelIgniteQueueTimeoutMillis | IgniteConstants.IGNITE_QUEUE_TIMEOUT_MILLIS | Long or long |
-Dynamically sets the timeout in milliseconds to use when invoking the OFFER or POLL operations. 
-|=======================================================================
-
-
-### IDGEN: Ignite ID Generator Endpoint
-
-The Ignite ID Generator endpoint allows you to interact with https://apacheignite.readme.io/docs/id-generator[Ignite Atomic Sequences and ID Generators].
-
-[source,text]
-----
-ignite:idgen:sequenceName?option1=value1&option2=value2...
-----
-
-This endpoint only supports producers.
-
-#### Options
-
-[width="100%",cols="1,1,1,4,1,1",options="header"]
-|=======================================================================
-| Option | Type | Default value | Description | Compulsory | Consumer/producer
-| operation | IgniteIdGenOperation enum | --- |
-The operation to invoke on the Ignite ID Generator.
-Superseded by the IgniteConstants.IGNITE_IDGEN_OPERATION header in the IN message.
-Possible values: ADD_AND_GET, GET, GET_AND_ADD, GET_AND_INCREMENT, INCREMENT_AND_GET. |
-N | Producer
-
-| configuration | CollectionConfiguration | empty CollectionConfiguration |
-The configuration for this data structure. You can also specify inner properties by using the config. prefix.
-For example: ?config.backups=4 |
-N | Producer
-|=======================================================================
-
-
-
-### Initializing the Ignite component
-
-Each instance of the Ignite component is associated with an underlying org.apache.ignite.Ignite instance. You can interact with two Ignite clusters by initializing two instances of the Ignite component and binding them to different IgniteConfigurations. There are 3 ways to initialize the Ignite component:
-
-* By passing in an existing org.apache.ignite.Ignite instance. Here's an example using Spring config:
-
-[source,xml]
-------------------------------------------------------------
-<bean name="ignite" class="org.apache.camel.component.ignite.IgniteComponent">
-   <property name="ignite" ref="ignite" />
-</bean>
-------------------------------------------------------------
-
-* By passing in an IgniteConfiguration, either constructed programmatically or through inversion of control (e.g. Spring, Blueprint, etc.). Here's an example using Spring config:
-
-[source,xml]
--------------------------------------------------------------------
-<bean name="ignite" class="org.apache.camel.component.ignite.IgniteComponent">
-   <property name="igniteConfiguration">
-      <bean class="org.apache.ignite.configuration.IgniteConfiguration">
-         [...]
-      </bean>
-   </property>
-</bean>
--------------------------------------------------------------------
-
-* By passing in a URL, InputStream or String URL to a Spring-based configuration file. In all three cases, you inject them in the same property called configurationResource. Here's an example using Spring config:
-
-[source,xml]
--------------------------------------------------------------------
-<bean name="ignite" class="org.apache.camel.component.ignite.IgniteComponent">
-   <property name="configurationResource" value="file:[...]/ignite-config.xml" />
-</bean>
--------------------------------------------------------------------
-
-Additionally, if using Camel programmatically, there are several convenience static methods in IgniteComponent that return a component out of any of these configuration options:
-
-* IgniteComponent#fromIgnite(Ignite)
-* IgniteComponent#fromConfiguration(IgniteConfiguration)
-* IgniteComponent#fromInputStream(InputStream)
-* IgniteComponent#fromUrl(URL)
-* IgniteComponent#fromLocation(String)
-
-You may use those methods to quickly create an IgniteComponent with your chosen configuration technique.
-
-### General options
-
-All endpoints share the following options:
-[width="100%",cols="1,1,1,4,1,1",options="header"]
-|=======================================================================
-| Option | Type | Default value | Description
-| propagateIncomingBodyIfNoReturnValue | boolean | true |
-If the underlying Ignite operation returns void (no return type), this flag determines whether the producer will copy the IN body into the OUT body.
-
-| treatCollectionsAsCacheObjects | boolean | false |
-Some Ignite operations can deal with multiple elements at once, if passed a Collection. Enabling this option will treat Collections as a single object, invoking the operation variant for cardinality 1.
-|=======================================================================
-
-### OSGi Support
-
-TIP: Apache Ignite supports OSGi from version 1.5.0.final onwards.
-
-When installing on Apache Karaf:
-
-1. Installing the camel-ignite feature will require the Ignite feature repository to be present.
-2. You must have exported from the JRE (system bundle) some low-level, non-standard packages that Ignite requires.
-
-Please refer to the OSGi section in the Ignite documentation for more information.

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/docs/ignite-compute-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/docs/ignite-compute-component.adoc b/components/camel-ignite/src/main/docs/ignite-compute-component.adoc
new file mode 100644
index 0000000..92bf7c8
--- /dev/null
+++ b/components/camel-ignite/src/main/docs/ignite-compute-component.adoc
@@ -0,0 +1,98 @@
+## Ignite Compute Component
+
+*Available as of Camel version 2.17*
+
+The Ignite Compute endpoint is one of link:ignite.html[camel-ignite endpoints] which allows you to run https://apacheignite.readme.io/docs/compute-grid[compute operations] on the cluster by passing in an IgniteCallable, an IgniteRunnable, an IgniteClosure, or collections of them, along with their parameters if necessary.
+
+This endpoint only supports producers.
+
+The host part of the endpoint URI is a symbolic endpoint ID, it is not used for any purposes.
+
+The endpoint tries to run the object passed in the body of the IN message as the compute job. It expects different payload types depending on the execution type.
+
+#### Expected payload types
+
+Each operation expects the indicated types:
+[width="100%",cols="1,4",options="header"]
+|=======================================================================
+| Operation | Expected payloads
+| CALL | Collection of IgniteCallable, or a single IgniteCallable.
+| BROADCAST | IgniteCallable, IgniteRunnable, IgniteClosure.
+| APPLY | IgniteClosure.
+| EXECUTE | ComputeTask, Class<? extends ComputeTask> or an object representing parameters if the taskName option is not null.
+| RUN | A Collection of IgniteRunnables, or a single IgniteRunnable.
+| AFFINITY_CALL | IgniteCallable.
+| AFFINITY_RUN | IgniteRunnable.
+|=======================================================================
+
+
+
+// component options: START
+The Ignite Compute component supports 4 options which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **ignite** (producer) | Sets the Ignite instance. |  | Ignite
+| **configurationResource** (producer) | Sets the resource from where to load the configuration. It can be a: URI String (URI) or an InputStream. |  | Object
+| **igniteConfiguration** (producer) | Allows the user to set a programmatic IgniteConfiguration. |  | IgniteConfiguration
+| **resolveProperty Placeholders** (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|=======================================================================
+// component options: END
+
+// endpoint options: START
+The Ignite Compute endpoint is configured using URI syntax:
+
+    ignite-compute:[endpointId]
+
+with the following path and query parameters:
+
+#### Path Parameters (1 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **endpointId** | *Required* The endpoint ID (not used). |  | String
+|=======================================================================
+
+#### Query Parameters (8 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **clusterGroupExpression** (producer) | An expression that returns the Cluster Group for the IgniteCompute instance. |  | ClusterGroupExpression
+| **computeName** (producer) | The name of the compute job which will be set via link IgniteComputewithName(String). |  | String
+| **executionType** (producer) | *Required* The compute operation to perform. Possible values: CALL BROADCAST APPLY EXECUTE RUN AFFINITY_CALL AFFINITY_RUN. The component expects different payload types depending on the operation. |  | IgniteComputeExecution Type
+| **propagateIncomingBodyIfNo ReturnValue** (producer) | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | boolean
+| **taskName** (producer) | The task name only applicable if using the link IgniteComputeExecutionTypeEXECUTE execution type. |  | String
+| **timeoutMillis** (producer) | The timeout interval for triggered jobs in milliseconds which will be set via link IgniteComputewithTimeout(long). |  | Long
+| **treatCollectionsAsCache Objects** (producer) | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute etc. | false | boolean
+| **synchronous** (advanced) | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|=======================================================================
+// endpoint options: END
+
+
+#### Headers used
+
+This endpoint uses the following headers:
+[width="100%",cols="1,1,1,4",options="header"]
+|=======================================================================
+| Header name | Constant | Expected type | Description
+| CamelIgniteComputeExecutionType | IgniteConstants.IGNITE_COMPUTE_EXECUTION_TYPE | IgniteComputeExecutionType enum |
+ Allows you to dynamically change the compute operation to perform.
+
+| CamelIgniteComputeParameters | IgniteConstants.IGNITE_COMPUTE_PARAMS | Any object or Collection of objects. |
+Parameters for APPLY, BROADCAST and EXECUTE operations.
+
+| CamelIgniteComputeReducer | IgniteConstants.IGNITE_COMPUTE_REDUCER | IgniteReducer |
+Reducer for the APPLY and CALL operations.
+
+| CamelIgniteComputeAffinityCacheName | IgniteConstants.IGNITE_COMPUTE_AFFINITY_CACHE_NAME | String |
+Affinity cache name for the AFFINITY_CALL and AFFINITY_RUN operations.
+
+| CamelIgniteComputeAffinityKey | IgniteConstants.IGNITE_COMPUTE_AFFINITY_KEY | Object |
+Affinity key for the AFFINITY_CALL and AFFINITY_RUN operations.
+|=======================================================================
+

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/docs/ignite-events-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/docs/ignite-events-component.adoc b/components/camel-ignite/src/main/docs/ignite-events-component.adoc
new file mode 100644
index 0000000..9f8bfa7
--- /dev/null
+++ b/components/camel-ignite/src/main/docs/ignite-events-component.adoc
@@ -0,0 +1,54 @@
+## Ignite Events Component
+
+*Available as of Camel version 2.17*
+
+The Ignite Events endpoint is one of link:ignite.html[camel-ignite endpoints] which allows you to https://apacheignite.readme.io/docs/events[receive events] from the Ignite cluster by creating a local event listener.
+
+This endpoint only supports consumers.
+The Exchanges created by this consumer put the received Event object into the body of the IN message.
+
+// component options: START
+The Ignite Events component supports 4 options which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **ignite** (consumer) | Sets the Ignite instance. |  | Ignite
+| **configurationResource** (consumer) | Sets the resource from where to load the configuration. It can be a: URI String (URI) or an InputStream. |  | Object
+| **igniteConfiguration** (consumer) | Allows the user to set a programmatic IgniteConfiguration. |  | IgniteConfiguration
+| **resolveProperty Placeholders** (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|=======================================================================
+// component options: END
+
+// endpoint options: START
+The Ignite Events endpoint is configured using URI syntax:
+
+    ignite-events:[endpointId]
+
+with the following path and query parameters:
+
+#### Path Parameters (1 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **endpointId** | The endpoint ID (not used). |  | String
+|=======================================================================
+
+#### Query Parameters (8 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **bridgeErrorHandler** (consumer) | Allows for bridging the consumer to the Camel routing Error Handler which mean any exceptions occurred while the consumer is trying to pickup incoming messages or the likes will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions that will be logged at WARN or ERROR level and ignored. | false | boolean
+| **clusterGroupExpression** (consumer) | The cluster group expression. |  | ClusterGroupExpression
+| **events** (consumer) | The event IDs to subscribe to as a Set directly where the IDs are the different constants in org.apache.ignite.events.EventType. | EventType.EVTS_ALL | Set<Integer>OrString
+| **propagateIncomingBodyIfNo ReturnValue** (consumer) | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | boolean
+| **treatCollectionsAsCache Objects** (consumer) | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute etc. | false | boolean
+| **exceptionHandler** (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this options is not in use. By default the consumer will deal with exceptions that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| **exchangePattern** (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| **synchronous** (advanced) | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|=======================================================================
+// endpoint options: END

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/docs/ignite-idgen-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/docs/ignite-idgen-component.adoc b/components/camel-ignite/src/main/docs/ignite-idgen-component.adoc
new file mode 100644
index 0000000..bef9041
--- /dev/null
+++ b/components/camel-ignite/src/main/docs/ignite-idgen-component.adoc
@@ -0,0 +1,51 @@
+## Ignite ID Generator Component
+
+*Available as of Camel version 2.17*
+
+The Ignite ID Generator endpoint is one of link:ignite.html[camel-ignite endpoints] which allows you to interact with https://apacheignite.readme.io/docs/id-generator[Ignite Atomic Sequences and ID Generators].
+
+This endpoint only supports producers.
+
+// component options: START
+The Ignite ID Generator component supports 4 options which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **ignite** (producer) | Sets the Ignite instance. |  | Ignite
+| **configurationResource** (producer) | Sets the resource from where to load the configuration. It can be a: URI String (URI) or an InputStream. |  | Object
+| **igniteConfiguration** (producer) | Allows the user to set a programmatic IgniteConfiguration. |  | IgniteConfiguration
+| **resolveProperty Placeholders** (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|=======================================================================
+// component options: END
+
+// endpoint options: START
+The Ignite ID Generator endpoint is configured using URI syntax:
+
+    ignite-idgen:[name]
+
+with the following path and query parameters:
+
+#### Path Parameters (1 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **name** | *Required* The sequence name. |  | String
+|=======================================================================
+
+#### Query Parameters (6 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **batchSize** (producer) | The batch size. |  | Integer
+| **initialValue** (producer) | The initial value. | 0 | Long
+| **operation** (producer) | The operation to invoke on the Ignite ID Generator. Superseded by the IgniteConstants.IGNITE_IDGEN_OPERATION header in the IN message. Possible values: ADD_AND_GET GET GET_AND_ADD GET_AND_INCREMENT INCREMENT_AND_GET. |  | IgniteIdGenOperation
+| **propagateIncomingBodyIfNo ReturnValue** (producer) | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | boolean
+| **treatCollectionsAsCache Objects** (producer) | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute etc. | false | boolean
+| **synchronous** (advanced) | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|=======================================================================
+// endpoint options: END

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/docs/ignite-messaging-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/docs/ignite-messaging-component.adoc b/components/camel-ignite/src/main/docs/ignite-messaging-component.adoc
new file mode 100644
index 0000000..d5cc8e2
--- /dev/null
+++ b/components/camel-ignite/src/main/docs/ignite-messaging-component.adoc
@@ -0,0 +1,69 @@
+## Ignite Messaging Component
+
+*Available as of Camel version 2.17*
+
+The Ignite Messaging endpoint is one of link:ignite.html[camel-ignite endpoints] which allows you to send and consume messages from an https://apacheignite.readme.io/docs/messaging[Ignite topic].
+
+This endpoint supports producers (to send messages) and consumers (to receive messages).
+
+// component options: START
+The Ignite Messaging component supports 4 options which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **ignite** (common) | Sets the Ignite instance. |  | Ignite
+| **configurationResource** (common) | Sets the resource from where to load the configuration. It can be a: URI String (URI) or an InputStream. |  | Object
+| **igniteConfiguration** (common) | Allows the user to set a programmatic IgniteConfiguration. |  | IgniteConfiguration
+| **resolveProperty Placeholders** (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|=======================================================================
+// component options: END
+
+// endpoint options: START
+The Ignite Messaging endpoint is configured using URI syntax:
+
+    ignite-messaging:[topic]
+
+with the following path and query parameters:
+
+#### Path Parameters (1 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **topic** | *Required* The topic name. |  | String
+|=======================================================================
+
+#### Query Parameters (9 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **propagateIncomingBodyIfNo ReturnValue** (common) | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | boolean
+| **treatCollectionsAsCache Objects** (common) | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute etc. | false | boolean
+| **bridgeErrorHandler** (consumer) | Allows for bridging the consumer to the Camel routing Error Handler which mean any exceptions occurred while the consumer is trying to pickup incoming messages or the likes will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions that will be logged at WARN or ERROR level and ignored. | false | boolean
+| **exceptionHandler** (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this options is not in use. By default the consumer will deal with exceptions that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| **exchangePattern** (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
+| **clusterGroupExpression** (producer) | The cluster group expression. |  | ClusterGroupExpression
+| **sendMode** (producer) | The send mode to use. Possible values: UNORDERED ORDERED. | UNORDERED | IgniteMessagingSend Mode
+| **timeout** (producer) | The timeout for the send operation when using ordered messages. |  | Long
+| **synchronous** (advanced) | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|=======================================================================
+// endpoint options: END
+
+
+#### Headers used
+
+This endpoint uses the following headers:
+[width="100%",cols="1,1,1,4",options="header"]
+|=======================================================================
+| Header name | Constant | Expected type | Description
+| CamelIgniteMessagingTopic | IgniteConstants.IGNITE_MESSAGING_TOPIC | String |
+Allows you to dynamically change the topic to send messages to (producer). 
+It also carries the topic on which a message was received (consumer).
+
+| CamelIgniteMessagingUUID | IgniteConstants.IGNITE_MESSAGING_UUID | UUID |
+This header is filled in with the UUID of the subscription when a message arrives (consumer).
+|=======================================================================

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/docs/ignite-queue-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/docs/ignite-queue-component.adoc b/components/camel-ignite/src/main/docs/ignite-queue-component.adoc
new file mode 100644
index 0000000..1d05796
--- /dev/null
+++ b/components/camel-ignite/src/main/docs/ignite-queue-component.adoc
@@ -0,0 +1,74 @@
+## Ignite Queues Component
+
+*Available as of Camel version 2.17*
+
+The Ignite Queue endpoint is one of link:ignite.html[camel-ignite endpoints] which allows you to interact with https://apacheignite.readme.io/docs/queue-and-set[Ignite Queue data structures].
+
+This endpoint only supports producers.
+
+// component options: START
+The Ignite Queues component supports 4 options which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **ignite** (producer) | Sets the Ignite instance. |  | Ignite
+| **configurationResource** (producer) | Sets the resource from where to load the configuration. It can be a: URI String (URI) or an InputStream. |  | Object
+| **igniteConfiguration** (producer) | Allows the user to set a programmatic IgniteConfiguration. |  | IgniteConfiguration
+| **resolveProperty Placeholders** (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|=======================================================================
+// component options: END
+
+// endpoint options: START
+The Ignite Queues endpoint is configured using URI syntax:
+
+    ignite-queue:[name]
+
+with the following path and query parameters:
+
+#### Path Parameters (1 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **name** | *Required* The queue name. |  | String
+|=======================================================================
+
+#### Query Parameters (7 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **capacity** (producer) | The queue capacity. Default: non-bounded. |  | int
+| **configuration** (producer) | The collection configuration. Default: empty configuration. You can also conveniently set inner properties by using configuration.xyz=123 options. |  | CollectionConfiguration
+| **operation** (producer) | The operation to invoke on the Ignite Queue. Superseded by the IgniteConstants.IGNITE_QUEUE_OPERATION header in the IN message. Possible values: CONTAINS ADD SIZE REMOVE ITERATOR CLEAR RETAIN_ALL ARRAY DRAIN ELEMENT PEEK OFFER POLL TAKE PUT. |  | IgniteQueueOperation
+| **propagateIncomingBodyIfNo ReturnValue** (producer) | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | boolean
+| **timeoutMillis** (producer) | The queue timeout in milliseconds. Default: no timeout. |  | Long
+| **treatCollectionsAsCache Objects** (producer) | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute etc. | false | boolean
+| **synchronous** (advanced) | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|=======================================================================
+// endpoint options: END
+
+
+
+#### Headers used
+
+This endpoint uses the following headers:
+[width="100%",cols="1,1,1,4",options="header"]
+|=======================================================================
+| Header name | Constant | Expected type | Description
+| CamelIgniteQueueOperation | IgniteConstants.IGNITE_QUEUE_OPERATION | IgniteQueueOperation enum |
+Allows you to dynamically change the queue operation.
+
+| CamelIgniteQueueMaxElements | IgniteConstants.IGNITE_QUEUE_MAX_ELEMENTS | Integer or int |
+When invoking the DRAIN operation, the amount of items to drain.
+
+| CamelIgniteQueueTransferredCount | IgniteConstants.IGNITE_QUEUE_TRANSFERRED_COUNT | Integer or int |
+The amount of items transferred as the result of the DRAIN operation.
+
+| CamelIgniteQueueTimeoutMillis | IgniteConstants.IGNITE_QUEUE_TIMEOUT_MILLIS | Long or long |
+Dynamically sets the timeout in milliseconds to use when invoking the OFFER or POLL operations. 
+|=======================================================================
+

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/docs/ignite-set-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/docs/ignite-set-component.adoc b/components/camel-ignite/src/main/docs/ignite-set-component.adoc
new file mode 100644
index 0000000..f161a6e
--- /dev/null
+++ b/components/camel-ignite/src/main/docs/ignite-set-component.adoc
@@ -0,0 +1,63 @@
+## Ignite Sets Component
+
+*Available as of Camel version 2.17*
+
+The Ignite Sets endpoint is one of link:ignite.html[camel-ignite endpoints] which allows you to interact with https://apacheignite.readme.io/docs/queue-and-set[Ignite Set data structures].
+
+This endpoint only supports producers.
+
+// component options: START
+The Ignite Sets component supports 4 options which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **ignite** (producer) | Sets the Ignite instance. |  | Ignite
+| **configurationResource** (producer) | Sets the resource from where to load the configuration. It can be a: URI String (URI) or an InputStream. |  | Object
+| **igniteConfiguration** (producer) | Allows the user to set a programmatic IgniteConfiguration. |  | IgniteConfiguration
+| **resolveProperty Placeholders** (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
+|=======================================================================
+// component options: END
+
+// endpoint options: START
+The Ignite Sets endpoint is configured using URI syntax:
+
+    ignite-set:[name]
+
+with the following path and query parameters:
+
+#### Path Parameters (1 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **name** | *Required* The set name. |  | String
+|=======================================================================
+
+#### Query Parameters (5 parameters):
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|=======================================================================
+| Name | Description | Default | Type
+| **configuration** (producer) | The collection configuration. Default: empty configuration. You can also conveniently set inner properties by using configuration.xyz=123 options. |  | CollectionConfiguration
+| **operation** (producer) | The operation to invoke on the Ignite Set. Superseded by the IgniteConstants.IGNITE_SETS_OPERATION header in the IN message. Possible values: CONTAINS ADD SIZE REMOVE ITERATOR CLEAR RETAIN_ALL ARRAY.The set operation to perform. |  | IgniteSetOperation
+| **propagateIncomingBodyIfNo ReturnValue** (producer) | Sets whether to propagate the incoming body if the return type of the underlying Ignite operation is void. | true | boolean
+| **treatCollectionsAsCache Objects** (producer) | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute etc. | false | boolean
+| **synchronous** (advanced) | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported). | false | boolean
+|=======================================================================
+// endpoint options: END
+
+
+
+#### Headers used
+
+This endpoint uses the following headers:
+[width="100%",cols="1,1,1,4",options="header"]
+|=======================================================================
+| Header name | Constant | Expected type | Description
+| CamelIgniteSetsOperation | IgniteConstants.IGNITE_SETS_OPERATION | IgniteSetOperation enum |
+Allows you to dynamically change the set operation.
+|=======================================================================
+

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/docs/ignite.adoc
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/docs/ignite.adoc b/components/camel-ignite/src/main/docs/ignite.adoc
new file mode 100644
index 0000000..0cc2634
--- /dev/null
+++ b/components/camel-ignite/src/main/docs/ignite.adoc
@@ -0,0 +1,111 @@
+## Ignite endpoints Component
+
+*Available as of Camel version 2.17*
+
+https://ignite.apache.org/[Apache Ignite] In-Memory Data Fabric is a high-performance, integrated and distributed in-memory platform for computing and transacting on large-scale data sets in real-time, orders of magnitude faster than possible with traditional disk-based or flash technologies. It is designed to deliver uncompromised performance for a wide set of in-memory computing use cases from high performance computing, to the industry most advanced data grid, highly available service grid, and streaming. See all https://ignite.apache.org/features.html[features].
+
+image:https://ignite.apache.org/images/apache-ignite.png[]
+
+This component offers seven endpoints to cover much of Ignite's functionality:
+
+* link:ignite-cache-component.html[Ignite Cache].
+* link:ignite-compute-component.html[Ignite Compute].
+* link:ignite-messaging-component.html[Ignite Messaging].
+* link:ignite-events-component.html[Ignite Events].
+* link:ignite-set-component.html[Ignite Sets].
+* link:ignite-queue-component.html[Ignite Queues].
+* link:ignite-idgen-component.html[Ignite ID Generator].
+
+To use this component, add the following dependency to your pom.xml:
+
+[source,xml]
+----
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-ignite</artifactId>
+    <version>${camel.version}</version> <!-- use the same version as your Camel core version -->
+</dependency>
+----
+
+[IMPORTANT,title=Running in OSGi]
+====
+If running in an OSGi container, please don't miss the <<Ignite-OsgiSupport,OSGi Support>> section below.
+====
+
+
+
+### Initializing the Ignite component
+
+Each instance of the Ignite component is associated with an underlying org.apache.ignite.Ignite instance. You can interact with two Ignite clusters by initializing two instances of the Ignite component and binding them to different IgniteConfigurations. There are 3 ways to initialize the Ignite component:
+
+* By passing in an existing org.apache.ignite.Ignite instance. Here's an example using Spring config:
+
+[source,xml]
+------------------------------------------------------------
+<bean name="ignite" class="org.apache.camel.component.ignite.IgniteComponent">
+   <property name="ignite" ref="ignite" />
+</bean>
+------------------------------------------------------------
+
+* By passing in an IgniteConfiguration, either constructed programmatically or through inversion of control (e.g. Spring, Blueprint, etc.). Here's an example using Spring config:
+
+[source,xml]
+-------------------------------------------------------------------
+<bean name="ignite" class="org.apache.camel.component.ignite.IgniteComponent">
+   <property name="igniteConfiguration">
+      <bean class="org.apache.ignite.configuration.IgniteConfiguration">
+         [...]
+      </bean>
+   </property>
+</bean>
+-------------------------------------------------------------------
+
+* By passing in a URL, InputStream or String URL to a Spring-based configuration file. In all three cases, you inject them in the same property called configurationResource. Here's an example using Spring config:
+
+[source,xml]
+-------------------------------------------------------------------
+<bean name="ignite" class="org.apache.camel.component.ignite.IgniteComponent">
+   <property name="configurationResource" value="file:[...]/ignite-config.xml" />
+</bean>
+-------------------------------------------------------------------
+
+Additionally, if using Camel programmatically, there are several convenience static methods in IgniteComponent that return a component out of any of these configuration options:
+
+* IgniteComponent#fromIgnite(Ignite)
+* IgniteComponent#fromConfiguration(IgniteConfiguration)
+* IgniteComponent#fromInputStream(InputStream)
+* IgniteComponent#fromUrl(URL)
+* IgniteComponent#fromLocation(String)
+
+You may use those methods to quickly create an IgniteComponent with your chosen configuration technique.
+
+### General options
+
+All endpoints share the following options:
+[width="100%",cols="1,1,1,4,1,1",options="header"]
+|=======================================================================
+| Option | Type | Default value | Description
+| propagateIncomingBodyIfNoReturnValue | boolean | true |
+If the underlying Ignite operation returns void (no return type), this flag determines whether the producer will copy the IN body into the OUT body.
+
+| treatCollectionsAsCacheObjects | boolean | false |
+Some Ignite operations can deal with multiple elements at once, if passed a Collection. Enabling this option will treat Collections as a single object, invoking the operation variant for cardinality 1.
+|=======================================================================
+
+### OSGi Support
+
+TIP: Apache Ignite supports OSGi from version 1.5.0.final onwards.
+
+When installing on Apache Karaf:
+
+1. Installing the camel-ignite feature will require the Ignite feature repository to be present.
+2. You must have exported from the JRE (system bundle) some low-level, non-standard packages that Ignite requires.
+
+Please refer to the OSGi section in the Ignite documentation for more information.
+
+### See Also
+
+* http://camel.apache.org/configuring-camel.html[Configuring Camel]
+* http://camel.apache.org/component.html[Component]
+* http://camel.apache.org/endpoint.html[Endpoint]
+* http://camel.apache.org/getting-started.html[Getting Started]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/AbstractIgniteComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/AbstractIgniteComponent.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/AbstractIgniteComponent.java
new file mode 100644
index 0000000..1c56340
--- /dev/null
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/AbstractIgniteComponent.java
@@ -0,0 +1,156 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.ignite;
+
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
+import java.util.Map;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.component.ignite.cache.IgniteCacheEndpoint;
+import org.apache.camel.component.ignite.compute.IgniteComputeEndpoint;
+import org.apache.camel.component.ignite.events.IgniteEventsEndpoint;
+import org.apache.camel.component.ignite.idgen.IgniteIdGenEndpoint;
+import org.apache.camel.component.ignite.messaging.IgniteMessagingEndpoint;
+import org.apache.camel.component.ignite.queue.IgniteQueueEndpoint;
+import org.apache.camel.component.ignite.set.IgniteSetEndpoint;
+import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.URISupport;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.configuration.IgniteConfiguration;
+
+/**
+ * This is a base class of camel-ignite components which correspond to following Apache Ignite functions:
+ * <ul>
+ * <li>{@link IgniteSetComponent}: Cache operations.</li>
+ * <li>{@link IgniteSetComponent}: Cluster computation.</li>
+ * <li>{@link IgniteSetComponent}: Messaging.</li>
+ * <li>{@link IgniteSetComponent}: Eventing.</li>
+ * <li>{@link IgniteSetComponent}: Id Generation.</li>
+ * <li>{@link IgniteSetComponent}: Set operations.</li>
+ * <li>{@link IgniteSetComponent}: Queue operations.</li>
+ * </ul>
+ */
+public abstract class AbstractIgniteComponent extends DefaultComponent {
+
+    /**
+     * Modes of managing the underlying {@link Ignite} instance. 
+     */
+    public enum IgniteLifecycleMode {
+        USER_MANAGED, COMPONENT_MANAGED
+    }
+
+    /** Ignite configuration. */
+    private IgniteConfiguration igniteConfiguration;
+
+    /** Resource from where to load configuration. */
+    private Object configurationResource;
+
+    /** Ignite instance. */
+    private Ignite ignite;
+
+    /** How the Ignite lifecycle is managed. */
+    private IgniteLifecycleMode lifecycleMode = IgniteLifecycleMode.COMPONENT_MANAGED;
+
+    @Override
+    protected void doStart() throws Exception {
+        super.doStart();
+
+        if (lifecycleMode == IgniteLifecycleMode.USER_MANAGED) {
+            return;
+        }
+
+        // Try to load the configuration from the resource.
+        if (configurationResource != null) {
+            if (configurationResource instanceof URL) {
+                ignite = Ignition.start((URL) configurationResource);
+            } else if (configurationResource instanceof InputStream) {
+                ignite = Ignition.start((InputStream) configurationResource);
+            } else if (configurationResource instanceof String) {
+                ignite = Ignition.start((String) configurationResource);
+            } else {
+                throw new IllegalStateException("An unsupported configuration resource was provided to the Ignite component. " + "Supported types are: URL, InputStream, String.");
+            }
+        } else if (igniteConfiguration != null) {
+            ignite = Ignition.start(igniteConfiguration);
+        } else {
+            throw new IllegalStateException("No configuration resource or IgniteConfiguration was provided to the Ignite component.");
+        }
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        super.doStop();
+
+        if (lifecycleMode == IgniteLifecycleMode.USER_MANAGED) {
+            return;
+        }
+
+        if (ignite != null) {
+            ignite.close();
+        }
+    }
+
+    /**
+     * Returns the {@link Ignite} instance.
+     */
+    public Ignite getIgnite() {
+        return ignite;
+    }
+
+    /**
+     * Sets the {@link Ignite} instance.
+     */
+    public void setIgnite(Ignite ignite) {
+        this.ignite = ignite;
+    }
+
+    /**
+     * Gets the resource from where to load the configuration. It can be a: {@link URI}, {@link String} (URI) 
+     * or an {@link InputStream}.
+     */
+    public Object getConfigurationResource() {
+        return configurationResource;
+    }
+
+    /**
+     * Sets the resource from where to load the configuration. It can be a: {@link URI}, {@link String} (URI) 
+     * or an {@link InputStream}.
+     */
+    public void setConfigurationResource(Object configurationResource) {
+        this.configurationResource = configurationResource;
+    }
+
+    /**
+     * Gets the {@link IgniteConfiguration} if the user set it explicitly.
+     */
+    public IgniteConfiguration getIgniteConfiguration() {
+        return igniteConfiguration;
+    }
+
+    /**
+     * Allows the user to set a programmatic {@link IgniteConfiguration}.
+     */
+    public void setIgniteConfiguration(IgniteConfiguration igniteConfiguration) {
+        this.igniteConfiguration = igniteConfiguration;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/AbstractIgniteEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/AbstractIgniteEndpoint.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/AbstractIgniteEndpoint.java
index b787d15..44ddaf6 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/AbstractIgniteEndpoint.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/AbstractIgniteEndpoint.java
@@ -20,15 +20,15 @@ import org.apache.camel.Component;
 import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
+import org.apache.camel.spi.UriPath;
 import org.apache.ignite.Ignite;
 
 /**
  * Base class for all Ignite endpoints. 
  */
-@UriEndpoint(firstVersion = "2.17.0", scheme = "ignite:...", title = "Ignite endpoints", syntax = "ignite:...", label = "nosql,cache,compute", producerOnly = true)
 public abstract class AbstractIgniteEndpoint extends DefaultEndpoint {
 
-    protected IgniteComponent component;
+    protected AbstractIgniteComponent component;
 
     @UriParam(defaultValue = "true")
     private boolean propagateIncomingBodyIfNoReturnValue = true;
@@ -45,9 +45,9 @@ public abstract class AbstractIgniteEndpoint extends DefaultEndpoint {
         return false;
     }
 
-    protected IgniteComponent igniteComponent() {
+    protected AbstractIgniteComponent igniteComponent() {
         if (component == null) {
-            component = (IgniteComponent) getComponent();
+            component = (AbstractIgniteComponent) getComponent();
         }
         return component;
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/IgniteComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/IgniteComponent.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/IgniteComponent.java
index beccf93..c10c614 100644
--- a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/IgniteComponent.java
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/IgniteComponent.java
@@ -36,6 +36,8 @@ import org.apache.camel.util.URISupport;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.Ignition;
 import org.apache.ignite.configuration.IgniteConfiguration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * The Ignite Component integrates Apache Camel with Apache Ignite, providing endpoints for the following functions:
@@ -48,31 +50,14 @@ import org.apache.ignite.configuration.IgniteConfiguration;
  * <li>Set operations.</li>
  * <li>Queue operations.</li>
  * </ul>
+ * @deprecated Use {@link IgniteSetComponent}, {@link IgniteSetComponent}, {@link IgniteSetComponent},
+ * {@link IgniteSetComponent}, {@link IgniteSetComponent}, {@link IgniteSetComponent} and
+ * {@link IgniteSetComponent}
  */
-public class IgniteComponent extends UriEndpointComponent {
+@Deprecated
+public class IgniteComponent extends AbstractIgniteComponent {
 
-    /**
-     * Modes of managing the underlying {@link Ignite} instance. 
-     */
-    public enum IgniteLifecycleMode {
-        USER_MANAGED, COMPONENT_MANAGED
-    }
-
-    /** Ignite configuration. */
-    private IgniteConfiguration igniteConfiguration;
-
-    /** Resource from where to load configuration. */
-    private Object configurationResource;
-
-    /** Ignite instance. */
-    private Ignite ignite;
-
-    /** How the Ignite lifecycle is managed. */
-    private IgniteLifecycleMode lifecycleMode = IgniteLifecycleMode.COMPONENT_MANAGED;
-
-    public IgniteComponent() {
-        super(AbstractIgniteEndpoint.class);
-    }
+    private static final Logger LOG = LoggerFactory.getLogger(IgniteComponent.class);
 
     public static IgniteComponent fromIgnite(Ignite ignite) {
         IgniteComponent answer = new IgniteComponent();
@@ -112,6 +97,8 @@ public class IgniteComponent extends UriEndpointComponent {
         URI remainingUri = new URI(URISupport.normalizeUri(remaining));
         String scheme = remainingUri.getScheme();
 
+        LOG.warn("The scheme syntax 'ignite:{}' has been deprecated. Use 'ignite-{}' instead.", scheme, scheme);
+
         switch (scheme) {
         case "cache":
             answer = new IgniteCacheEndpoint(uri, remainingUri, parameters, this);
@@ -145,87 +132,4 @@ public class IgniteComponent extends UriEndpointComponent {
         return answer;
     }
 
-    @Override
-    protected void doStart() throws Exception {
-        super.doStart();
-
-        if (lifecycleMode == IgniteLifecycleMode.USER_MANAGED) {
-            return;
-        }
-
-        // Try to load the configuration from the resource.
-        if (configurationResource != null) {
-            if (configurationResource instanceof URL) {
-                ignite = Ignition.start((URL) configurationResource);
-            } else if (configurationResource instanceof InputStream) {
-                ignite = Ignition.start((InputStream) configurationResource);
-            } else if (configurationResource instanceof String) {
-                ignite = Ignition.start((String) configurationResource);
-            } else {
-                throw new IllegalStateException("An unsupported configuration resource was provided to the Ignite component. " + "Supported types are: URL, InputStream, String.");
-            }
-        } else if (igniteConfiguration != null) {
-            ignite = Ignition.start(igniteConfiguration);
-        } else {
-            throw new IllegalStateException("No configuration resource or IgniteConfiguration was provided to the Ignite component.");
-        }
-    }
-
-    @Override
-    protected void doStop() throws Exception {
-        super.doStop();
-
-        if (lifecycleMode == IgniteLifecycleMode.USER_MANAGED) {
-            return;
-        }
-
-        if (ignite != null) {
-            ignite.close();
-        }
-    }
-
-    /**
-     * Returns the {@link Ignite} instance.
-     */
-    public Ignite getIgnite() {
-        return ignite;
-    }
-
-    /**
-     * Sets the {@link Ignite} instance.
-     */
-    public void setIgnite(Ignite ignite) {
-        this.ignite = ignite;
-    }
-
-    /**
-     * Gets the resource from where to load the configuration. It can be a: {@link URI}, {@link String} (URI) 
-     * or an {@link InputStream}.
-     */
-    public Object getConfigurationResource() {
-        return configurationResource;
-    }
-
-    /**
-     * Sets the resource from where to load the configuration. It can be a: {@link URI}, {@link String} (URI) 
-     * or an {@link InputStream}.
-     */
-    public void setConfigurationResource(Object configurationResource) {
-        this.configurationResource = configurationResource;
-    }
-
-    /**
-     * Gets the {@link IgniteConfiguration} if the user set it explicitly.
-     */
-    public IgniteConfiguration getIgniteConfiguration() {
-        return igniteConfiguration;
-    }
-
-    /**
-     * Allows the user to set a programmatic {@link IgniteConfiguration}.
-     */
-    public void setIgniteConfiguration(IgniteConfiguration igniteConfiguration) {
-        this.igniteConfiguration = igniteConfiguration;
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/df656782/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/cache/IgniteCacheComponent.java
----------------------------------------------------------------------
diff --git a/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/cache/IgniteCacheComponent.java b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/cache/IgniteCacheComponent.java
new file mode 100644
index 0000000..70098f4
--- /dev/null
+++ b/components/camel-ignite/src/main/java/org/apache/camel/component/ignite/cache/IgniteCacheComponent.java
@@ -0,0 +1,78 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.ignite.cache;
+
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
+import java.util.Map;
+
+import org.apache.camel.Endpoint;
+import org.apache.camel.component.ignite.AbstractIgniteComponent;
+import org.apache.camel.util.ObjectHelper;
+import org.apache.camel.util.URISupport;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The Ignite Cache Component.
+ */
+public class IgniteCacheComponent extends AbstractIgniteComponent {
+
+    public static IgniteCacheComponent fromIgnite(Ignite ignite) {
+        IgniteCacheComponent answer = new IgniteCacheComponent();
+        answer.setIgnite(ignite);
+        return answer;
+    }
+
+    public static IgniteCacheComponent fromConfiguration(IgniteConfiguration configuration) {
+        IgniteCacheComponent answer = new IgniteCacheComponent();
+        answer.setIgniteConfiguration(configuration);
+        return answer;
+    }
+
+    public static IgniteCacheComponent fromInputStream(InputStream inputStream) {
+        IgniteCacheComponent answer = new IgniteCacheComponent();
+        answer.setConfigurationResource(inputStream);
+        return answer;
+    }
+
+    public static IgniteCacheComponent fromUrl(URL url) {
+        IgniteCacheComponent answer = new IgniteCacheComponent();
+        answer.setConfigurationResource(url);
+        return answer;
+    }
+
+    public static IgniteCacheComponent fromLocation(String location) {
+        IgniteCacheComponent answer = new IgniteCacheComponent();
+        answer.setConfigurationResource(location);
+        return answer;
+    }
+
+    @Override
+    protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception {
+        ObjectHelper.notNull(getCamelContext(), "Camel Context");
+        IgniteCacheEndpoint answer = new IgniteCacheEndpoint(uri, remaining, parameters, this);
+        setProperties(answer, parameters);
+        return answer;
+    }
+
+}