[[atomix-map-component]]
= Atomix Map Component
//THIS FILE IS COPIED: EDIT THE SOURCE FILE:
:page-source: components/camel-atomix/src/main/docs/atomix-map-component.adoc
:docTitle: Atomix Map
:artifactId: camel-atomix
:description: Access Atomix's distributed map.
:since: 2.20
:supportLevel: Stable
:component-header: Both producer and consumer are supported

*Since Camel {since}*

*{component-header}*

The camel Atomix-Map component allows you to work with http://atomix.io[Atomix's] https://atomix.io/docs/latest/user-manual/primitives/DistributedMap/[Distributed Map] collection.

Maven users will need to add the following dependency to their pom.xml for this component:

[source,java]
----
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-atomix</artifactId>
        <version>${camel-version}</version>
    </dependency>
----

== URI format

[source,java]
----
    atomix-map:mapName
----

== Options

// component options: START
The Atomix Map component supports 18 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *atomix* (common) | The Atomix instance to use |  | Atomix
| *configuration* (common) | The shared component configuration |  | AtomixMapConfiguration
| *configurationUri* (common) | The path to the AtomixClient configuration |  | String
| *defaultAction* (common) | The default action. The value can be one of: PUT, PUT_IF_ABSENT, GET, CLEAR, SIZE, CONTAINS_KEY, CONTAINS_VALUE, IS_EMPTY, ENTRY_SET, REMOVE, REPLACE, VALUES | PUT | Action
| *key* (common) | The key to use if none is set in the header or to listen for events for a specific key. |  | Object
| *nodes* (common) | The nodes the AtomixClient should connect to |  | List
| *resultHeader* (common) | The header that wil carry the result. |  | String
| *transportClassName* (common) | The class name (fqn) of the Atomix transport | io.atomix.catalyst.transport.netty.NettyTransport | String
| *ttl* (common) | The resource ttl. |  | long
| *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
| *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
| *defaultResourceConfig* (advanced) | The cluster wide default resource configuration. |  | Properties
| *defaultResourceOptions* (advanced) | The local default resource options. |  | Properties
| *ephemeral* (advanced) | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | boolean
| *readConsistency* (advanced) | The read consistency level. The value can be one of: ATOMIC, ATOMIC_LEASE, SEQUENTIAL, LOCAL |  | ReadConsistency
| *resourceConfigs* (advanced) | Cluster wide resources configuration. |  | Map
| *resourceOptions* (advanced) | Local resources configurations |  | Map
|===
// component options: END

// endpoint options: START
The Atomix Map endpoint is configured using URI syntax:

----
atomix-map:resourceName
----

with the following path and query parameters:

=== Path Parameters (1 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *resourceName* | *Required* The distributed resource name |  | String
|===


=== Query Parameters (20 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *atomix* (common) | The Atomix instance to use |  | Atomix
| *configurationUri* (common) | The Atomix configuration uri. |  | String
| *defaultAction* (common) | The default action. The value can be one of: PUT, PUT_IF_ABSENT, GET, CLEAR, SIZE, CONTAINS_KEY, CONTAINS_VALUE, IS_EMPTY, ENTRY_SET, REMOVE, REPLACE, VALUES | PUT | Action
| *key* (common) | The key to use if none is set in the header or to listen for events for a specific key. |  | Object
| *nodes* (common) | The address of the nodes composing the cluster. |  | String
| *resultHeader* (common) | The header that wil carry the result. |  | String
| *transportClassName* (common) | The class name (fqn) of the Atomix transport | io.atomix.catalyst.transport.netty.NettyTransport | String
| *ttl* (common) | The resource ttl. |  | long
| *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 option 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. The value can be one of: InOnly, InOut, InOptionalOut |  | ExchangePattern
| *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 endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
| *defaultResourceConfig* (advanced) | The cluster wide default resource configuration. |  | Properties
| *defaultResourceOptions* (advanced) | The local default resource options. |  | Properties
| *ephemeral* (advanced) | Sets if the local member should join groups as PersistentMember or not. If set to ephemeral the local member will receive an auto generated ID thus the local one is ignored. | false | boolean
| *readConsistency* (advanced) | The read consistency level. The value can be one of: ATOMIC, ATOMIC_LEASE, SEQUENTIAL, LOCAL |  | ReadConsistency
| *resourceConfigs* (advanced) | Cluster wide resources configuration. |  | Map
| *resourceOptions* (advanced) | Local resources configurations |  | Map
| *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

[width="100%",cols="10%,10%,20%a,60%",options="header",]
|===
| Name
| Type
| Values
| Description

| CamelAtomixResourceAction
| AtomixMap.Action
| * PUT
  * PUT_IF_ABSENT
  * GET
  * CLEAR
  * SIZE
  * CONTAINS_KEY
  * CONTAINS_VALUE
  * IS_EMPTY
  * ENTRY_SET
  * REMOVE
  * REPLACE
  * VALUES
| The action to perform

| CamelAtomixResourceKey
| Object
| -
| The key to operate on

| CamelAtomixResourceValue
| Object
| -
| The value, if missing In Body is used

| CamelAtomixResourceOldValue
| Object
| -
| The old value

| CamelAtomixResourceTTL
| String / long
| -
| The entry TTL

| CamelAtomixResourceReadConsistency
| ReadConsistency
| * ATOMIC
  * ATOMIC_LEASE
  * SEQUENTIAL
  * LOCAL
| The read consistency level

|===

== Configuring the component to connect to an Atomix cluster

The nodes of the Atomix cluster you want to join can be se at Endpoint or component level (recommended), below some examples:

* *Endpoint:*
+
[source,xml]
----
<beans xmlns="...">
    <camelContext xmlns="http://camel.apache.org/schema/spring">
        <from uri="direct:start"/>
            <to uri="atomix-map:myMap?nodes=node-1.atomix.cluster:8700,node-2.atomix.cluster:8700"/>
        </route>
    </camelContext>
</beans>
----

* *Component:*
+
[source,xml]
----
<beans xmlns="...">
    <bean id="atomix-map" class="org.apache.camel.component.atomix.client.map.AtomixMapComponent">
        <property name="nodes" value="nodes=node-1.atomix.cluster:8700,node-2.atomix.cluster:8700"/>
    </bean>

    <camelContext xmlns="http://camel.apache.org/schema/spring">
        <from uri="direct:start"/>
            <to uri="atomix-map:myMap"/>
        </route>
    </camelContext>
</beans>
----

== Usage examples:

* *PUT an element with TTL of 1 second:*
+
[source,java]
----
FluentProducerTemplate.on(context)
    .withHeader(AtomixClientConstants.RESOURCE_ACTION, AtomixMap.Action.PUT)
    .withHeader(AtomixClientConstants.RESOURCE_KEY, key)
    .withHeader(AtomixClientConstants.RESOURCE_TTL, "1s")
    .withBody(val)
    .to("direct:start")
    .send();
----

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