[[ignite-compute-component]]
= Ignite Compute Component
//THIS FILE IS COPIED: EDIT THE SOURCE FILE:
:page-source: components/camel-ignite/src/main/docs/ignite-compute-component.adoc
:docTitle: Ignite Compute
:artifactId: camel-ignite
:description: Run compute operations on an Ignite cluster.
:since: 2.17
:supportLevel: Stable
:component-header: Only producer is supported
//Manually maintained attributes
:group: Ignite

*Since Camel {since}*

*{component-header}*

The Ignite Compute endpoint is one of 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.

== Options

// component options: START
The Ignite Compute component supports 5 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *configurationResource* (producer) | The resource from where to load the configuration. It can be a: URL, String or InputStream type. |  | Object
| *ignite* (producer) | To use an existing Ignite instance. |  | Ignite
| *igniteConfiguration* (producer) | Allows the user to set a programmatic ignite configuration. |  | IgniteConfiguration
| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean
| *basicPropertyBinding* (advanced) | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | 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 (10 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 IgniteCompute#withName(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. The value can be one of: CALL, BROADCAST, APPLY, EXECUTE, RUN, AFFINITY_CALL, AFFINITY_RUN |  | IgniteComputeExecutionType
| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean
| *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 IgniteComputeExecutionType#EXECUTE execution type. |  | String
| *timeoutMillis* (producer) | The timeout interval for triggered jobs, in milliseconds, which will be set via IgniteCompute#withTimeout(long). |  | Long
| *treatCollectionsAsCacheObjects* (producer) | Sets whether to treat Collections as cache objects or as Collections of items to insert/update/compute, etc. | false | boolean
| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | 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



=== 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.
|=======================================================================

=== 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.
|=======================================================================

include::camel-spring-boot::page$ignite-starter.adoc[]
