[[atomix-multimap-component]]
= Atomix MultiMap Component
:page-source: components/camel-atomix/src/main/docs/atomix-multimap-component.adoc

*Since Camel 2.20*

// HEADER START
*Only consumer is supported*
// HEADER END

The camel Atomix-Multimap component allows you to work with http://atomix.io[Atomix's] https://atomix.io/docs/latest/user-manual/primitives/DistributedMultimap/[Distributed MultiMap] 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-multimap:multiMapName
----

// component options: START
The Atomix MultiMap component supports 7 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *configuration* (consumer) | The shared component configuration |  | AtomixMultiMapConfiguration
| *atomix* (consumer) | The shared AtomixClient instance |  | AtomixClient
| *nodes* (consumer) | The nodes the AtomixClient should connect to |  | List
| *configurationUri* (consumer) | The path to the AtomixClient configuration |  | String
| *basicPropertyBinding* (advanced) | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | 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
| *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
|===
// component options: END

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

----
atomix-multimap: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 (19 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *atomix* (consumer) | The Atomix instance to use |  | Atomix
| *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
| *configurationUri* (consumer) | The Atomix configuration uri. |  | String
| *defaultAction* (consumer) | The default action. | PUT | Action
| *key* (consumer) | The key to use if none is set in the header or to listen for events for a specific key. |  | Object
| *nodes* (consumer) | The address of the nodes composing the cluster. |  | String
| *resultHeader* (consumer) | The header that wil carry the result. |  | String
| *transportClassName* (consumer) | The class name (fqn) of the Atomix transport | io.atomix.catalyst.transport.netty.NettyTransport | String
| *ttl* (consumer) | The resource ttl. |  | long
| *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. |  | ExchangePattern
| *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. |  | 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
// spring-boot-auto-configure options: START
== Spring Boot Auto-Configuration

When using Spring Boot make sure to use the following Maven dependency to have support for auto configuration:

[source,xml]
----
<dependency>
  <groupId>org.apache.camel.springboot</groupId>
  <artifactId>camel-atomix-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>
----


The component supports 11 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *camel.component.atomix-multimap.atomix* | The shared AtomixClient instance. The option is a io.atomix.AtomixClient type. |  | String
| *camel.component.atomix-multimap.basic-property-binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | Boolean
| *camel.component.atomix-multimap.bridge-error-handler* | 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
| *camel.component.atomix-multimap.configuration-uri* | The path to the AtomixClient configuration |  | String
| *camel.component.atomix-multimap.configuration.default-action* | The default action. |  | AtomixMultiMap$Action
| *camel.component.atomix-multimap.configuration.key* | The key to use if none is set in the header or to listen for events for a specific key. |  | Object
| *camel.component.atomix-multimap.configuration.result-header* | The header that wil carry the result. |  | String
| *camel.component.atomix-multimap.configuration.ttl* | The resource ttl. |  | Long
| *camel.component.atomix-multimap.enabled* | Whether to enable auto configuration of the atomix-multimap component. This is enabled by default. |  | Boolean
| *camel.component.atomix-multimap.lazy-start-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
| *camel.component.atomix-multimap.nodes* | The nodes the AtomixClient should connect to |  | List
|===
// spring-boot-auto-configure options: END

