= Component Starters
:cellformats: cellformats="$xref|util.starterArtifactId(this)|supportlevel|since|description"
:base-query: component=components,relative=*.adoc,exclude='*-summary.adoc,index.adoc'
:base-attributes-query: {base-query},attributes=camel-spring-boot-name
:base-deprecated-query: {base-query},attributes='camel-spring-boot-name,deprecated'
:base-missing-query: {base-query},attributes=!camel-spring-boot-name

// Count all starter JSON files excluding cluster service starters
include::indexcount$[component=components,module=spring-boot,family=example,exclude='*-cluster-service.json',queries='existing=']
include::indexuniquecount$[component=components,module=*,attributes=camel-spring-boot-name,formats='used=camelSpringBootName']

ifeval::[{used} != {existing}]
:sb-statistics: true
There are unused json files.
endif::[]

ifdef::sb-statistics[]
== Statistics

If this section appears in the (failed) website build, there is a mismatch between the camel spring boot starter json files, which are used to generate the spring-boot section of main camel component documentation, and the names used in those main camel component documentation pages.
The names of the unused spring boot starter json files are listed below.
Each of these needs to be used in a component doc page as the `camel-spring-boot-name` header attribute, like this:

[source,adoc]
----
:camel-spring-boot-name: springdoc
----

There are {existing} spring boot starter json files.

Of these {used} are used in components, dataformats, etc.

NOTE: Cluster service starters (consul, file, infinispan, jgroups-raft, kubernetes, zookeeper) are documented in the <<Cluster Services>> section below.

=== Unused spring-boot-starter names

[indexBlock, 'resourceid=$resourceid,sbname=util.extractSBName($resourceid)',component=components,module=spring-boot,family=example,exclude='*-cluster-service.json',requires={requires}]
----

%include::indexcount$[component=components,module=*,attributes='camel-spring-boot-name={sbname}',queries='using=']

%ifeval::[{using} == 0]
{sbname}
%endif::[]
----

== Camel Spring Boot
endif::[]

Apache Camel Spring Boot supports the following Camel artifacts as Spring Boot Starters

== Camel Components

:components-query: module=ROOT,{base-attributes-query}

Number of Camel components: indexCount:[{components-query}] in indexUniqueCount:[{components-query},format=artifactid] JAR artifacts (indexCount:[module=ROOT,{base-deprecated-query}] deprecated)

[{index-table-format}]
|===
| Component | Artifact | Support Level | Since | Description
|===
indexTable::[{cellformats},{requires},{components-query}]

ifdef::sb-statistics[]
=== Non-Spring-Boot Components

[{index-table-format}]
|===
| Component | Artifact | Support Level | Since | Description
|===
indexTable::[{cellformats},{requires},module=ROOT,{base-missing-query}]
endif::[]

== Camel Data Formats

:dataformats-query: module=dataformats,{base-attributes-query}

Number of Camel data formats: indexCount:[{dataformats-query}] in indexUniqueCount:[{dataformats-query},format=artifactid] JAR artifacts (indexCount:[module=dataformats,{base-deprecated-query}] deprecated)

[{index-table-format}]
|===
| Data Format | Artifact | Support Level | Since | Description
|===
indexTable::[{cellformats},{requires},{dataformats-query}]

ifdef::sb-statistics[]
=== Non-Spring-Boot Data Formats

[{index-table-format}]
|===
| Data Format | Artifact | Support Level | Since | Description
|===
indexTable::[{cellformats},{requires},module=dataformats,{base-missing-query}]
endif::[]

== Camel Languages

:languages-query: module=languages,{base-attributes-query}

Number of Camel languages: indexCount:[{languages-query}] in indexUniqueCount:[{languages-query},format=artifactid] JAR artifacts (indexCount:[module=languages,{base-deprecated-query}] deprecated)

[{index-table-format}]
|===
| Language | Artifact | Support Level | Since | Description
|===
indexTable::[{cellformats},{requires},{languages-query}]

ifdef::sb-statistics[]
=== Non-Spring-Boot Languages

[{index-table-format}]
|===
| Language | Artifact | Support Level | Since | Description
|===
indexTable::[{cellformats},{requires},module=languages,{base-missing-query}]
endif::[]

== Miscellaneous Extensions

:others-query: module=others,{base-attributes-query}

Number of miscellaneous extensions: indexCount:[{others-query}] in indexUniqueCount:[{others-query},format=artifactid] JAR artifacts (indexCount:[module=others,{base-deprecated-query}] deprecated)

[{index-table-format}]
|===
| Extensions | Artifact | Support Level | Since | Description
|===
indexTable::[{cellformats},{requires},{others-query}]

ifdef::sb-statistics[]
=== Non-Spring-Boot Miscellaneous Extensions

[{index-table-format}]
|===
| Extensions | Artifact | Support Level | Since | Description
|===
indexTable::[{cellformats},{requires},module=others,{base-missing-query}]
endif::[]

== Cluster Services

The following cluster service starters provide high-availability clustering support for Camel applications.
These are infrastructure starters that do not directly map to a Camel component but provide clustering capabilities.

[width="100%",cols="4,3,6",options="header"]
|===
| Cluster Service | Artifact | Description

| xref:consul-cluster-service.adoc[Consul Cluster Service]
| camel-consul-cluster-service-starter
| Cluster service implementation using HashiCorp Consul for distributed coordination and leader election.

| xref:file-cluster-service.adoc[File Cluster Service]
| camel-file-cluster-service-starter
| Cluster service implementation using file-based locking for simple clustering scenarios.

| xref:infinispan-cluster-service.adoc[Infinispan Cluster Service]
| camel-infinispan-cluster-service-starter
| Cluster service implementation using Infinispan distributed cache for clustering.

| xref:jgroups-raft-cluster-service.adoc[JGroups Raft Cluster Service]
| camel-jgroups-raft-cluster-service-starter
| Cluster service implementation using JGroups with Raft consensus protocol.

| xref:kubernetes-cluster-service.adoc[Kubernetes Cluster Service]
| camel-kubernetes-cluster-service-starter
| Cluster service implementation using Kubernetes native mechanisms for clustering.

| xref:zookeeper-cluster-service.adoc[Zookeeper Cluster Service]
| camel-zookeeper-cluster-service-starter
| Cluster service implementation using Apache Zookeeper for distributed coordination.
|===