This is an automated email from the ASF dual-hosted git repository. djencks pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-spring-boot.git
commit 27d6d21ebf73ea1f2d771c5676710f05f0b2f8f4 Author: David Jencks <[email protected]> AuthorDate: Wed Oct 6 15:56:15 2021 -0700 move existing files under spring-boot component --- docs/spring-boot/antora.yml | 25 + docs/spring-boot/modules/ROOT/nav.adoc | 4 + docs/spring-boot/modules/ROOT/pages/index.adoc | 101 +++ docs/spring-boot/modules/ROOT/pages/list.adoc | 907 +++++++++++++++++++++ .../modules/ROOT/pages/spring-boot-xml.adoc | 9 + .../modules/ROOT/pages/spring-boot.adoc | 726 +++++++++++++++++ 6 files changed, 1772 insertions(+) diff --git a/docs/spring-boot/antora.yml b/docs/spring-boot/antora.yml new file mode 100644 index 0000000..f89cb25 --- /dev/null +++ b/docs/spring-boot/antora.yml @@ -0,0 +1,25 @@ +# +# 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. +# + +name: camel-spring-boot +title: Camel Spring Boot +version: latest +prerelease: true +display_version: 3.13.x (Prerelease) +nav: +- modules/ROOT/nav.adoc + diff --git a/docs/spring-boot/modules/ROOT/nav.adoc b/docs/spring-boot/modules/ROOT/nav.adoc new file mode 100644 index 0000000..38fa188 --- /dev/null +++ b/docs/spring-boot/modules/ROOT/nav.adoc @@ -0,0 +1,4 @@ +* xref:index.adoc[About] +* xref:spring-boot.adoc[Camel Context starter] +* xref:list.adoc[List of starters] + diff --git a/docs/spring-boot/modules/ROOT/pages/index.adoc b/docs/spring-boot/modules/ROOT/pages/index.adoc new file mode 100644 index 0000000..052f62f --- /dev/null +++ b/docs/spring-boot/modules/ROOT/pages/index.adoc @@ -0,0 +1,101 @@ += Apache Camel Spring Boot starters + +Camel support for Spring Boot provides auto-configuration of the Camel and starters for many Camel xref:components::index.adoc[components]. Our opinionated auto-configuration of the Camel context auto-detects Camel routes available in the Spring context and registers the key Camel utilities (like producer template, consumer template and the type converter) as beans. + +Get started by adding the Camel Spring Boot BOM to your Maven `pom.xml` file. + +[source,xml] +---- +<dependencyManagement> + + <dependencies> + <!-- Camel BOM --> + <dependency> + <groupId>org.apache.camel.springboot</groupId> + <artifactId>camel-spring-boot-bom</artifactId> + <version>${project.version}</version> + <type>pom</type> + <scope>import</scope> + </dependency> + <!-- ... other BOMs or dependencies ... --> + </dependencies> + +</dependencyManagement> +---- + +The `camel-spring-boot-bom` is a basic BOM that only holds the list of Camel Spring Boot starter JARs. + +Next, add the xref:spring-boot.adoc[Camel Spring Boot starter] to startup the xref:manual::camelcontext.adoc[Camel Context]. + +[source,xml] +---- + <dependencies> + <!-- Camel Starter --> + <dependency> + <groupId>org.apache.camel.springboot</groupId> + <artifactId>camel-spring-boot-starter</artifactId> + </dependency> + <!-- ... other dependencies ... --> + </dependencies> +---- + +Also add any xref:list.adoc[component starters] your Spring Boot application requires. For example this adds the xref:components::activemq-component.adoc#_spring_boot_auto_configuration[auto-configuration starter] for the xref:components::activemq-component.adoc[ActiveMQ component]. + +[source,xml] +---- + <dependencies> + <!-- ... other dependencies ... --> + <dependency> + <groupId>org.apache.camel.springboot</groupId> + <artifactId>camel-activemq-starter</artifactId> + </dependency> + </dependencies> +---- + +== Camel Spring Boot BOM vs Camel Spring Boot Dependencies BOM + +There is a curated `camel-spring-boot-dependencies` which is a generated BOM that has adjusted the JARs that both Spring Boot +and Apache Camel may use to use single shared version that will not conflict. This BOM is what is used to test camel-spring-boot itself. +However Spring Boot users may want to use _pure_ Camel dependencies and hence why you can use `camel-spring-boot-bom` that only has the +Camel starter JARs as managed dependencies. This may lead to a classpath conflict if a 3rd party JAR from Spring Boot is not compatible +with a Camel component. + +== Making sure Camel context is running in standalone Spring Boot + +To ensure the Spring Boot application keeps running until being stopped or the JVM terminated, typically only need when running Spring Boot standalone, i.e. not with `spring-boot-starter-web` when the web container keeps the JVM running, set the `camel.springboot.main-run-controller=true` property in your configuration. For example in `application.properties`. + +[source] +---- +# to keep the JVM running +camel.springboot.main-run-controller = true +---- + +== Spring Boot configuration support + +Each xref:list.adoc[component starter] lists configuration parameters you can configure in the standard `application.properties` or `application.yml` files. These parameters have the form of `camel.component.[component-name].[parameter]`. For example to configure the URL of the ActiveMQ broker you can set: + +[source] +---- +camel.component.activemq.broker-url=tcp://localhost:61616 +---- + +== Adding Camel routes + +Camel xref:manual::routes.adoc[routes] are detected in the Spring application context, for example a route annotated with `org.springframework.stereotype.Component` will be loaded, added to the Camel context and run. + +[source,java] +---- +import org.apache.camel.builder.RouteBuilder; +import org.springframework.stereotype.Component; + +@Component +public class MyRoute extends RouteBuilder { + + @Override + public void configure() throws Exception { + from("...") + .to("..."); + } + +} +---- diff --git a/docs/spring-boot/modules/ROOT/pages/list.adoc b/docs/spring-boot/modules/ROOT/pages/list.adoc new file mode 100644 index 0000000..a53dc62 --- /dev/null +++ b/docs/spring-boot/modules/ROOT/pages/list.adoc @@ -0,0 +1,907 @@ += Component Starters + +Apache Camel Spring Boot supports the following Camel artifacts as Spring Boot Starters + +== Camel Components + +// components: START +Number of Camel components: 338 in 274 JAR artifacts (1 deprecated) + +[width="100%",cols="4,3,3,3,6",options="header"] +|=== +| Component | Artifact | Support Level | Since | Description + +| xref:latest@components::activemq-component.adoc[ActiveMQ] | camel-activemq-starter | Stable | 1.0 | Send messages to (or consume from) Apache ActiveMQ. This component extends the Camel JMS component. + +| xref:latest@components::amqp-component.adoc[AMQP] | camel-amqp-starter | Stable | 1.2 | Messaging with AMQP protocol using Apache QPid Client. + +| xref:latest@components::arangodb-component.adoc[ArangoDb] | camel-arangodb-starter | Stable | 3.5 | Perform operations on ArangoDb when used as a Document Database, or as a Graph Database + +| xref:latest@components::as2-component.adoc[AS2] | camel-as2-starter | Stable | 2.22 | Transfer data securely and reliably using the AS2 protocol (RFC4130). + +| xref:latest@components::asterisk-component.adoc[Asterisk] | camel-asterisk-starter | Stable | 2.18 | Interact with Asterisk PBX Server. + +| xref:latest@components::ahc-component.adoc[Async HTTP Client (AHC)] | camel-ahc-starter | Stable | 2.8 | Call external HTTP services using Async Http Client. + +| xref:latest@components::ahc-ws-component.adoc[Async HTTP Client (AHC) Websocket] | camel-ahc-ws-starter | Stable | 2.14 | Exchange data with external Websocket servers using Async Http Client. + +| xref:latest@components::atlasmap-component.adoc[AtlasMap] | camel-atlasmap-starter | Stable | 3.7 | Transforms the message using an AtlasMap transformation. + +| xref:latest@components::atmos-component.adoc[Atmos] | camel-atmos-starter | Stable | 2.15 | Integrate with EMC's ViPR object data services using the Atmos Client. + +| xref:latest@components::atmosphere-websocket-component.adoc[Atmosphere Websocket] | camel-atmosphere-websocket-starter | Stable | 2.14 | Expose WebSocket endpoints using the Atmosphere framework. + +| xref:latest@components::atom-component.adoc[Atom] | camel-atom-starter | Stable | 1.2 | Poll Atom RSS feeds. + +| xref:latest@components::atomix-map-component.adoc[Atomix Map] | camel-atomix-starter | Stable | 2.20 | Access Atomix's distributed map. + +| xref:latest@components::atomix-messaging-component.adoc[Atomix Messaging] | camel-atomix-starter | Stable | 2.20 | Access Atomix's group messaging. + +| xref:latest@components::atomix-multimap-component.adoc[Atomix MultiMap] | camel-atomix-starter | Stable | 2.20 | Access Atomix's distributed multi map. + +| xref:latest@components::atomix-queue-component.adoc[Atomix Queue] | camel-atomix-starter | Stable | 2.20 | Access Atomix's distributed queue. + +| xref:latest@components::atomix-set-component.adoc[Atomix Set] | camel-atomix-starter | Stable | 2.20 | Access Atomix's distributed set. + +| xref:latest@components::atomix-value-component.adoc[Atomix Value] | camel-atomix-starter | Stable | 2.20 | Access Atomix's distributed value. + +| xref:latest@components::avro-component.adoc[Avro RPC] | camel-avro-rpc-starter | Stable | 2.10 | Produce or consume Apache Avro RPC services. + +| xref:latest@components::aws2-athena-component.adoc[AWS Athena] | camel-aws2-athena-starter | Stable | 3.4 | Access AWS Athena service using AWS SDK version 2.x. + +| xref:latest@components::aws2-cw-component.adoc[AWS CloudWatch] | camel-aws2-cw-starter | Stable | 3.1 | Sending metrics to AWS CloudWatch using AWS SDK version 2.x. + +| xref:latest@components::aws2-ddb-component.adoc[AWS DynamoDB] | camel-aws2-ddb-starter | Stable | 3.1 | Store and retrieve data from AWS DynamoDB service using AWS SDK version 2.x. + +| xref:latest@components::aws2-ddbstream-component.adoc[AWS DynamoDB Streams] | camel-aws2-ddb-starter | Stable | 3.1 | Receive messages from AWS DynamoDB Stream service using AWS SDK version 2.x. + +| xref:latest@components::aws2-ec2-component.adoc[AWS Elastic Compute Cloud (EC2)] | camel-aws2-ec2-starter | Stable | 3.1 | Manage AWS EC2 instances using AWS SDK version 2.x. + +| xref:latest@components::aws2-ecs-component.adoc[AWS Elastic Container Service (ECS)] | camel-aws2-ecs-starter | Stable | 3.1 | Manage AWS ECS cluster instances using AWS SDK version 2.x. + +| xref:latest@components::aws2-eks-component.adoc[AWS Elastic Kubernetes Service (EKS)] | camel-aws2-eks-starter | Stable | 3.1 | Manage AWS EKS cluster instances using AWS SDK version 2.x. + +| xref:latest@components::aws2-eventbridge-component.adoc[AWS Eventbridge] | camel-aws2-eventbridge-starter | Stable | 3.6 | Manage AWS Eventbridge cluster instances using AWS SDK version 2.x. + +| xref:latest@components::aws2-iam-component.adoc[AWS Identity and Access Management (IAM)] | camel-aws2-iam-starter | Stable | 3.1 | Manage AWS IAM instances using AWS SDK version 2.x. + +| xref:latest@components::aws2-kms-component.adoc[AWS Key Management Service (KMS)] | camel-aws2-kms-starter | Stable | 3.1 | Manage keys stored in AWS KMS instances using AWS SDK version 2.x. + +| xref:latest@components::aws2-kinesis-component.adoc[AWS Kinesis] | camel-aws2-kinesis-starter | Stable | 3.2 | Consume and produce records from and to AWS Kinesis Streams using AWS SDK version 2.x. + +| xref:latest@components::aws2-kinesis-firehose-component.adoc[AWS Kinesis Firehose] | camel-aws2-kinesis-starter | Stable | 3.2 | Produce data to AWS Kinesis Firehose streams using AWS SDK version 2.x. + +| xref:latest@components::aws2-lambda-component.adoc[AWS Lambda] | camel-aws2-lambda-starter | Stable | 3.2 | Manage and invoke AWS Lambda functions using AWS SDK version 2.x. + +| xref:latest@components::aws2-msk-component.adoc[AWS Managed Streaming for Apache Kafka (MSK)] | camel-aws2-msk-starter | Stable | 3.1 | Manage AWS MSK instances using AWS SDK version 2.x. + +| xref:latest@components::aws2-mq-component.adoc[AWS MQ] | camel-aws2-mq-starter | Stable | 3.1 | Manage AWS MQ instances using AWS SDK version 2.x. + +| xref:latest@components::aws2-s3-component.adoc[AWS S3 Storage Service] | camel-aws2-s3-starter | Stable | 3.2 | Store and retrieve objects from AWS S3 Storage Service using AWS SDK version 2.x. + +| xref:latest@components::aws-secrets-manager-component.adoc[AWS Secrets Manager] | camel-aws-secrets-manager-starter | Stable | 3.9 | Manage AWS Secrets Manager services using AWS SDK version 2.x. + +| xref:latest@components::aws2-sts-component.adoc[AWS Security Token Service (STS)] | camel-aws2-sts-starter | Stable | 3.5 | Manage AWS STS cluster instances using AWS SDK version 2.x. + +| xref:latest@components::aws2-ses-component.adoc[AWS Simple Email Service (SES)] | camel-aws2-ses-starter | Stable | 3.1 | Send e-mails through AWS SES service using AWS SDK version 2.x. + +| xref:latest@components::aws2-sns-component.adoc[AWS Simple Notification System (SNS)] | camel-aws2-sns-starter | Stable | 3.1 | Send messages to an AWS Simple Notification Topic using AWS SDK version 2.x. + +| xref:latest@components::aws2-sqs-component.adoc[AWS Simple Queue Service (SQS)] | camel-aws2-sqs-starter | Stable | 3.1 | Send and receive messages to/from AWS SQS service using AWS SDK version 2.x. + +| xref:latest@components::aws2-translate-component.adoc[AWS Translate] | camel-aws2-translate-starter | Stable | 3.1 | Translate texts using AWS Translate and AWS SDK version 2.x. + +| xref:latest@components::azure-cosmosdb-component.adoc[Azure CosmosDB] | camel-azure-cosmosdb-starter | Stable | 3.10 | To read and write records to the CosmosDB database on Azure cloud platform. + +| xref:latest@components::azure-eventhubs-component.adoc[Azure Event Hubs] | camel-azure-eventhubs-starter | Stable | 3.5 | The azure-eventhubs component that integrates Azure Event Hubs using AMQP protocol. Azure EventHubs is a highly scalable publish-subscribe service that can ingest millions of events per second and stream them to multiple consumers. + +| xref:latest@components::azure-servicebus-component.adoc[Azure ServiceBus] | camel-azure-servicebus-starter | Preview | 3.12 | The azure-servicebus component that integrates Azure ServiceBus. Azure ServiceBus is a fully managed enterprise integration message broker. Service Bus can decouple applications and services. Service Bus offers a reliable and secure platform for asynchronous transfer of data and state. Data is transferred between different applications and services using messages. + +| xref:latest@components::azure-storage-blob-component.adoc[Azure Storage Blob Service] | camel-azure-storage-blob-starter | Stable | 3.3 | Store and retrieve blobs from Azure Storage Blob Service using SDK v12. + +| xref:latest@components::azure-storage-datalake-component.adoc[Azure storage datalake service] | camel-azure-storage-datalake-starter | Stable | 3.8 | Camel Azure Datalake Gen2 Component + +| xref:latest@components::azure-storage-queue-component.adoc[Azure Storage Queue Service] | camel-azure-storage-queue-starter | Stable | 3.3 | The azure-storage-queue component is used for storing and retrieving the messages to/from Azure Storage Queue using Azure SDK v12. + +| xref:latest@components::bean-component.adoc[Bean] | camel-bean-starter | Stable | 1.0 | Invoke methods of Java beans stored in Camel registry. + +| xref:latest@components::bean-validator-component.adoc[Bean Validator] | camel-bean-validator-starter | Stable | 2.3 | Validate the message body using the Java Bean Validation API. + +| xref:latest@components::beanstalk-component.adoc[Beanstalk] | camel-beanstalk-starter | Stable | 2.15 | Retrieve and post-process Beanstalk jobs. + +| xref:latest@components::bonita-component.adoc[Bonita] | camel-bonita-starter | Stable | 2.19 | Communicate with a remote Bonita BPM process engine. + +| xref:latest@components::box-component.adoc[Box] | camel-box-starter | Stable | 2.14 | Upload, download and manage files, folders, groups, collaborations, etc. on box.com. + +| xref:latest@components::braintree-component.adoc[Braintree] | camel-braintree-starter | Stable | 2.17 | Process payments using Braintree Payments. + +| xref:latest@components::browse-component.adoc[Browse] | camel-browse-starter | Stable | 1.3 | Inspect the messages received on endpoints supporting BrowsableEndpoint. + +| xref:latest@components::caffeine-cache-component.adoc[Caffeine Cache] | camel-caffeine-starter | Stable | 2.20 | Perform caching operations using Caffeine Cache. + +| xref:latest@components::caffeine-loadcache-component.adoc[Caffeine LoadCache] | camel-caffeine-starter | Stable | 2.20 | Perform caching operations using Caffeine Cache with an attached CacheLoader. + +| xref:latest@components::cql-component.adoc[Cassandra CQL] | camel-cassandraql-starter | Stable | 2.15 | Integrate with Cassandra 2.0 using the CQL3 API (not the Thrift API). Based on Cassandra Java Driver provided by DataStax. + +| xref:latest@components::chatscript-component.adoc[ChatScript] | camel-chatscript-starter | Stable | 3.0 | Chat with a ChatScript Server. + +| xref:latest@components::chunk-component.adoc[Chunk] | camel-chunk-starter | Stable | 2.15 | Transform messages using Chunk templating engine. + +| xref:latest@components::class-component.adoc[Class] | camel-bean-starter | Stable | 2.4 | Invoke methods of Java beans specified by class name. + +| xref:latest@components::cm-sms-component.adoc[CM SMS Gateway] | camel-cm-sms-starter | Stable | 2.18 | Send SMS messages via CM SMS Gateway. + +| xref:latest@components::cmis-component.adoc[CMIS] | camel-cmis-starter | Stable | 2.11 | Read and write data from to/from a CMIS compliant content repositories. + +| xref:latest@components::coap-component.adoc[CoAP] | camel-coap-starter | Stable | 2.16 | Send and receive messages to/from COAP capable devices. + +| xref:latest@components::cometd-component.adoc[CometD] | camel-cometd-starter | Stable | 2.0 | Offers publish/subscribe, peer-to-peer (via a server), and RPC style messaging using the CometD/Bayeux protocol. + +| xref:latest@components::consul-component.adoc[Consul] | camel-consul-starter | Stable | 2.18 | Integrate with Consul service discovery and configuration store. + +| xref:latest@components::controlbus-component.adoc[Control Bus] | camel-controlbus-starter | Stable | 2.11 | Manage and monitor Camel routes. + +| xref:latest@components::corda-component.adoc[Corda] | camel-corda-starter | Stable | 2.23 | Perform operations against Corda blockchain platform using corda-rpc library. + +| xref:latest@components::couchbase-component.adoc[Couchbase] | camel-couchbase-starter | Stable | 2.19 | Query Couchbase Views with a poll strategy and/or perform various operations against Couchbase databases. + +| xref:latest@components::couchdb-component.adoc[CouchDB] | camel-couchdb-starter | Stable | 2.11 | Consume changesets for inserts, updates and deletes in a CouchDB database, as well as get, save, update and delete documents from a CouchDB database. + +| xref:latest@components::cron-component.adoc[Cron] | camel-cron-starter | Stable | 3.1 | A generic interface for triggering events at times specified through the Unix cron syntax. + +| xref:latest@components::crypto-component.adoc[Crypto (JCE)] | camel-crypto-starter | Stable | 2.3 | Sign and verify exchanges using the Signature Service of the Java Cryptographic Extension (JCE). + +| xref:latest@components::cxf-component.adoc[CXF] | camel-cxf-starter | Stable | 1.0 | Expose SOAP WebServices using Apache CXF or connect to external WebServices using CXF WS client. + +| xref:latest@components::cxfrs-component.adoc[CXF-RS] | camel-cxf-starter | Stable | 2.0 | Expose JAX-RS REST services using Apache CXF or connect to external REST services using CXF REST client. + +| xref:latest@components::dataformat-component.adoc[Data Format] | camel-dataformat-starter | Stable | 2.12 | Use a Camel Data Format as a regular Camel Component. + +| xref:latest@components::dataset-component.adoc[Dataset] | camel-dataset-starter | Stable | 1.3 | Provide data for load and soak testing of your Camel application. + +| xref:latest@components::dataset-test-component.adoc[DataSet Test] | camel-dataset-starter | Stable | 1.3 | Extends the mock component by pulling messages from another endpoint on startup to set the expected message bodies. + +| xref:latest@components::debezium-mongodb-component.adoc[Debezium MongoDB Connector] | camel-debezium-mongodb-starter | Stable | 3.0 | Capture changes from a MongoDB database. + +| xref:latest@components::debezium-mysql-component.adoc[Debezium MySQL Connector] | camel-debezium-mysql-starter | Stable | 3.0 | Capture changes from a MySQL database. + +| xref:latest@components::debezium-postgres-component.adoc[Debezium PostgresSQL Connector] | camel-debezium-postgres-starter | Stable | 3.0 | Capture changes from a PostgresSQL database. + +| xref:latest@components::debezium-sqlserver-component.adoc[Debezium SQL Server Connector] | camel-debezium-sqlserver-starter | Stable | 3.0 | Capture changes from an SQL Server database. + +| xref:latest@components::djl-component.adoc[Deep Java Library] | camel-djl-starter | Stable | 3.3 | Infer Deep Learning models from message exchanges data using Deep Java Library (DJL). + +| xref:latest@components::digitalocean-component.adoc[DigitalOcean] | camel-digitalocean-starter | Stable | 2.19 | Manage Droplets and resources within the DigitalOcean cloud. + +| xref:latest@components::direct-component.adoc[Direct] | camel-direct-starter | Stable | 1.0 | Call another endpoint from the same Camel Context synchronously. + +| xref:latest@components::direct-vm-component.adoc[Direct VM] | camel-directvm-starter | Stable | 2.10 | Call another endpoint from any Camel Context in the same JVM synchronously. + +| xref:latest@components::disruptor-component.adoc[Disruptor] | camel-disruptor-starter | Stable | 2.12 | Provides asynchronous SEDA behavior using LMAX Disruptor. + +| xref:latest@components::dns-component.adoc[DNS] | camel-dns-starter | Stable | 2.7 | Perform DNS queries using DNSJava. + +| xref:latest@components::docker-component.adoc[Docker] | camel-docker-starter | Stable | 2.15 | Manage Docker containers. + +| xref:latest@components::dozer-component.adoc[Dozer] | camel-dozer-starter | Stable | 2.15 | Map between Java beans using the Dozer mapping library. + +| xref:latest@components::drill-component.adoc[Drill] | camel-drill-starter | Stable | 2.19 | Perform queries against an Apache Drill cluster. + +| xref:latest@components::dropbox-component.adoc[Dropbox] | camel-dropbox-starter | Stable | 2.14 | Upload, download and manage files, folders, groups, collaborations, etc on Dropbox. + +| xref:latest@components::ehcache-component.adoc[Ehcache] | camel-ehcache-starter | Stable | 2.18 | Perform caching operations using Ehcache. + +| xref:latest@components::elasticsearch-rest-component.adoc[Elasticsearch Rest] | camel-elasticsearch-rest-starter | Stable | 2.21 | Send requests to ElasticSearch via REST API + +| xref:latest@components::elsql-component.adoc[ElSQL] | camel-elsql-starter | Stable | 2.16 | Use ElSql to define SQL queries. Extends the SQL Component. + +| xref:latest@components::etcd-keys-component.adoc[Etcd Keys] | camel-etcd-starter | Stable | 2.18 | Get, set or delete keys in etcd key-value store. + +| xref:latest@components::etcd-stats-component.adoc[Etcd Stats] | camel-etcd-starter | Stable | 2.18 | Access etcd cluster statistcs. + +| xref:latest@components::etcd-watch-component.adoc[Etcd Watch] | camel-etcd-starter | Stable | 2.18 | Watch specific etcd keys or directories for changes. + +| xref:latest@components::exec-component.adoc[Exec] | camel-exec-starter | Stable | 2.3 | Execute commands on the underlying operating system. + +| xref:latest@components::facebook-component.adoc[Facebook] | camel-facebook-starter | Stable | 2.14 | Send requests to Facebook APIs supported by Facebook4J. + +| xref:latest@components::fhir-component.adoc[FHIR] | camel-fhir-starter | Stable | 2.23 | Exchange information in the healthcare domain using the FHIR (Fast Healthcare Interoperability Resources) standard. + +| xref:latest@components::file-component.adoc[File] | camel-file-starter | Stable | 1.0 | Read and write files. + +| xref:latest@components::file-watch-component.adoc[File Watch] | camel-file-watch-starter | Stable | 3.0 | Get notified about file events in a directory using java.nio.file.WatchService. + +| xref:latest@components::flatpack-component.adoc[Flatpack] | camel-flatpack-starter | Stable | 1.4 | Parse fixed width and delimited files using the FlatPack library. + +| xref:latest@components::flink-component.adoc[Flink] | camel-flink-starter | Stable | 2.18 | Send DataSet jobs to an Apache Flink cluster. + +| xref:latest@components::fop-component.adoc[FOP] | camel-fop-starter | Stable | 2.10 | Render messages into PDF and other output formats supported by Apache FOP. + +| xref:latest@components::freemarker-component.adoc[Freemarker] | camel-freemarker-starter | Stable | 2.10 | Transform messages using FreeMarker templates. + +| xref:latest@components::ftp-component.adoc[FTP] | camel-ftp-starter | Stable | 1.1 | Upload and download files to/from FTP servers. + +| xref:latest@components::ftps-component.adoc[FTPS] | camel-ftp-starter | Stable | 2.2 | Upload and download files to/from FTP servers supporting the FTPS protocol. + +| xref:latest@components::ganglia-component.adoc[Ganglia] | camel-ganglia-starter | Stable | 2.15 | Send metrics to Ganglia monitoring system. + +| xref:latest@components::geocoder-component.adoc[Geocoder] | camel-geocoder-starter | Stable | 2.12 | Find geocodes (latitude and longitude) for a given address or the other way round. + +| xref:latest@components::git-component.adoc[Git] | camel-git-starter | Stable | 2.16 | Perform operations on git repositories. + +| xref:latest@components::github-component.adoc[GitHub] | camel-github-starter | Stable | 2.15 | Interact with the GitHub API. + +| xref:latest@components::google-bigquery-component.adoc[Google BigQuery] | camel-google-bigquery-starter | Stable | 2.20 | Google BigQuery data warehouse for analytics. + +| xref:latest@components::google-bigquery-sql-component.adoc[Google BigQuery Standard SQL] | camel-google-bigquery-starter | Stable | 2.23 | Access Google Cloud BigQuery service using SQL queries. + +| xref:latest@components::google-calendar-component.adoc[Google Calendar] | camel-google-calendar-starter | Stable | 2.15 | Perform various operations on a Google Calendar. + +| xref:latest@components::google-calendar-stream-component.adoc[Google Calendar Stream] | camel-google-calendar-starter | Stable | 2.23 | Poll for changes in a Google Calendar. + +| xref:latest@components::google-functions-component.adoc[Google Cloud Functions] | camel-google-functions-starter | Stable | 3.9 | Manage and invoke Google Cloud Functions + +| xref:latest@components::google-drive-component.adoc[Google Drive] | camel-google-drive-starter | Stable | 2.14 | Manage files in Google Drive. + +| xref:latest@components::google-mail-component.adoc[Google Mail] | camel-google-mail-starter | Stable | 2.15 | Manage messages in Google Mail. + +| xref:latest@components::google-mail-stream-component.adoc[Google Mail Stream] | camel-google-mail-starter | Stable | 2.22 | Poll for incoming messages in Google Mail. + +| xref:latest@components::google-pubsub-component.adoc[Google Pubsub] | camel-google-pubsub-starter | Stable | 2.19 | Send and receive messages to/from Google Cloud Platform PubSub Service. + +| xref:latest@components::google-sheets-component.adoc[Google Sheets] | camel-google-sheets-starter | Stable | 2.23 | Manage spreadsheets in Google Sheets. + +| xref:latest@components::google-sheets-stream-component.adoc[Google Sheets Stream] | camel-google-sheets-starter | Stable | 2.23 | Poll for changes in Google Sheets. + +| xref:latest@components::google-storage-component.adoc[Google Storage] | camel-google-storage-starter | Stable | 3.9 | Store and retrieve objects from Google Cloud Storage Service using the google-cloud-storage library. + +| xref:latest@components::gora-component.adoc[Gora] | camel-gora-starter | Stable | 2.14 | Access NoSQL databases using the Apache Gora framework. + +| xref:latest@components::grape-component.adoc[Grape] | camel-grape-starter | Stable | 2.16 | Fetch, load and manage additional jars dynamically after Camel Context was started. + +| xref:latest@components::graphql-component.adoc[GraphQL] | camel-graphql-starter | Stable | 3.0 | Send GraphQL queries and mutations to external systems. + +| xref:latest@components::grpc-component.adoc[gRPC] | camel-grpc-starter | Stable | 2.19 | Expose gRPC endpoints and access external gRPC endpoints. + +| xref:latest@components::guava-eventbus-component.adoc[Guava EventBus] | camel-guava-eventbus-starter | Stable | 2.10 | Send and receive messages to/from Guava EventBus. + +| xref:latest@components::hazelcast-atomicvalue-component.adoc[Hazelcast Atomic Number] | camel-hazelcast-starter | Stable | 2.7 | Increment, decrement, set, etc. Hazelcast atomic number (a grid wide number). + +| xref:latest@components::hazelcast-instance-component.adoc[Hazelcast Instance] | camel-hazelcast-starter | Stable | 2.7 | Consume join/leave events of a cache instance in a Hazelcast cluster. + +| xref:latest@components::hazelcast-list-component.adoc[Hazelcast List] | camel-hazelcast-starter | Stable | 2.7 | Perform operations on Hazelcast distributed list. + +| xref:latest@components::hazelcast-map-component.adoc[Hazelcast Map] | camel-hazelcast-starter | Stable | 2.7 | Perform operations on Hazelcast distributed map. + +| xref:latest@components::hazelcast-multimap-component.adoc[Hazelcast Multimap] | camel-hazelcast-starter | Stable | 2.7 | Perform operations on Hazelcast distributed multimap. + +| xref:latest@components::hazelcast-queue-component.adoc[Hazelcast Queue] | camel-hazelcast-starter | Stable | 2.7 | Perform operations on Hazelcast distributed queue. + +| xref:latest@components::hazelcast-replicatedmap-component.adoc[Hazelcast Replicated Map] | camel-hazelcast-starter | Stable | 2.16 | Perform operations on Hazelcast replicated map. + +| xref:latest@components::hazelcast-ringbuffer-component.adoc[Hazelcast Ringbuffer] | camel-hazelcast-starter | Stable | 2.16 | Perform operations on Hazelcast distributed ringbuffer. + +| xref:latest@components::hazelcast-seda-component.adoc[Hazelcast SEDA] | camel-hazelcast-starter | Stable | 2.7 | Asynchronously send/receive Exchanges between Camel routes running on potentially distinct JVMs/hosts backed by Hazelcast BlockingQueue. + +| xref:latest@components::hazelcast-set-component.adoc[Hazelcast Set] | camel-hazelcast-starter | Stable | 2.7 | Perform operations on Hazelcast distributed set. + +| xref:latest@components::hazelcast-topic-component.adoc[Hazelcast Topic] | camel-hazelcast-starter | Stable | 2.15 | Send and receive messages to/from Hazelcast distributed topic. + +| xref:latest@components::hbase-component.adoc[HBase] | camel-hbase-starter | Stable | 2.10 | Reading and write from/to an HBase store (Hadoop database). + +| xref:latest@components::hdfs-component.adoc[HDFS] | camel-hdfs-starter | Stable | 2.14 | Read and write from/to an HDFS filesystem using Hadoop 2.x. + +| xref:latest@components::http-component.adoc[HTTP] | camel-http-starter | Stable | 2.3 | Send requests to external HTTP servers using Apache HTTP Client 4.x. + +| xref:latest@components::hwcloud-imagerecognition-component.adoc[Huawei Cloud Image Recognition] | camel-huaweicloud-imagerecognition-starter | Preview | 3.12 | To identify objects, scenes, and concepts in images on Huawei Cloud + +| xref:latest@components::hwcloud-dms-component.adoc[Huawei Distributed Message Service (DMS)] | camel-huaweicloud-dms-starter | Preview | 3.12 | To integrate with a fully managed, high-performance message queuing service on Huawei Cloud + +| xref:latest@components::hwcloud-functiongraph-component.adoc[Huawei FunctionGraph] | camel-huaweicloud-functiongraph-starter | Stable | 3.11 | To call serverless functions on Huawei Cloud + +| xref:latest@components::hwcloud-iam-component.adoc[Huawei Identity and Access Management (IAM)] | camel-huaweicloud-iam-starter | Stable | 3.11 | To securely manage users on Huawei Cloud + +| xref:latest@components::hwcloud-obs-component.adoc[Huawei Object Storage Service (OBS)] | camel-huaweicloud-obs-starter | Preview | 3.12 | To provide stable, secure, efficient, and easy-to-use cloud storage service on Huawei Cloud + +| xref:latest@components::hwcloud-smn-component.adoc[Huawei Simple Message Notification (SMN)] | camel-huaweicloud-smn-starter | Stable | 3.8 | To broadcast messages and connect cloud services through notifications on Huawei Cloud + +| xref:latest@components::iec60870-client-component.adoc[IEC 60870 Client] | camel-iec60870-starter | Stable | 2.20 | IEC 60870 supervisory control and data acquisition (SCADA) client using NeoSCADA implementation. + +| xref:latest@components::iec60870-server-component.adoc[IEC 60870 Server] | camel-iec60870-starter | Stable | 2.20 | IEC 60870 supervisory control and data acquisition (SCADA) server using NeoSCADA implementation. + +| xref:latest@components::ignite-cache-component.adoc[Ignite Cache] | camel-ignite-starter | Stable | 2.17 | Perform cache operations on an Ignite cache or consume changes from a continuous query. + +| xref:latest@components::ignite-compute-component.adoc[Ignite Compute] | camel-ignite-starter | Stable | 2.17 | Run compute operations on an Ignite cluster. + +| xref:latest@components::ignite-events-component.adoc[Ignite Events] | camel-ignite-starter | Stable | 2.17 | Receive events from an Ignite cluster by creating a local event listener. + +| xref:latest@components::ignite-idgen-component.adoc[Ignite ID Generator] | camel-ignite-starter | Stable | 2.17 | Interact with Ignite Atomic Sequences and ID Generators . + +| xref:latest@components::ignite-messaging-component.adoc[Ignite Messaging] | camel-ignite-starter | Stable | 2.17 | Send and receive messages from an Ignite topic. + +| xref:latest@components::ignite-queue-component.adoc[Ignite Queues] | camel-ignite-starter | Stable | 2.17 | Interact with Ignite Queue data structures. + +| xref:latest@components::ignite-set-component.adoc[Ignite Sets] | camel-ignite-starter | Stable | 2.17 | Interact with Ignite Set data structures. + +| xref:latest@components::infinispan-component.adoc[Infinispan] | camel-infinispan-starter | Stable | 2.13 | Read and write from/to Infinispan distributed key/value store and data grid. + +| xref:latest@components::infinispan-embedded-component.adoc[Infinispan Embedded] | camel-infinispan-embedded-starter | Stable | 2.13 | Read and write from/to Infinispan distributed key/value store and data grid. + +| xref:latest@components::influxdb-component.adoc[InfluxDB] | camel-influxdb-starter | Stable | 2.18 | Interact with InfluxDB, a time series database. + +| xref:latest@components::iota-component.adoc[IOTA] | camel-iota-starter | Stable | 2.23 | Manage financial transactions using IOTA distributed ledger. + +| xref:latest@components::ipfs-component.adoc[IPFS] | camel-ipfs-starter | Stable | 2.23 | Access the Interplanetary File System (IPFS). + +| xref:latest@components::irc-component.adoc[IRC] | camel-irc-starter | Stable | 1.1 | Send and receive messages to/from and IRC chat. + +| xref:latest@components::ironmq-component.adoc[IronMQ] | camel-ironmq-starter | Stable | 2.17 | Send and receive messages to/from IronMQ an elastic and durable hosted message queue as a service. + +| xref:latest@components::websocket-jsr356-component.adoc[Javax Websocket] | camel-websocket-jsr356-starter | Stable | 2.23 | Expose websocket endpoints using JSR356. + +| xref:latest@components::jbpm-component.adoc[JBPM] | camel-jbpm-starter | Stable | 2.6 | Interact with jBPM workflow engine over REST. + +| xref:latest@components::jcache-component.adoc[JCache] | camel-jcache-starter | Stable | 2.17 | Perform caching operations against JSR107/JCache. + +| xref:latest@components::jclouds-component.adoc[JClouds] | camel-jclouds-starter | Stable | 2.9 | Interact with jclouds compute and blobstore service. + +| xref:latest@components::jcr-component.adoc[JCR] | camel-jcr-starter | Stable | 1.3 | Read and write nodes to/from a JCR compliant content repository. + +| xref:latest@components::jdbc-component.adoc[JDBC] | camel-jdbc-starter | Stable | 1.2 | Access databases through SQL and JDBC. + +| xref:latest@components::jetty-component.adoc[Jetty] | camel-jetty-starter | Stable | 1.2 | Expose HTTP endpoints using Jetty 9. + +| xref:latest@components::websocket-component.adoc[Jetty Websocket] | camel-websocket-starter | Stable | 2.10 | Expose websocket endpoints using Jetty. + +| xref:latest@components::jgroups-component.adoc[JGroups] | camel-jgroups-starter | Stable | 2.13 | Exchange messages with JGroups clusters. + +| xref:latest@components::jgroups-raft-component.adoc[JGroups raft] | camel-jgroups-raft-starter | Stable | 2.24 | Exchange messages with JGroups-raft clusters. + +| xref:latest@components::jing-component.adoc[Jing] | camel-jing-starter | Stable | 1.1 | Validate XML against a RelaxNG schema (XML Syntax or Compact Syntax) using Jing library. + +| xref:latest@components::jira-component.adoc[Jira] | camel-jira-starter | Stable | 3.0 | Interact with JIRA issue tracker. + +| xref:latest@components::jms-component.adoc[JMS] | camel-jms-starter | Stable | 1.0 | Sent and receive messages to/from a JMS Queue or Topic. + +| xref:latest@components::jmx-component.adoc[JMX] | camel-jmx-starter | Stable | 2.6 | Receive JMX notifications. + +| xref:latest@components::jolt-component.adoc[JOLT] | camel-jolt-starter | Stable | 2.16 | JSON to JSON transformation using JOLT. + +| xref:latest@components::jooq-component.adoc[JOOQ] | camel-jooq-starter | Stable | 3.0 | Store and retrieve Java objects from an SQL database using JOOQ. + +| xref:latest@components::jpa-component.adoc[JPA] | camel-jpa-starter | Stable | 1.0 | Store and retrieve Java objects from databases using Java Persistence API (JPA). + +| xref:latest@components::jslt-component.adoc[JSLT] | camel-jslt-starter | Stable | 3.1 | Query or transform JSON payloads using an JSLT. + +| xref:latest@components::json-validator-component.adoc[JSON Schema Validator] | camel-json-validator-starter | Stable | 2.20 | Validate JSON payloads using NetworkNT JSON Schema. + +| xref:latest@components::jsonata-component.adoc[JSONata] | camel-jsonata-starter | Stable | 3.5 | Transforms JSON payload using JSONata transformation. + +| xref:latest@components::json-patch-component.adoc[JsonPatch] | camel-json-patch-starter | Preview | 3.12 | JsonPatch component which transform JSON using JSON patch (RFC 6902). + +| xref:latest@components::jt400-component.adoc[JT400] | camel-jt400-starter | Stable | 1.5 | Exchanges messages with an IBM i system using data queues, message queues, or program call. IBM i is the replacement for AS/400 and iSeries servers. + +| xref:latest@components::kafka-component.adoc[Kafka] | camel-kafka-starter | Stable | 2.13 | Sent and receive messages to/from an Apache Kafka broker. + +| xref:latest@components::kamelet-component.adoc[Kamelet] | camel-kamelet-starter | Stable | 3.8 | To call Kamelets + +| xref:latest@components::kamelet-reify-component.adoc[Kamelet Reify] | camel-kamelet-reify-starter | Stable | 3.6 | *deprecated* To call Kamelets (indirectly) + +| xref:latest@components::kubernetes-config-maps-component.adoc[Kubernetes ConfigMap] | camel-kubernetes-starter | Stable | 2.17 | Perform operations on Kubernetes ConfigMaps and get notified on ConfigMaps changes. + +| xref:latest@components::kubernetes-custom-resources-component.adoc[Kubernetes Custom Resources] | camel-kubernetes-starter | Stable | 3.7 | Perform operations on Kubernetes Custom Resources and get notified on Deployment changes. + +| xref:latest@components::kubernetes-deployments-component.adoc[Kubernetes Deployments] | camel-kubernetes-starter | Stable | 2.20 | Perform operations on Kubernetes Deployments and get notified on Deployment changes. + +| xref:latest@components::kubernetes-hpa-component.adoc[Kubernetes HPA] | camel-kubernetes-starter | Stable | 2.23 | Perform operations on Kubernetes Horizontal Pod Autoscalers (HPA) and get notified on HPA changes. + +| xref:latest@components::kubernetes-job-component.adoc[Kubernetes Job] | camel-kubernetes-starter | Stable | 2.23 | Perform operations on Kubernetes Jobs. + +| xref:latest@components::kubernetes-namespaces-component.adoc[Kubernetes Namespaces] | camel-kubernetes-starter | Stable | 2.17 | Perform operations on Kubernetes Namespaces and get notified on Namespace changes. + +| xref:latest@components::kubernetes-nodes-component.adoc[Kubernetes Nodes] | camel-kubernetes-starter | Stable | 2.17 | Perform operations on Kubernetes Nodes and get notified on Node changes. + +| xref:latest@components::kubernetes-persistent-volumes-component.adoc[Kubernetes Persistent Volume] | camel-kubernetes-starter | Stable | 2.17 | Perform operations on Kubernetes Persistent Volumes and get notified on Persistent Volume changes. + +| xref:latest@components::kubernetes-persistent-volumes-claims-component.adoc[Kubernetes Persistent Volume Claim] | camel-kubernetes-starter | Stable | 2.17 | Perform operations on Kubernetes Persistent Volumes Claims and get notified on Persistent Volumes Claim changes. + +| xref:latest@components::kubernetes-pods-component.adoc[Kubernetes Pods] | camel-kubernetes-starter | Stable | 2.17 | Perform operations on Kubernetes Pods and get notified on Pod changes. + +| xref:latest@components::kubernetes-replication-controllers-component.adoc[Kubernetes Replication Controller] | camel-kubernetes-starter | Stable | 2.17 | Perform operations on Kubernetes Replication Controllers and get notified on Replication Controllers changes. + +| xref:latest@components::kubernetes-resources-quota-component.adoc[Kubernetes Resources Quota] | camel-kubernetes-starter | Stable | 2.17 | Perform operations on Kubernetes Resources Quotas. + +| xref:latest@components::kubernetes-secrets-component.adoc[Kubernetes Secrets] | camel-kubernetes-starter | Stable | 2.17 | Perform operations on Kubernetes Secrets. + +| xref:latest@components::kubernetes-service-accounts-component.adoc[Kubernetes Service Account] | camel-kubernetes-starter | Stable | 2.17 | Perform operations on Kubernetes Service Accounts. + +| xref:latest@components::kubernetes-services-component.adoc[Kubernetes Services] | camel-kubernetes-starter | Stable | 2.17 | Perform operations on Kubernetes Services and get notified on Service changes. + +| xref:latest@components::kudu-component.adoc[Kudu] | camel-kudu-starter | Stable | 3.0 | Interact with Apache Kudu, a free and open source column-oriented data store of the Apache Hadoop ecosystem. + +| xref:latest@components::language-component.adoc[Language] | camel-language-starter | Stable | 2.5 | Execute scripts in any of the languages supported by Camel. + +| xref:latest@components::ldap-component.adoc[LDAP] | camel-ldap-starter | Stable | 1.5 | Perform searches on LDAP servers. + +| xref:latest@components::ldif-component.adoc[LDIF] | camel-ldif-starter | Stable | 2.20 | Perform updates on an LDAP server from an LDIF body content. + +| xref:latest@components::log-component.adoc[Log] | camel-log-starter | Stable | 1.1 | Log messages to the underlying logging mechanism. + +| xref:latest@components::lucene-component.adoc[Lucene] | camel-lucene-starter | Stable | 2.2 | Perform inserts or queries against Apache Lucene databases. + +| xref:latest@components::lumberjack-component.adoc[Lumberjack] | camel-lumberjack-starter | Stable | 2.18 | Receive logs messages using the Lumberjack protocol. + +| xref:latest@components::mail-component.adoc[Mail] | camel-mail-starter | Stable | 1.0 | Send and receive emails using imap, pop3 and smtp protocols. + +| xref:latest@components::master-component.adoc[Master] | camel-master-starter | Stable | 2.20 | Have only a single consumer in a cluster consuming from a given endpoint; with automatic failover if the JVM dies. + +| xref:latest@components::metrics-component.adoc[Metrics] | camel-metrics-starter | Stable | 2.14 | Collect various metrics directly from Camel routes using the DropWizard metrics library. + +| xref:latest@components::micrometer-component.adoc[Micrometer] | camel-micrometer-starter | Stable | 2.22 | Collect various metrics directly from Camel routes using the Micrometer library. + +| xref:latest@components::mina-component.adoc[Mina] | camel-mina-starter | Stable | 2.10 | Socket level networking using TCP or UDP with Apache Mina 2.x. + +| xref:latest@components::minio-component.adoc[Minio] | camel-minio-starter | Stable | 3.5 | Store and retrieve objects from Minio Storage Service using Minio SDK. + +| xref:latest@components::mllp-component.adoc[MLLP] | camel-mllp-starter | Stable | 2.17 | Communicate with external systems using the MLLP protocol. + +| xref:latest@components::mock-component.adoc[Mock] | camel-mock-starter | Stable | 1.0 | Test routes and mediation rules using mocks. + +| xref:latest@components::mongodb-component.adoc[MongoDB] | camel-mongodb-starter | Stable | 2.19 | Perform operations on MongoDB documents and collections. + +| xref:latest@components::mongodb-gridfs-component.adoc[MongoDB GridFS] | camel-mongodb-gridfs-starter | Stable | 2.18 | Interact with MongoDB GridFS. + +| xref:latest@components::msv-component.adoc[MSV] | camel-msv-starter | Stable | 1.1 | Validate XML payloads using Multi-Schema Validator (MSV). + +| xref:latest@components::mustache-component.adoc[Mustache] | camel-mustache-starter | Stable | 2.12 | Transform messages using a Mustache template. + +| xref:latest@components::mvel-component.adoc[MVEL] | camel-mvel-starter | Stable | 2.12 | Transform messages using an MVEL template. + +| xref:latest@components::mybatis-component.adoc[MyBatis] | camel-mybatis-starter | Stable | 2.7 | Performs a query, poll, insert, update or delete in a relational database using MyBatis. + +| xref:latest@components::mybatis-bean-component.adoc[MyBatis Bean] | camel-mybatis-starter | Stable | 2.22 | Perform queries, inserts, updates or deletes in a relational database using MyBatis. + +| xref:latest@components::nagios-component.adoc[Nagios] | camel-nagios-starter | Stable | 2.3 | Send passive checks to Nagios using JSendNSCA. + +| xref:latest@components::nats-component.adoc[Nats] | camel-nats-starter | Stable | 2.17 | Send and receive messages from NATS messaging system. + +| xref:latest@components::netty-component.adoc[Netty] | camel-netty-starter | Stable | 2.14 | Socket level networking using TCP or UDP with Netty 4.x. + +| xref:latest@components::netty-http-component.adoc[Netty HTTP] | camel-netty-http-starter | Stable | 2.14 | Netty HTTP server and client using the Netty 4.x. + +| xref:latest@components::nitrite-component.adoc[Nitrite] | camel-nitrite-starter | Stable | 3.0 | Access Nitrite databases. + +| xref:latest@components::nsq-component.adoc[NSQ] | camel-nsq-starter | Stable | 2.23 | Send and receive messages from NSQ realtime distributed messaging platform. + +| xref:latest@components::oaipmh-component.adoc[OAI-PMH] | camel-oaipmh-starter | Stable | 3.5 | Harvest metadata using OAI-PMH protocol + +| xref:latest@components::olingo2-component.adoc[Olingo2] | camel-olingo2-starter | Stable | 2.14 | Communicate with OData 2.0 services using Apache Olingo. + +| xref:latest@components::olingo4-component.adoc[Olingo4] | camel-olingo4-starter | Stable | 2.19 | Communicate with OData 4.0 services using Apache Olingo OData API. + +| xref:latest@components::milo-client-component.adoc[OPC UA Client] | camel-milo-starter | Stable | 2.19 | Connect to OPC UA servers using the binary protocol for acquiring telemetry data. + +| xref:latest@components::milo-server-component.adoc[OPC UA Server] | camel-milo-starter | Stable | 2.19 | Make telemetry data available as an OPC UA server. + +| xref:latest@components::openshift-build-configs-component.adoc[Openshift Build Config] | camel-kubernetes-starter | Stable | 2.17 | Perform operations on OpenShift Build Configs. + +| xref:latest@components::openshift-builds-component.adoc[Openshift Builds] | camel-kubernetes-starter | Stable | 2.17 | Perform operations on OpenShift Builds. + +| xref:latest@components::openstack-cinder-component.adoc[OpenStack Cinder] | camel-openstack-starter | Stable | 2.19 | Access data in OpenStack Cinder block storage. + +| xref:latest@components::openstack-glance-component.adoc[OpenStack Glance] | camel-openstack-starter | Stable | 2.19 | Manage VM images and metadata definitions in OpenStack Glance. + +| xref:latest@components::openstack-keystone-component.adoc[OpenStack Keystone] | camel-openstack-starter | Stable | 2.19 | Access OpenStack Keystone for API client authentication, service discovery and distributed multi-tenant authorization. + +| xref:latest@components::openstack-neutron-component.adoc[OpenStack Neutron] | camel-openstack-starter | Stable | 2.19 | Access OpenStack Neutron for network services. + +| xref:latest@components::openstack-nova-component.adoc[OpenStack Nova] | camel-openstack-starter | Stable | 2.19 | Access OpenStack to manage compute resources. + +| xref:latest@components::openstack-swift-component.adoc[OpenStack Swift] | camel-openstack-starter | Stable | 2.19 | Access OpenStack Swift object/blob store. + +| xref:latest@components::optaplanner-component.adoc[OptaPlanner] | camel-optaplanner-starter | Stable | 2.13 | Solve planning problems with OptaPlanner. + +| xref:latest@components::paho-component.adoc[Paho] | camel-paho-starter | Stable | 2.16 | Communicate with MQTT message brokers using Eclipse Paho MQTT Client. + +| xref:latest@components::paho-mqtt5-component.adoc[Paho MQTT 5] | camel-paho-mqtt5-starter | Stable | 3.8 | Communicate with MQTT message brokers using Eclipse Paho MQTT v5 Client. + +| xref:latest@components::pdf-component.adoc[PDF] | camel-pdf-starter | Stable | 2.16 | Create, modify or extract content from PDF documents. + +| xref:latest@components::platform-http-component.adoc[Platform HTTP] | camel-platform-http-starter | Stable | 3.0 | Expose HTTP endpoints using the HTTP server available in the current platform. + +| xref:latest@components::pgevent-component.adoc[PostgresSQL Event] | camel-pgevent-starter | Stable | 2.15 | Send and receive PostgreSQL events via LISTEN and NOTIFY commands. + +| xref:latest@components::pg-replication-slot-component.adoc[PostgresSQL Replication Slot] | camel-pg-replication-slot-starter | Stable | 3.0 | Poll for PostgreSQL Write-Ahead Log (WAL) records using Streaming Replication Slots. + +| xref:latest@components::lpr-component.adoc[Printer] | camel-printer-starter | Stable | 2.1 | Send print jobs to printers. + +| xref:latest@components::pubnub-component.adoc[PubNub] | camel-pubnub-starter | Stable | 2.19 | Send and receive messages to/from PubNub data stream network for connected devices. + +| xref:latest@components::pulsar-component.adoc[Pulsar] | camel-pulsar-starter | Stable | 2.24 | Send and receive messages from/to Apache Pulsar messaging system. + +| xref:latest@components::quartz-component.adoc[Quartz] | camel-quartz-starter | Stable | 2.12 | Schedule sending of messages using the Quartz 2.x scheduler. + +| xref:latest@components::quickfix-component.adoc[QuickFix] | camel-quickfix-starter | Stable | 2.1 | Open a Financial Interchange (FIX) session using an embedded QuickFix/J engine. + +| xref:latest@components::rabbitmq-component.adoc[RabbitMQ] | camel-rabbitmq-starter | Stable | 2.12 | Send and receive messages from RabbitMQ instances. + +| xref:latest@components::reactive-streams-component.adoc[Reactive Streams] | camel-reactive-streams-starter | Stable | 2.19 | Exchange messages with reactive stream processing libraries compatible with the reactive streams standard. + +| xref:latest@components::ref-component.adoc[Ref] | camel-ref-starter | Stable | 1.2 | Route messages to an endpoint looked up dynamically by name in the Camel Registry. + +| xref:latest@components::rest-component.adoc[REST] | camel-rest-starter | Stable | 2.14 | Expose REST services or call external REST services. + +| xref:latest@components::rest-api-component.adoc[REST API] | camel-rest-starter | Stable | 2.16 | Expose OpenAPI Specification of the REST services defined using Camel REST DSL. + +| xref:latest@components::rest-openapi-component.adoc[REST OpenApi] | camel-rest-openapi-starter | Stable | 3.1 | Configure REST producers based on an OpenAPI specification document delegating to a component implementing the RestProducerFactory interface. + +| xref:latest@components::rest-swagger-component.adoc[REST Swagger] | camel-rest-swagger-starter | Stable | 2.19 | Configure REST producers based on a Swagger (OpenAPI) specification document delegating to a component implementing the RestProducerFactory interface. + +| xref:latest@components::resteasy-component.adoc[Resteasy] | camel-resteasy-starter | Preview | 3.4 | Expose REST endpoints and access external REST servers. + +| xref:latest@components::robotframework-component.adoc[Robot Framework] | camel-robotframework-starter | Stable | 3.0 | Pass camel exchanges to acceptence test written in Robot DSL. + +| xref:latest@components::rss-component.adoc[RSS] | camel-rss-starter | Stable | 2.0 | Poll RSS feeds. + +| xref:latest@components::saga-component.adoc[Saga] | camel-saga-starter | Stable | 2.21 | Execute custom actions within a route using the Saga EIP. + +| xref:latest@components::salesforce-component.adoc[Salesforce] | camel-salesforce-starter | Stable | 2.12 | Communicate with Salesforce using Java DTOs. + +| xref:latest@components::sap-netweaver-component.adoc[SAP NetWeaver] | camel-sap-netweaver-starter | Stable | 2.12 | Send requests to SAP NetWeaver Gateway using HTTP. + +| xref:latest@components::scheduler-component.adoc[Scheduler] | camel-scheduler-starter | Stable | 2.15 | Generate messages in specified intervals using java.util.concurrent.ScheduledExecutorService. + +| xref:latest@components::schematron-component.adoc[Schematron] | camel-schematron-starter | Stable | 2.15 | Validate XML payload using the Schematron Library. + +| xref:latest@components::scp-component.adoc[SCP] | camel-jsch-starter | Stable | 2.10 | Copy files to/from remote hosts using the secure copy protocol (SCP). + +| xref:latest@components::seda-component.adoc[SEDA] | camel-seda-starter | Stable | 1.1 | Asynchronously call another endpoint from any Camel Context in the same JVM. + +| xref:latest@components::service-component.adoc[Service] | camel-service-starter | Stable | 2.22 | Register a Camel endpoint to a Service Registry (such as Consul, Etcd) and delegate to it. + +| xref:latest@components::servicenow-component.adoc[ServiceNow] | camel-servicenow-starter | Stable | 2.18 | Interact with ServiceNow via its REST API. + +| xref:latest@components::servlet-component.adoc[Servlet] | camel-servlet-starter | Stable | 2.0 | Serve HTTP requests by a Servlet. + +| xref:latest@components::sftp-component.adoc[SFTP] | camel-ftp-starter | Stable | 1.1 | Upload and download files to/from SFTP servers. + +| xref:latest@components::sjms-component.adoc[Simple JMS] | camel-sjms-starter | Stable | 2.11 | Send and receive messages to/from a JMS Queue or Topic using plain JMS 1.x API. + +| xref:latest@components::sjms2-component.adoc[Simple JMS2] | camel-sjms2-starter | Stable | 2.19 | Send and receive messages to/from a JMS Queue or Topic using plain JMS 2.x API. + +| xref:latest@components::sip-component.adoc[SIP] | camel-sip-starter | Stable | 2.5 | Send and receive messages using the SIP protocol (used in telecommunications). + +| xref:latest@components::slack-component.adoc[Slack] | camel-slack-starter | Stable | 2.16 | Send and receive messages to/from Slack. + +| xref:latest@components::smpp-component.adoc[SMPP] | camel-smpp-starter | Stable | 2.2 | Send and receive SMS messages using a SMSC (Short Message Service Center). + +| xref:latest@components::snmp-component.adoc[SNMP] | camel-snmp-starter | Stable | 2.1 | Receive traps and poll SNMP (Simple Network Management Protocol) capable devices. + +| xref:latest@components::solr-component.adoc[Solr] | camel-solr-starter | Stable | 2.9 | Perform operations against Apache Lucene Solr. + +| xref:latest@components::soroush-component.adoc[Soroush] | camel-soroush-starter | Stable | 3.0 | Send and receive messages as a Soroush chat bot. + +| xref:latest@components::spark-component.adoc[Spark] | camel-spark-starter | Stable | 2.17 | Send RDD or DataFrame jobs to Apache Spark clusters. + +| xref:latest@components::splunk-component.adoc[Splunk] | camel-splunk-starter | Stable | 2.13 | Publish or search for events in Splunk. + +| xref:latest@components::spring-batch-component.adoc[Spring Batch] | camel-spring-batch-starter | Stable | 2.10 | Send messages to Spring Batch for further processing. + +| xref:latest@components::spring-event-component.adoc[Spring Event] | camel-spring-starter | Stable | 1.4 | Listen for Spring Application Events. + +| xref:latest@components::spring-integration-component.adoc[Spring Integration] | camel-spring-integration-starter | Stable | 1.4 | Bridge Camel with Spring Integration. + +| xref:latest@components::spring-jdbc-component.adoc[Spring JDBC] | camel-spring-jdbc-starter | Stable | 3.10 | Access databases through SQL and JDBC with Spring Transaction support. + +| xref:latest@components::spring-ldap-component.adoc[Spring LDAP] | camel-spring-ldap-starter | Stable | 2.11 | Perform searches in LDAP servers using filters as the message payload. + +| xref:latest@components::spring-rabbitmq-component.adoc[Spring RabbitMQ] | camel-spring-rabbitmq-starter | Stable | 3.8 | Send and receive messages from RabbitMQ using Spring RabbitMQ client. + +| xref:latest@components::spring-redis-component.adoc[Spring Redis] | camel-spring-redis-starter | Stable | 2.11 | Send and receive messages from Redis. + +| xref:latest@components::spring-ws-component.adoc[Spring WebService] | camel-spring-ws-starter | Stable | 2.6 | Access external web services as a client or expose your own web services. + +| xref:latest@components::sql-component.adoc[SQL] | camel-sql-starter | Stable | 1.4 | Perform SQL queries using Spring JDBC. + +| xref:latest@components::sql-stored-component.adoc[SQL Stored Procedure] | camel-sql-starter | Stable | 2.17 | Perform SQL queries as a JDBC Stored Procedures using Spring JDBC. + +| xref:latest@components::ssh-component.adoc[SSH] | camel-ssh-starter | Stable | 2.10 | Execute commands on remote hosts using SSH. + +| xref:latest@components::stax-component.adoc[StAX] | camel-stax-starter | Stable | 2.9 | Process XML payloads by a SAX ContentHandler. + +| xref:latest@components::stitch-component.adoc[Stitch] | camel-stitch-starter | Stable | 3.8 | Stitch is a cloud ETL service that integrates various data sources into a central data warehouse through various integrations. + +| xref:latest@components::stomp-component.adoc[Stomp] | camel-stomp-starter | Stable | 2.12 | Send and rececive messages to/from STOMP (Simple Text Oriented Messaging Protocol) compliant message brokers. + +| xref:latest@components::stream-component.adoc[Stream] | camel-stream-starter | Stable | 1.3 | Read from system-in and write to system-out and system-err streams. + +| xref:latest@components::string-template-component.adoc[String Template] | camel-stringtemplate-starter | Stable | 1.2 | Transform messages using StringTemplate engine. + +| xref:latest@components::stub-component.adoc[Stub] | camel-stub-starter | Stable | 2.10 | Stub out any physical endpoints while in development or testing. + +| xref:latest@components::telegram-component.adoc[Telegram] | camel-telegram-starter | Stable | 2.18 | Send and receive messages acting as a Telegram Bot Telegram Bot API. + +| xref:latest@components::thrift-component.adoc[Thrift] | camel-thrift-starter | Stable | 2.20 | Call and expose remote procedures (RPC) with Apache Thrift data format and serialization mechanism. + +| xref:latest@components::tika-component.adoc[Tika] | camel-tika-starter | Stable | 2.19 | Parse documents and extract metadata and text using Apache Tika. + +| xref:latest@components::timer-component.adoc[Timer] | camel-timer-starter | Stable | 1.0 | Generate messages in specified intervals using java.util.Timer. + +| xref:latest@components::twilio-component.adoc[Twilio] | camel-twilio-starter | Stable | 2.20 | Interact with Twilio REST APIs using Twilio Java SDK. + +| xref:latest@components::twitter-directmessage-component.adoc[Twitter Direct Message] | camel-twitter-starter | Stable | 2.10 | Send and receive Twitter direct messages. + +| xref:latest@components::twitter-search-component.adoc[Twitter Search] | camel-twitter-starter | Stable | 2.10 | Access Twitter Search. + +| xref:latest@components::twitter-timeline-component.adoc[Twitter Timeline] | camel-twitter-starter | Stable | 2.10 | Send tweets and receive tweets from user's timeline. + +| xref:latest@components::undertow-component.adoc[Undertow] | camel-undertow-starter | Stable | 2.16 | Expose HTTP and WebSocket endpoints and access external HTTP/WebSocket servers. + +| xref:latest@components::validator-component.adoc[Validator] | camel-validator-starter | Stable | 1.1 | Validate the payload using XML Schema and JAXP Validation. + +| xref:latest@components::velocity-component.adoc[Velocity] | camel-velocity-starter | Stable | 1.2 | Transform messages using a Velocity template. + +| xref:latest@components::vertx-component.adoc[Vert.x] | camel-vertx-starter | Stable | 2.12 | Send and receive messages to/from Vert.x Event Bus. + +| xref:latest@components::vertx-http-component.adoc[Vert.x HTTP Client] | camel-vertx-http-starter | Stable | 3.5 | Send requests to external HTTP servers using Vert.x + +| xref:latest@components::vertx-kafka-component.adoc[Vert.x Kafka] | camel-vertx-kafka-starter | Stable | 3.7 | Sent and receive messages to/from an Apache Kafka broker using vert.x Kafka client + +| xref:latest@components::vertx-websocket-component.adoc[Vert.x WebSocket] | camel-vertx-websocket-starter | Stable | 3.5 | Expose WebSocket endpoints and connect to remote WebSocket servers using Vert.x + +| xref:latest@components::vm-component.adoc[VM] | camel-vm-starter | Stable | 1.1 | Call another endpoint in the same CamelContext asynchronously. + +| xref:latest@components::weather-component.adoc[Weather] | camel-weather-starter | Stable | 2.12 | Poll the weather information from Open Weather Map. + +| xref:latest@components::web3j-component.adoc[Web3j Ethereum Blockchain] | camel-web3j-starter | Stable | 2.22 | Interact with Ethereum nodes using web3j client API. + +| xref:latest@components::webhook-component.adoc[Webhook] | camel-webhook-starter | Stable | 3.0 | Expose webhook endpoints to receive push notifications for other Camel components. + +| xref:latest@components::weka-component.adoc[Weka] | camel-weka-starter | Stable | 3.1 | Perform machine learning tasks using Weka. + +| xref:latest@components::wordpress-component.adoc[Wordpress] | camel-wordpress-starter | Stable | 2.21 | Manage posts and users using Wordpress API. + +| xref:latest@components::workday-component.adoc[Workday] | camel-workday-starter | Stable | 3.1 | Detect and parse documents using Workday. + +| xref:latest@components::xchange-component.adoc[XChange] | camel-xchange-starter | Stable | 2.21 | Access market data and trade on Bitcoin and Altcoin exchanges. + +| xref:latest@components::xj-component.adoc[XJ] | camel-xj-starter | Stable | 3.0 | Transform JSON and XML message using a XSLT. + +| xref:latest@components::xmlsecurity-sign-component.adoc[XML Security Sign] | camel-xmlsecurity-starter | Stable | 2.12 | Sign XML payloads using the XML signature specification. + +| xref:latest@components::xmlsecurity-verify-component.adoc[XML Security Verify] | camel-xmlsecurity-starter | Stable | 2.12 | Verify XML payloads using the XML signature specification. + +| xref:latest@components::xmpp-component.adoc[XMPP] | camel-xmpp-starter | Stable | 1.0 | Send and receive messages to/from an XMPP chat server. + +| xref:latest@components::xquery-component.adoc[XQuery] | camel-saxon-starter | Stable | 1.0 | Query and/or transform XML payloads using XQuery and Saxon. + +| xref:latest@components::xslt-component.adoc[XSLT] | camel-xslt-starter | Stable | 1.3 | Transforms XML payload using an XSLT template. + +| xref:latest@components::xslt-saxon-component.adoc[XSLT Saxon] | camel-xslt-saxon-starter | Stable | 3.0 | Transform XML payloads using an XSLT template using Saxon. + +| xref:latest@components::yammer-component.adoc[Yammer] | camel-yammer-starter | Stable | 2.12 | Interact with the Yammer enterprise social network. + +| xref:latest@components::zendesk-component.adoc[Zendesk] | camel-zendesk-starter | Stable | 2.19 | Manage Zendesk tickets, users, organizations, etc. + +| xref:latest@components::zookeeper-component.adoc[ZooKeeper] | camel-zookeeper-starter | Stable | 2.9 | Manage ZooKeeper clusters. + +| xref:latest@components::zookeeper-master-component.adoc[ZooKeeper Master] | camel-zookeeper-master-starter | Stable | 2.19 | Have only a single consumer in a cluster consuming from a given endpoint; with automatic failover if the JVM dies. +|=== +// components: END + +== Camel Data Formats + +// dataformats: START +Number of Camel data formats: 48 in 40 JAR artifacts (0 deprecated) + +[width="100%",cols="4,3,3,3,6",options="header"] +|=== +| Data Format | Artifact | Support Level | Since | Description + +| xref:latest@components:dataformats:any23-dataformat.adoc[Any23] | camel-any23-starter | Stable | 3.0 | Extract RDF data from HTML documents. + +| xref:latest@components:dataformats:asn1-dataformat.adoc[ASN.1 File] | camel-asn1-starter | Stable | 2.20 | Encode and decode data structures using Abstract Syntax Notation One (ASN.1). + +| xref:latest@components:dataformats:avro-dataformat.adoc[Avro] | camel-avro-starter | Stable | 2.14 | Serialize and deserialize messages using Apache Avro binary data format. + +| xref:latest@components:dataformats:avro-jackson-dataformat.adoc[Avro Jackson] | camel-jackson-avro-starter | Stable | 3.10 | Marshal POJOs to Avro and back using Jackson. + +| xref:latest@components:dataformats:barcode-dataformat.adoc[Barcode] | camel-barcode-starter | Stable | 2.14 | Transform strings to various 1D/2D barcode bitmap formats and back. + +| xref:latest@components:dataformats:base64-dataformat.adoc[Base64] | camel-base64-starter | Stable | 2.11 | Encode and decode data using Base64. + +| xref:latest@components:dataformats:beanio-dataformat.adoc[BeanIO] | camel-beanio-starter | Stable | 2.10 | Marshal and unmarshal Java beans to and from flat files (such as CSV, delimited, or fixed length formats). + +| xref:latest@components:dataformats:bindy-dataformat.adoc[Bindy CSV] | camel-bindy-starter | Stable | 2.0 | Marshal and unmarshal between POJOs and Comma separated values (CSV) format using Camel Bindy + +| xref:latest@components:dataformats:bindy-dataformat.adoc[Bindy Fixed Length] | camel-bindy-starter | Stable | 2.0 | Marshal and unmarshal between POJOs and fixed field length format using Camel Bindy + +| xref:latest@components:dataformats:bindy-dataformat.adoc[Bindy Key Value Pair] | camel-bindy-starter | Stable | 2.0 | Marshal and unmarshal between POJOs and key-value pair (KVP) format using Camel Bindy + +| xref:latest@components:dataformats:cbor-dataformat.adoc[CBOR] | camel-cbor-starter | Stable | 3.0 | Unmarshal a CBOR payload to POJO and back. + +| xref:latest@components:dataformats:crypto-dataformat.adoc[Crypto (Java Cryptographic Extension)] | camel-crypto-starter | Stable | 2.3 | Encrypt and decrypt messages using Java Cryptography Extension (JCE). + +| xref:latest@components:dataformats:csv-dataformat.adoc[CSV] | camel-csv-starter | Stable | 1.3 | Handle CSV (Comma Separated Values) payloads. + +| xref:latest@components:dataformats:fhirJson-dataformat.adoc[FHIR JSon] | camel-fhir-starter | Stable | 2.21 | Marshall and unmarshall FHIR objects to/from JSON. + +| xref:latest@components:dataformats:fhirXml-dataformat.adoc[FHIR XML] | camel-fhir-starter | Stable | 2.21 | Marshall and unmarshall FHIR objects to/from XML. + +| xref:latest@components:dataformats:flatpack-dataformat.adoc[Flatpack] | camel-flatpack-starter | Stable | 2.1 | Marshal and unmarshal Java lists and maps to/from flat files (such as CSV, delimited, or fixed length formats) using Flatpack library. + +| xref:latest@components:dataformats:grok-dataformat.adoc[Grok] | camel-grok-starter | Stable | 3.0 | Unmarshal unstructured data to objects using Logstash based Grok patterns. + +| xref:latest@components:dataformats:gzipdeflater-dataformat.adoc[GZip Deflater] | camel-zip-deflater-starter | Stable | 2.0 | Compress and decompress messages using java.util.zip.GZIPStream. + +| xref:latest@components:dataformats:hl7-dataformat.adoc[HL7] | camel-hl7-starter | Stable | 2.0 | Marshal and unmarshal HL7 (Health Care) model objects using the HL7 MLLP codec. + +| xref:latest@components:dataformats:ical-dataformat.adoc[iCal] | camel-ical-starter | Stable | 2.12 | Marshal and unmarshal iCal (.ics) documents to/from model objects provided by the iCal4j library. + +| xref:latest@components:dataformats:jacksonxml-dataformat.adoc[JacksonXML] | camel-jacksonxml-starter | Stable | 2.16 | Unmarshal a XML payloads to POJOs and back using XMLMapper extension of Jackson. + +| xref:latest@components:dataformats:jaxb-dataformat.adoc[JAXB] | camel-jaxb-starter | Stable | 1.0 | Unmarshal XML payloads to POJOs and back using JAXB2 XML marshalling standard. + +| xref:latest@components:dataformats:json-fastjson-dataformat.adoc[JSON Fastjson] | camel-fastjson-starter | Stable | 2.20 | Marshal POJOs to JSON and back using Fastjson + +| xref:latest@components:dataformats:json-gson-dataformat.adoc[JSON Gson] | camel-gson-starter | Stable | 2.10 | Marshal POJOs to JSON and back using Gson + +| xref:latest@components:dataformats:json-jackson-dataformat.adoc[JSON Jackson] | camel-jackson-starter | Stable | 2.0 | Marshal POJOs to JSON and back using Jackson + +| xref:latest@components:dataformats:json-johnzon-dataformat.adoc[JSON Johnzon] | camel-johnzon-starter | Stable | 2.18 | Marshal POJOs to JSON and back using Johnzon + +| xref:latest@components:dataformats:json-jsonb-dataformat.adoc[JSON JSON-B] | camel-jsonb-starter | Stable | 3.7 | Marshal POJOs to JSON and back using JSON-B. + +| xref:latest@components:dataformats:json-xstream-dataformat.adoc[JSON XStream] | camel-xstream-starter | Stable | 2.0 | Marshal POJOs to JSON and back using XStream + +| xref:latest@components:dataformats:jsonApi-dataformat.adoc[JSonApi] | camel-jsonapi-starter | Stable | 3.0 | Marshal and unmarshal JSON:API resources using JSONAPI-Converter library. + +| xref:latest@components:dataformats:lzf-dataformat.adoc[LZF Deflate Compression] | camel-lzf-starter | Stable | 2.17 | Compress and decompress streams using LZF deflate algorithm. + +| xref:latest@components:dataformats:mime-multipart-dataformat.adoc[MIME Multipart] | camel-mail-starter | Stable | 2.17 | Marshal Camel messages with attachments into MIME-Multipart messages and back. + +| xref:latest@components:dataformats:pgp-dataformat.adoc[PGP] | camel-crypto-starter | Stable | 2.9 | Encrypt and decrypt messages using Java Cryptographic Extension (JCE) and PGP. + +| xref:latest@components:dataformats:protobuf-dataformat.adoc[Protobuf] | camel-protobuf-starter | Stable | 2.2 | Serialize and deserialize Java objects using Google's Protocol buffers. + +| xref:latest@components:dataformats:protobuf-jackson-dataformat.adoc[Protobuf Jackson] | camel-jackson-protobuf-starter | Stable | 3.10 | Marshal POJOs to Protobuf and back using Jackson. + +| xref:latest@components:dataformats:rss-dataformat.adoc[RSS] | camel-rss-starter | Stable | 2.1 | Transform from ROME SyndFeed Java Objects to XML and vice-versa. + +| xref:latest@components:dataformats:soapjaxb-dataformat.adoc[SOAP] | camel-soap-starter | Stable | 2.3 | Marshal Java objects to SOAP messages and back. + +| xref:latest@components:dataformats:syslog-dataformat.adoc[Syslog] | camel-syslog-starter | Stable | 2.6 | Marshall SyslogMessages to RFC3164 and RFC5424 messages and back. + +| xref:latest@components:dataformats:tarfile-dataformat.adoc[Tar File] | camel-tarfile-starter | Stable | 2.16 | Archive files into tarballs or extract files from tarballs. + +| xref:latest@components:dataformats:thrift-dataformat.adoc[Thrift] | camel-thrift-starter | Stable | 2.20 | Serialize and deserialize messages using Apache Thrift binary data format. + +| xref:latest@components:dataformats:tidyMarkup-dataformat.adoc[TidyMarkup] | camel-tagsoup-starter | Stable | 2.0 | Parse (potentially invalid) HTML into valid HTML or DOM. + +| xref:latest@components:dataformats:univocity-csv-dataformat.adoc[uniVocity CSV] | camel-univocity-parsers-starter | Stable | 2.15 | Marshal and unmarshal Java objects from and to CSV (Comma Separated Values) using UniVocity Parsers. + +| xref:latest@components:dataformats:univocity-fixed-dataformat.adoc[uniVocity Fixed Length] | camel-univocity-parsers-starter | Stable | 2.15 | Marshal and unmarshal Java objects from and to fixed length records using UniVocity Parsers. + +| xref:latest@components:dataformats:univocity-tsv-dataformat.adoc[uniVocity TSV] | camel-univocity-parsers-starter | Stable | 2.15 | Marshal and unmarshal Java objects from and to TSV (Tab-Separated Values) records using UniVocity Parsers. + +| xref:latest@components:dataformats:secureXML-dataformat.adoc[XML Security] | camel-xmlsecurity-starter | Stable | 2.0 | Encrypt and decrypt XML payloads using Apache Santuario. + +| xref:latest@components:dataformats:xstream-dataformat.adoc[XStream] | camel-xstream-starter | Stable | 1.3 | Marshal and unmarshal POJOs to/from XML using XStream library. + +| xref:latest@components:dataformats:yaml-snakeyaml-dataformat.adoc[YAML SnakeYAML] | camel-snakeyaml-starter | Stable | 2.17 | Marshal and unmarshal Java objects to and from YAML using SnakeYAML + +| xref:latest@components:dataformats:zipdeflater-dataformat.adoc[Zip Deflate Compression] | camel-zip-deflater-starter | Stable | 2.12 | Compress and decompress streams using java.util.zip.Deflater and java.util.zip.Inflater. + +| xref:latest@components:dataformats:zipfile-dataformat.adoc[Zip File] | camel-zipfile-starter | Stable | 2.11 | Compression and decompress streams using java.util.zip.ZipStream. +|=== +// dataformats: END + +== Camel Languages + +// languages: START +Number of Camel languages: 19 in 13 JAR artifacts (0 deprecated) + +[width="100%",cols="4,3,3,3,6",options="header"] +|=== +| Language | Artifact | Support Level | Since | Description + +| xref:latest@components:languages:bean-language.adoc[Bean Method] | camel-bean-starter | Stable | 1.3 | Calls a Java bean method. + +| xref:latest@components:languages:constant-language.adoc[Constant] | camel-base | Stable | 1.5 | To use a constant value in Camel expressions or predicates. Important: this is a fixed constant value that is only set once during starting up the route, do not use this if you want dynamic values during routing. + +| xref:latest@components:languages:datasonnet-language.adoc[DataSonnet] | camel-datasonnet-starter | Stable | 3.7 | To use DataSonnet scripts for message transformations. + +| xref:latest@components:languages:exchangeProperty-language.adoc[ExchangeProperty] | camel-base | Stable | 2.0 | To use a Camel Exchange property in expressions or predicates. + +| xref:latest@components:languages:file-language.adoc[File] | camel-base | Stable | 1.1 | For expressions and predicates using the file/simple language. + +| xref:latest@components:languages:groovy-language.adoc[Groovy] | camel-groovy-starter | Stable | 1.3 | Evaluates a Groovy script. + +| xref:latest@components:languages:header-language.adoc[Header] | camel-base | Stable | 1.5 | To use a Camel Message header in expressions or predicates. + +| xref:latest@components:languages:hl7terser-language.adoc[HL7 Terser] | camel-hl7-starter | Stable | 2.11 | Get the value of a HL7 message field specified by terse location specification syntax. + +| xref:latest@components:languages:joor-language.adoc[jOOR] | camel-joor-starter | Stable | 3.7 | Evaluates a jOOR (Java compiled once at runtime) expression. + +| xref:latest@components:languages:jsonpath-language.adoc[JSONPath] | camel-jsonpath-starter | Stable | 2.13 | Evaluates a JSONPath expression against a JSON message body. + +| xref:latest@components:languages:mvel-language.adoc[MVEL] | camel-mvel-starter | Stable | 2.0 | Evaluates a MVEL template. + +| xref:latest@components:languages:ognl-language.adoc[OGNL] | camel-ognl-starter | Stable | 1.1 | Evaluates an OGNL expression (Apache Commons OGNL). + +| xref:latest@components:languages:ref-language.adoc[Ref] | camel-base | Stable | 2.8 | Reference to an existing Camel expression or predicate, which is looked up from the Camel registry. + +| xref:latest@components:languages:simple-language.adoc[Simple] | camel-base | Stable | 1.1 | To use Camels built-in Simple language in Camel expressions or predicates. + +| xref:latest@components:languages:spel-language.adoc[SpEL] | camel-spring-starter | Stable | 2.7 | Evaluates a Spring expression (SpEL). + +| xref:latest@components:languages:tokenize-language.adoc[Tokenize] | camel-base | Stable | 2.0 | To use Camel message body or header with a tokenizer in Camel expressions or predicates. + +| xref:latest@components:languages:xtokenize-language.adoc[XML Tokenize] | camel-xml-jaxp-starter | Stable | 2.14 | Tokenize XML payloads. + +| xref:latest@components:languages:xpath-language.adoc[XPath] | camel-xpath-starter | Stable | 1.1 | Evaluates an XPath expression against an XML payload. + +| xref:latest@components:languages:xquery-language.adoc[XQuery] | camel-saxon-starter | Stable | 1.0 | Evaluates an XQuery expressions against an XML payload. +|=== +// languages: END + + +== Miscellaneous Extensions + +// others: START +Number of miscellaneous extensions: 24 in 24 JAR artifacts (4 deprecated) + +[width="100%",cols="4,3,3,3,6",options="header"] +|=== +| Extensions | Artifact | Support Level | Since | Description + +| xref:latest@components:others:aws-xray.adoc[AWS XRay] | camel-aws-xray-starter | Stable | 2.21 | Distributed tracing using AWS XRay + +| xref:latest@components:others:caffeine-lrucache.adoc[Caffeine Lrucache] | camel-caffeine-lrucache-starter | Stable | 3.0 | *deprecated* Camel Caffeine LRUCache support + +| xref:latest@components:others:csimple-joor.adoc[CSimple jOOR] | camel-csimple-joor-starter | Stable | 3.7 | jOOR compiler for csimple language + +| xref:latest@components:others:cxf-transport.adoc[CXF Transport] | camel-cxf-transport-starter | Stable | 2.8 | Camel Transport for Apache CXF + +| xref:latest@components:others:etcd3.adoc[Etcd3] | camel-etcd3-starter | Preview | 3.5 | Aggregation repository using EtcD as datastore + +| xref:latest@components:others:hystrix.adoc[Hystrix] | camel-hystrix-starter | Stable | 2.18 | *deprecated* Circuit Breaker EIP using Netflix Hystrix + +| xref:latest@components:others:jasypt.adoc[Jasypt] | camel-jasypt-starter | Stable | 2.5 | Security using Jasypt + +| xref:latest@components:others:jfr.adoc[Jfr] | camel-jfr-starter | Stable | 3.8 | Diagnose Camel applications with Java Flight Recorder + +| xref:latest@components:others:leveldb.adoc[LevelDB] | camel-leveldb-starter | Stable | 2.10 | Using LevelDB as persistent EIP store + +| xref:latest@components:others:leveldb-legacy.adoc[LevelDB-legacy] | camel-leveldb-legacy-starter | Stable | 2.10 | Using LevelDB as persistent EIP store + +| xref:latest@components:others:lra.adoc[LRA] | camel-lra-starter | Preview | 2.21 | Camel saga binding for Long-Running-Action framework + +| xref:latest@components:others:openapi-java.adoc[Openapi Java] | camel-openapi-java-starter | Stable | 3.1 | Rest-dsl support for using openapi doc + +| xref:latest@components:others:opentelemetry.adoc[OpenTelemetry] | camel-opentelemetry-starter | Stable | 3.5 | Distributed tracing using OpenTelemetry + +| xref:latest@components:others:opentracing.adoc[OpenTracing] | camel-opentracing-starter | Stable | 2.19 | Distributed tracing using OpenTracing + +| xref:latest@components:others:reactor.adoc[Reactor] | camel-reactor-starter | Stable | 2.20 | Reactor based back-end for Camel's reactive streams component + +| xref:latest@components:others:resilience4j.adoc[Resilience4j] | camel-resilience4j-starter | Stable | 3.0 | Circuit Breaker EIP using Resilience4j + +| xref:latest@components:others:ribbon.adoc[Ribbon] | camel-ribbon-starter | Stable | 2.18 | *deprecated* Using Netflix Ribbon for client side load balancing + +| xref:latest@components:others:rxjava.adoc[RxJava] | camel-rxjava-starter | Stable | 2.22 | RxJava based back-end for Camel's reactive streams component + +| xref:latest@components:others:shiro.adoc[Shiro] | camel-shiro-starter | Stable | 2.5 | Security using Shiro + +| xref:latest@components:others:spring-javaconfig.adoc[Spring Java Configuration] | camel-spring-javaconfig-starter | Stable | 2.0 | *deprecated* Using Camel with Spring Java Configuration + +| xref:latest@components:others:spring-security.adoc[Spring Security] | camel-spring-security-starter | Stable | 2.3 | Security using Spring Security + +| xref:latest@components:others:swagger-java.adoc[Swagger Java] | camel-swagger-java-starter | Stable | 2.16 | Rest-dsl support for using swagger api-doc + +| xref:latest@components:others:undertow-spring-security.adoc[Undertow Spring Security] | camel-undertow-spring-security-starter | Stable | 3.3 | Spring Security Provider for camel-undertow + +| xref:latest@components:others:zipkin.adoc[Zipkin] | camel-zipkin-starter | Stable | 2.18 | Distributed message tracing using Zipkin +|=== +// others: END + diff --git a/docs/spring-boot/modules/ROOT/pages/spring-boot-xml.adoc b/docs/spring-boot/modules/ROOT/pages/spring-boot-xml.adoc new file mode 100644 index 0000000..c5d7a68 --- /dev/null +++ b/docs/spring-boot/modules/ROOT/pages/spring-boot-xml.adoc @@ -0,0 +1,9 @@ +[[SpringBootXml-SpringBootXml]] += Spring Boot XML + +*Since Camel 3.9* + +Support for using Spring XML files containing Camel XML routes. + +However this is not a recommended practice as Camel XML is creating and managing a `SpringCamelContext` +created by standard Spring framework that predates Spring Boot. diff --git a/docs/spring-boot/modules/ROOT/pages/spring-boot.adoc b/docs/spring-boot/modules/ROOT/pages/spring-boot.adoc new file mode 100644 index 0000000..43a1fd3 --- /dev/null +++ b/docs/spring-boot/modules/ROOT/pages/spring-boot.adoc @@ -0,0 +1,726 @@ +[[SpringBoot-SpringBoot]] += Spring Boot + +*Since Camel 2.15* + +Spring Boot component provides auto-configuration for Apache Camel. Our +opinionated auto-configuration of the Camel context auto-detects Camel +routes available in the Spring context and registers the key Camel +utilities (like producer template, consumer template and the type +converter) as beans. + +Maven users will need to add the following dependency to their `pom.xml` +in order to use this component: + +[source,xml] +---- +<dependency> + <groupId>org.apache.camel.springboot</groupId> + <artifactId>camel-spring-boot</artifactId> + <version>${camel.version}</version> <!-- use the same version as your Camel core version --> +</dependency> +---- + +`camel-spring-boot` jar comes with the `spring.factories` file, so as +soon as you add that dependency into your classpath, Spring Boot will +automatically auto-configure Camel for you. + +[[SpringBoot-CamelSpringBootStarter]] +== Camel Spring Boot Starter + +*Since Camel 2.17* + +Apache Camel ships +a https://github.com/spring-projects/spring-boot/tree/master/spring-boot-project/spring-boot-starters[Spring +Boot Starter] module that allows you to develop Spring Boot applications +using starters. There is a +https://github.com/apache/camel-spring-boot-examples/tree/master/camel-example-spring-boot[sample +application] in the source code also. + +To use the starter, add the following to your spring boot pom.xml file: + +[source,xml] +---- +<dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-spring-boot-starter</artifactId> + <version>${camel.version}</version> <!-- use the same version as your Camel core version --> +</dependency> +---- + +Then you can just add classes with your Camel routes such as: + +[source,java] +---- +package com.example; + +import org.apache.camel.builder.RouteBuilder; +import org.springframework.stereotype.Component; + +@Component +public class MyRoute extends RouteBuilder { + + @Override + public void configure() throws Exception { + from("timer:foo").to("log:bar"); + } +} +---- + +Then these routes will be started automatically. + +You can customize the Camel application in the `application.properties` +or `application.yml` file. + + +// spring-boot-auto-configure options: START +:page-partial: +:doctitle: Camel Spring Boot Starter for spring-boot + +== Spring Boot Auto-Configuration + +When using spring-boot with 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-spring-boot-starter</artifactId> + <version>x.x.x</version> + <!-- use the same version as your Camel core version --> +</dependency> +---- + + +The component supports 173 options, which are listed below. + + + +[width="100%",cols="2,5,^1,2",options="header"] +|=== +| Name | Description | Default | Type +| *camel.cloud.enabled* | Global option to enable/disable Camel cloud support, default is true. | true | Boolean +| *camel.cloud.load-balancer.enabled* | Global option to enable/disable Camel cloud load balancer, default is true. | true | Boolean +| *camel.cloud.service-call.component* | The Camel component to use for calling the service. The default is http component. | | String +| *camel.cloud.service-call.default-load-balancer* | Determine if the default load balancer should be used instead of any auto discovered one. | false | Boolean +| *camel.cloud.service-call.expression* | The expression to use. | | String +| *camel.cloud.service-call.expression-language* | The expression language to use, default is ref. | ref | String +| *camel.cloud.service-call.load-balancer* | A reference to the org.apache.camel.cloud.ServiceLoadBalancer to use. | | String +| *camel.cloud.service-call.service-chooser* | A reference to the org.apache.camel.cloud.ServiceChooser to use. | | String +| *camel.cloud.service-call.service-discovery* | A reference to the org.apache.camel.cloud.ServiceDiscovery to use. | | String +| *camel.cloud.service-call.service-filter* | A reference to the org.apache.camel.cloud.ServiceFilter to use. | | String +| *camel.cloud.service-call.uri* | The uri of the endpoint to send to. The uri can be dynamic computed using the simple language expression. | | String +| *camel.cloud.service-chooser.enabled* | Global option to enable/disable Camel cloud service chooser, default is true. | true | Boolean +| *camel.cloud.service-discovery.configurations* | Configure the service discovery rules. | | Map +| *camel.cloud.service-discovery.enabled* | Global option to enable/disable Camel cloud service discovery, default is true. | true | Boolean +| *camel.cloud.service-discovery.service-definitions* | Configure static service discovery with distinct id, host, port, and metadata properties. | | Map +| *camel.cloud.service-discovery.services* | Configure static service discovery using simple host:port strings. | | Map +| *camel.cloud.service-filter.blacklist* | Configure service filter blacklists. | | Map +| *camel.cloud.service-filter.configurations* | Configure the service filtering rules. | | Map +| *camel.cloud.service-filter.enabled* | Global option to enable/disable Camel cloud service filter, default is true. | true | Boolean +| *camel.cloud.service-registry.enabled* | Configure if service registry should be enabled or not, default true. | true | Boolean +| *camel.cloud.service-registry.service-host* | Configure the service listening address. | | String +| *camel.clustered.controller.cluster-service* | The cluster service. | | CamelClusterService +| *camel.clustered.controller.enabled* | Global option to enable/disable Camel clustered route controller, default is false. | false | Boolean +| *camel.clustered.controller.initial-delay* | Set the amount of time (in millis) the route controller should wait before to start the routes after the camel context is started or after the route is initialized if the route is created after the camel context is started. | | String +| *camel.clustered.controller.namespace* | The default namespace. | | String +| *camel.clustered.controller.routes* | Routes configuration. | | Map +| *camel.component.enabled* | Global option to enable/disable component auto-configuration, default is true. | true | Boolean +| *camel.component.properties.auto-discover-properties-sources* | Whether to automatically discovery instances of PropertiesSource from registry and service factory. | true | Boolean +| *camel.component.properties.default-fallback-enabled* | If false, the component does not attempt to find a default for the key by looking after the colon separator. | true | Boolean +| *camel.component.properties.encoding* | Encoding to use when loading properties file from the file system or classpath. If no encoding has been set, then the properties files is loaded using ISO-8859-1 encoding (latin-1) as documented by java.util.Properties#load(java.io.InputStream) | | String +| *camel.component.properties.environment-variable-mode* | Sets the OS environment variables mode (0 = never, 1 = fallback, 2 = override). The default mode (override) is to use OS environment variables if present, and override any existing properties. OS environment variable mode is checked before JVM system property mode | 2 | Integer +| *camel.component.properties.ignore-missing-location* | Whether to silently ignore if a location cannot be located, such as a properties file not found. | false | Boolean +| *camel.component.properties.initial-properties* | Sets initial properties which will be used before any locations are resolved. The option is a java.util.Properties type. | | String +| *camel.component.properties.location* | A list of locations to load properties. You can use comma to separate multiple locations. This option will override any default locations and only use the locations from this option. | | String +| *camel.component.properties.override-properties* | Sets a special list of override properties that take precedence and will use first, if a property exist. The option is a java.util.Properties type. | | String +| *camel.component.properties.properties-parser* | To use a custom PropertiesParser. The option is a org.apache.camel.component.properties.PropertiesParser type. | | String +| *camel.component.properties.system-properties-mode* | Sets the JVM system property mode (0 = never, 1 = fallback, 2 = override). The default mode (override) is to use system properties if present, and override any existing properties. OS environment variable mode is checked before JVM system property mode | 2 | Integer +| *camel.dataformat.enabled* | Global option to enable/disable dataformat auto-configuration, default is true. | true | Boolean +| *camel.health.config* | Additional health check properties for fine grained configuration of health checks. | | Map +| *camel.health.config.enabled* | Set if the check associated to this configuration is enabled or not. Is default enabled. | | Boolean +| *camel.health.config.failure-threshold* | Set the number of failure before reporting the service as un-healthy. | | Integer +| *camel.health.config.interval* | Set the check interval in milli seconds. | | Long +| *camel.health.config.parent* | The id of the health check such as routes or registry (can use * as wildcard) | | String +| *camel.health.context-enabled* | Whether context health check is enabled Is default enabled | | Boolean +| *camel.health.enabled* | Whether health check is enabled globally | | Boolean +| *camel.health.registry-enabled* | Whether registry health check is enabled Is default enabled | | Boolean +| *camel.health.routes-enabled* | Whether routes health check is enabled Is default enabled | | Boolean +| *camel.language.enabled* | Global option to enable/disable language auto-configuration, default is true. | true | Boolean +| *camel.routetemplate.config* | Route template configurations | | List +| *camel.springboot.allow-use-original-message* | Sets whether to allow access to the original message from Camel's error handler, or from org.apache.camel.spi.UnitOfWork.getOriginalInMessage(). Turning this off can optimize performance, as defensive copy of the original message is not needed. Default is false. | false | Boolean +| *camel.springboot.auto-startup* | Sets whether the object should automatically start when Camel starts. Important: Currently only routes can be disabled, as CamelContext's are always started. Note: When setting auto startup false on CamelContext then that takes precedence and no routes is started. You would need to start CamelContext explicit using the org.apache.camel.CamelContext.start() method, to start the context, and then you would need to start the routes manually using Camelcon [...] +| *camel.springboot.autowired-enabled* | Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. Default is true. | true | Boolean +| *camel.springboot.backlog-tracing* | Sets whether backlog tracing is enabled or not. Default is false. | false | Boolean +| *camel.springboot.bean-introspection-extended-statistics* | Sets whether bean introspection uses extended statistics. The default is false. | false | Boolean +| *camel.springboot.bean-introspection-logging-level* | Sets the logging level used by bean introspection, logging activity of its usage. The default is TRACE. | | LoggingLevel +| *camel.springboot.bean-post-processor-enabled* | Can be used to turn off bean post processing. Be careful to turn this off, as this means that beans that use Camel annotations such as org.apache.camel.EndpointInject, org.apache.camel.ProducerTemplate, org.apache.camel.Produce, org.apache.camel.Consume etc will not be injected and in use. Turning this off should only be done if you are sure you do not use any of these Camel features. Not all runtimes allow turning this off (such as came [...] +| *camel.springboot.case-insensitive-headers* | Whether to use case sensitive or insensitive headers. Important: When using case sensitive (this is set to false). Then the map is case sensitive which means headers such as content-type and Content-Type are two different keys which can be a problem for some protocols such as HTTP based, which rely on case insensitive headers. However case sensitive implementations can yield faster performance. Therefore use case sensitive implementation wi [...] +| *camel.springboot.consumer-template-cache-size* | Consumer template endpoints cache size. | 1000 | Integer +| *camel.springboot.dump-routes* | If dumping is enabled then Camel will during startup dump all loaded routes (incl rests and route templates) represented as XML DSL into the log. This is intended for trouble shooting or to assist during development. Sensitive information that may be configured in the route endpoints could potentially be included in the dump output and is therefore not recommended to be used for production usage. This requires to have camel-xml-jaxb on the classpath to [...] +| *camel.springboot.duration-max-idle-seconds* | To specify for how long time in seconds Camel can be idle before automatic terminating the JVM. You can use this to run Spring Boot for a short while. | 0 | Integer +| *camel.springboot.duration-max-messages* | To specify how many messages to process by Camel before automatic terminating the JVM. You can use this to run Spring Boot for a short while. | 0 | Integer +| *camel.springboot.duration-max-seconds* | To specify for how long time in seconds to keep running the JVM before automatic terminating the JVM. You can use this to run Spring Boot for a short while. | 0 | Integer +| *camel.springboot.eager-classloading* | Whether to eager load a common set of Camel classes that would otherwise first be loaded on processing the first message. By eager loading these classes then the JVM has already loaded the classes during build phase, which allows Camel to process the first message faster. | false | Boolean +| *camel.springboot.endpoint-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. <p/> By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN/ERROR level and ignored. The default value is false. [...] +| *camel.springboot.endpoint-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 [...] +| *camel.springboot.endpoint-runtime-statistics-enabled* | Sets whether endpoint runtime statistics is enabled (gathers runtime usage of each incoming and outgoing endpoints). The default value is false. | false | Boolean +| *camel.springboot.exchange-factory* | Controls whether to pool (reuse) exchanges or create new exchanges (prototype). Using pooled will reduce JVM garbage collection overhead by avoiding to re-create Exchange instances per message each consumer receives. The default is prototype mode. | default | String +| *camel.springboot.exchange-factory-capacity* | The capacity the pool (for each consumer) uses for storing exchanges. The default capacity is 100. | 100 | Integer +| *camel.springboot.exchange-factory-statistics-enabled* | Configures whether statistics is enabled on exchange factory. | false | Boolean +| *camel.springboot.file-configurations* | Directory to load additional configuration files that contains configuration values that takes precedence over any other configuration. This can be used to refer to files that may have secret configuration that has been mounted on the file system for containers. You must use either file: or classpath: as prefix to load from file system or classpath. Then you can specify a pattern to load from sub directories and a name pattern such as file:/var/ [...] +| *camel.springboot.global-options* | Sets global options that can be referenced in the camel context Important: This has nothing to do with property placeholders, and is just a plain set of key/value pairs which are used to configure global options on CamelContext, such as a maximum debug logging length etc. | | Map +| *camel.springboot.include-non-singletons* | Whether to include non-singleton beans (prototypes) when scanning for RouteBuilder instances. By default only singleton beans is included in the context scan. | false | Boolean +| *camel.springboot.inflight-repository-browse-enabled* | Sets whether the inflight repository should allow browsing each inflight exchange. This is by default disabled as there is a very slight performance overhead when enabled. | false | Boolean +| *camel.springboot.java-routes-exclude-pattern* | Used for exclusive filtering RouteBuilder classes which are collected from the registry or via classpath scanning. The exclusive filtering takes precedence over inclusive filtering. The pattern is using Ant-path style pattern. Multiple patterns can be specified separated by comma. For example to exclude all classes starting with Bar use: **/Bar* To exclude all routes form a specific package use: com/mycompany/bar/* To exc [...] +| *camel.springboot.java-routes-include-pattern* | Used for inclusive filtering RouteBuilder classes which are collected from the registry or via classpath scanning. The exclusive filtering takes precedence over inclusive filtering. The pattern is using Ant-path style pattern. Multiple patterns can be specified separated by comma. Multiple patterns can be specified separated by comma. For example to include all classes starting with Foo use: **/Foo* To include all routes form a s [...] +| *camel.springboot.jmx-enabled* | Enable JMX in your Camel application. | true | Boolean +| *camel.springboot.jmx-management-name-pattern* | The naming pattern for creating the CamelContext JMX management name. The default pattern is #name# | #name# | String +| *camel.springboot.jmx-management-statistics-level* | Sets the JMX statistics level The level can be set to Extended to gather additional information The default value is Default. | | ManagementStatisticsLevel +| *camel.springboot.lightweight* | Experimental: Configure the context to be lightweight. This will trigger some optimizations and memory reduction options. Lightweight context has some limitations. At this moment, dynamic endpoint destinations are not supported. | false | Boolean +| *camel.springboot.load-type-converters* | Whether to load custom type converters by scanning classpath. This is used for backwards compatibility with Camel 2.x. Its recommended to migrate to use fast type converter loading by setting <tt>@Converter(generateLoader = true)</tt> on your custom type converter classes. | true | Boolean +| *camel.springboot.log-debug-max-chars* | Is used to limit the maximum length of the logging Camel message bodies. If the message body is longer than the limit, the log message is clipped. Use -1 to have unlimited length. Use for example 1000 to log at most 1000 characters. | 0 | Integer +| *camel.springboot.log-exhausted-message-body* | Sets whether to log exhausted message body with message history. Default is false. | false | Boolean +| *camel.springboot.log-mask* | Sets whether log mask is enabled or not. Default is false. | false | Boolean +| *camel.springboot.main-run-controller* | Whether to use the main run controller to ensure the Spring-Boot application keeps running until being stopped or the JVM terminated. You typically only need this if you run Spring-Boot standalone. If you run Spring-Boot with spring-boot-starter-web then the web container keeps the JVM running. | false | Boolean +| *camel.springboot.mdc-logging-keys-pattern* | Sets the pattern used for determining which custom MDC keys to propagate during message routing when the routing engine continues routing asynchronously for the given message. Setting this pattern to * will propagate all custom keys. Or setting the pattern to foo*,bar* will propagate any keys starting with either foo or bar. Notice that a set of standard Camel MDC keys are always propagated which starts with camel. as key name. The match ru [...] +| *camel.springboot.message-history* | Sets whether message history is enabled or not. Default is true. | true | Boolean +| *camel.springboot.name* | Sets the name of the CamelContext. | | String +| *camel.springboot.producer-template-cache-size* | Producer template endpoints cache size. | 1000 | Integer +| *camel.springboot.route-controller-back-off-delay* | Backoff delay in millis when restarting a route that failed to startup. | 2000 | Long +| *camel.springboot.route-controller-back-off-max-attempts* | Backoff maximum number of attempts to restart a route that failed to startup. When this threshold has been exceeded then the controller will give up attempting to restart the route, and the route will remain as stopped. | 0 | Long +| *camel.springboot.route-controller-back-off-max-delay* | Backoff maximum delay in millis when restarting a route that failed to startup. | 0 | Long +| *camel.springboot.route-controller-back-off-max-elapsed-time* | Backoff maximum elapsed time in millis, after which the backoff should be considered exhausted and no more attempts should be made. | 0 | Long +| *camel.springboot.route-controller-back-off-multiplier* | Backoff multiplier to use for exponential backoff. This is used to extend the delay between restart attempts. | 1 | Double +| *camel.springboot.route-controller-exclude-routes* | Pattern for filtering routes to be included as supervised. The pattern is matching on route id, and endpoint uri for the route. Multiple patterns can be separated by comma. For example to include all kafka routes, you can say <tt>kafka:*</tt>. And to include routes with specific route ids <tt>myRoute,myOtherRoute</tt>. The pattern supports wildcards and uses the matcher from org.apache.camel.support.PatternHelper#matchPattern. | | String +| *camel.springboot.route-controller-include-routes* | Pattern for filtering routes to be excluded as supervised. The pattern is matching on route id, and endpoint uri for the route. Multiple patterns can be separated by comma. For example to exclude all JMS routes, you can say <tt>jms:*</tt>. And to exclude routes with specific route ids <tt>mySpecialRoute,myOtherSpecialRoute</tt>. The pattern supports wildcards and uses the matcher from org.apache.camel.support.PatternHelper#matchPatte [...] +| *camel.springboot.route-controller-initial-delay* | Initial delay in milli seconds before the route controller starts, after CamelContext has been started. | 0 | Long +| *camel.springboot.route-controller-supervise-enabled* | To enable using supervising route controller which allows Camel to startup and then the controller takes care of starting the routes in a safe manner. This can be used when you want to startup Camel despite a route may otherwise fail fast during startup and cause Camel to fail to startup as well. By delegating the route startup to the supervising route controller then it manages the startup using a background thread. The controlle [...] +| *camel.springboot.route-controller-thread-pool-size* | The number of threads used by the route controller scheduled thread pool that are used for restarting routes. The pool uses 1 thread by default, but you can increase this to allow the controller to concurrently attempt to restart multiple routes in case more than one route has problems starting. | 1 | Integer +| *camel.springboot.route-controller-unhealthy-on-exhausted* | Whether to mark the route as unhealthy (down) when all restarting attempts (backoff) have failed and the route is not successfully started and the route manager is giving up. Setting this to true allows health checks to know about this and can report the Camel application as DOWN. The default is false. | false | Boolean +| *camel.springboot.route-filter-exclude-pattern* | Used for filtering routes routes matching the given pattern, which follows the following rules: - Match by route id - Match by route input endpoint uri The matching is using exact match, by wildcard and regular expression. For example to only include routes which starts with foo in their route id's, use: include=foo* And to exclude routes which starts from JMS endpoints, use: exclude=jms:* Multiple patterns can be separated by c [...] +| *camel.springboot.route-filter-include-pattern* | Used for filtering routes matching the given pattern, which follows the following rules: - Match by route id - Match by route input endpoint uri The matching is using exact match, by wildcard and regular expression. For example to only include routes which starts with foo in their route id's, use: include=foo* And to exclude routes which starts from JMS endpoints, use: exclude=jms:* Multiple patterns can be separated by comma, f [...] +| *camel.springboot.routes-collector-enabled* | Whether the routes collector is enabled or not. When enabled Camel will auto-discover routes (RouteBuilder instances from the registry and also load additional routes from the file system). The routes collector is default enabled. | true | Boolean +| *camel.springboot.routes-exclude-pattern* | Used for exclusive filtering of routes from directories. The exclusive filtering takes precedence over inclusive filtering. The pattern is using Ant-path style pattern. Multiple patterns can be specified separated by comma, as example, to exclude all the routes from a directory whose name contains foo use: **/*foo*. | | String +| *camel.springboot.routes-include-pattern* | Used for inclusive filtering of routes from directories. The exclusive filtering takes precedence over inclusive filtering. The pattern is using Ant-path style pattern. Multiple patterns can be specified separated by comma, as example, to include all the routes from a directory whose name contains foo use: **/*foo*. | classpath:camel/*,classpath:camel-template/*,classpath:camel-rest/* | String +| *camel.springboot.shutdown-log-inflight-exchanges-on-timeout* | Sets whether to log information about the inflight Exchanges which are still running during a shutdown which didn't complete without the given timeout. This requires to enable the option inflightRepositoryExchangeEnabled. | true | Boolean +| *camel.springboot.shutdown-now-on-timeout* | Sets whether to force shutdown of all consumers when a timeout occurred and thus not all consumers was shutdown within that period. You should have good reasons to set this option to false as it means that the routes keep running and is halted abruptly when CamelContext has been shutdown. | true | Boolean +| *camel.springboot.shutdown-routes-in-reverse-order* | Sets whether routes should be shutdown in reverse or the same order as they where started. | true | Boolean +| *camel.springboot.shutdown-suppress-logging-on-timeout* | Whether Camel should try to suppress logging during shutdown and timeout was triggered, meaning forced shutdown is happening. And during forced shutdown we want to avoid logging errors/warnings et all in the logs as a side-effect of the forced timeout. Notice the suppress is a best effort as there may still be some logs coming from 3rd party libraries and whatnot, which Camel cannot control. This option is default false. | false [...] +| *camel.springboot.shutdown-timeout* | Timeout in seconds to graceful shutdown Camel. | 300 | Integer +| *camel.springboot.startup-recorder* | To use startup recorder for capturing execution time during starting Camel. The recorder can be one of: false (or off), logging, java-flight-recorder (or jfr). | | String +| *camel.springboot.startup-recorder-dir* | Directory to store the recording. By default the user home directory will be used. Use false to turn off saving recording to disk. | | String +| *camel.springboot.startup-recorder-duration* | How long time to run the startup recorder. Use 0 (default) to keep the recorder running until the JVM is exited. Use -1 to stop the recorder right after Camel has been started (to only focus on potential Camel startup performance bottlenecks) Use a positive value to keep recording for N seconds. When the recorder is stopped then the recording is auto saved to disk (note: save to disk can be disabled by setting startupRecorderDir to false) [...] +| *camel.springboot.startup-recorder-max-depth* | To filter our sub steps at a maximum depth. Use -1 for no maximum. Use 0 for no sub steps. Use 1 for max 1 sub step, and so forth. The default is -1. | -1 | Integer +| *camel.springboot.startup-recorder-profile* | To use a specific Java Flight Recorder profile configuration, such as default or profile. The default is default. | default | String +| *camel.springboot.startup-recorder-recording* | To enable Java Flight Recorder to start a recording and automatic dump the recording to disk after startup is complete. This requires that camel-jfr is on the classpath, and to enable this option. | false | Boolean +| *camel.springboot.startup-summary-level* | Controls the level of information logged during startup (and shutdown) of CamelContext. | | StartupSummaryLevel +| *camel.springboot.stream-caching-any-spool-rules* | Sets whether if just any of the org.apache.camel.spi.StreamCachingStrategy.SpoolRule rules returns true then shouldSpoolCache(long) returns true, to allow spooling to disk. If this option is false, then all the org.apache.camel.spi.StreamCachingStrategy.SpoolRule must return true. The default value is false which means that all the rules must return true. | false | Boolean +| *camel.springboot.stream-caching-buffer-size* | Sets the stream caching buffer size to use when allocating in-memory buffers used for in-memory stream caches. The default size is 4096. | 0 | Integer +| *camel.springboot.stream-caching-enabled* | Sets whether stream caching is enabled or not. Default is false. | false | Boolean +| *camel.springboot.stream-caching-remove-spool-directory-when-stopping* | Whether to remove stream caching temporary directory when stopping. This option is default true. | true | Boolean +| *camel.springboot.stream-caching-spool-cipher* | Sets a stream caching cipher name to use when spooling to disk to write with encryption. By default the data is not encrypted. | | String +| *camel.springboot.stream-caching-spool-directory* | Sets the stream caching spool (temporary) directory to use for overflow and spooling to disk. If no spool directory has been explicit configured, then a temporary directory is created in the java.io.tmpdir directory. | | String +| *camel.springboot.stream-caching-spool-threshold* | Stream caching threshold in bytes when overflow to disk is activated. The default threshold is 128kb. Use -1 to disable overflow to disk. | 0 | Long +| *camel.springboot.stream-caching-spool-used-heap-memory-limit* | Sets what the upper bounds should be when streamCachingSpoolUsedHeapMemoryThreshold is in use. | | String +| *camel.springboot.stream-caching-spool-used-heap-memory-threshold* | Sets a percentage (1-99) of used heap memory threshold to activate stream caching spooling to disk. | 0 | Integer +| *camel.springboot.stream-caching-statistics-enabled* | Sets whether stream caching statistics is enabled. | false | Boolean +| *camel.springboot.thread-name-pattern* | Sets the thread name pattern used for creating the full thread name. The default pattern is: Camel (#camelId#) thread ##counter# - #name# Where #camelId# is the name of the CamelContext. and #counter# is a unique incrementing counter. and #name# is the regular thread name. You can also use #longName# which is the long thread name which can includes endpoint parameters etc. | | String +| *camel.springboot.tracing* | Sets whether tracing is enabled or not. Default is false. | false | Boolean +| *camel.springboot.tracing-pattern* | Tracing pattern to match which node EIPs to trace. For example to match all To EIP nodes, use to*. The pattern matches by node and route id's Multiple patterns can be separated by comma. | | String +| *camel.springboot.use-breadcrumb* | Set whether breadcrumb is enabled. The default value is false. | false | Boolean +| *camel.springboot.use-data-type* | Whether to enable using data type on Camel messages. Data type are automatic turned on if one or more routes has been explicit configured with input and output types. Otherwise data type is default off. | false | Boolean +| *camel.springboot.use-mdc-logging* | To turn on MDC logging | false | Boolean +| *camel.springboot.uuid-generator* | UUID generator to use. default (32 bytes), short (16 bytes), classic (32 bytes or longer), simple (long incrementing counter), off (turned off for exchanges - only intended for performance profiling) | default | String +| *camel.springboot.warn-on-early-shutdown* | Whether to log a WARN if Camel on Spring Boot was immediately shutdown after starting which very likely is because there is no JVM thread to keep the application running. | true | Boolean +| *camel.ssl.cert-alias* | An optional certificate alias to use. This is useful when the keystore has multiple certificates. | | String +| *camel.ssl.cipher-suites* | The optional explicitly configured cipher suites for this configuration. | | CipherSuitesParameters +| *camel.ssl.cipher-suites-filter* | The optional cipher suite filter configuration for this configuration. | | FilterParameters +| *camel.ssl.client-parameters* | The optional configuration options to be applied purely to the client side settings of the SSLContext. Settings specified here override any duplicate settings provided at the overall level by this class. These parameters apply to SSLSocketFactory and SSLEngine produced by the SSLContext produced from this class as well as to the SSLContext itself. | | SSLContextClientParameters +| *camel.ssl.config* | Global Camel security configuration. | | SSLContextParameters +| *camel.ssl.key-managers* | The optional key manager configuration for creating the KeyManager used in constructing an SSLContext. | | KeyManagersParameters +| *camel.ssl.provider* | The optional provider identifier for the JSSE implementation to use when constructing an SSLContext. | | String +| *camel.ssl.secure-random* | The optional secure random configuration options to use for constructing the SecureRandom used in the creation of an SSLContext. | | SecureRandomParameters +| *camel.ssl.secure-socket-protocol* | The optional protocol for the secure sockets created by the SSLContext represented by this instance's configuration. See Appendix A in the Java Secure Socket Extension Reference Guide for information about standard protocol names. | | String +| *camel.ssl.secure-socket-protocols* | The optional explicitly configured secure socket protocol names for this configuration. | | SecureSocketProtocolsParameters +| *camel.ssl.secure-socket-protocols-filter* | The option secure socket protocol name filter configuration for this configuration. | | FilterParameters +| *camel.ssl.server-parameters* | The optional configuration options to be applied purely to the server side settings of the SSLContext. Settings specified here override any duplicate settings provided at the overall level by this class. These parameters apply to SSLServerSocketFactory and SSLEngine produced by the SSLContext produced from this class as well as to the SSLContext itself. | | SSLContextServerParameters +| *camel.ssl.session-timeout* | The optional SSLSessionContext timeout time for javax.net.ssl.SSLSession in seconds. | | String +| *camel.ssl.trust-managers* | The optional trust manager configuration for creating the TrustManager used in constructing an SSLContext. | | TrustManagersParameters +| *camel.threadpool.allow-core-thread-time-out* | Sets default whether to allow core threads to timeout | | Boolean +| *camel.threadpool.config* | Adds a configuration for a specific thread pool profile (inherits default values) | | Map +| *camel.threadpool.config.allow-core-thread-time-out* | Sets whether to allow core threads to timeout | | Boolean +| *camel.threadpool.config.id* | Sets the id of this thread pool | | String +| *camel.threadpool.config.keep-alive-time* | Sets the keep alive time for inactive threads | | Long +| *camel.threadpool.config.max-pool-size* | Sets the maximum pool size | | Integer +| *camel.threadpool.config.max-queue-size* | Sets the maximum number of tasks in the work queue. Use -1 or an unbounded queue | | Integer +| *camel.threadpool.config.pool-size* | Sets the core pool size (threads to keep minimum in pool) | | Integer +| *camel.threadpool.config.rejected-policy* | Sets the handler for tasks which cannot be executed by the thread pool. | | ThreadPoolRejectedPolicy +| *camel.threadpool.config.time-unit* | Sets the time unit used for keep alive time | | TimeUnit +| *camel.threadpool.keep-alive-time* | Sets the default keep alive time for inactive threads | | Long +| *camel.threadpool.max-pool-size* | Sets the default maximum pool size | | Integer +| *camel.threadpool.max-queue-size* | Sets the default maximum number of tasks in the work queue. Use -1 or an unbounded queue | | Integer +| *camel.threadpool.pool-size* | Sets the default core pool size (threads to keep minimum in pool) | | Integer +| *camel.threadpool.rejected-policy* | Sets the default handler for tasks which cannot be executed by the thread pool. | | ThreadPoolRejectedPolicy +| *camel.threadpool.time-unit* | Sets the default time unit used for keep alive time | | TimeUnit +| *management.endpoint.camelroutecontroller.cache.time-to-live* | Maximum time that a response can be cached. | 0ms | Duration +| *management.endpoint.camelroutecontroller.enabled* | To turn on or off information about Camel Route Controller via actuator endpoint. | true | Boolean +| *management.endpoint.camelroutes.cache.time-to-live* | Maximum time that a response can be cached. | 0ms | Duration +| *management.endpoint.camelroutes.enabled* | To turn on or off information about Camel Routes via actuator endpoint. | true | Boolean +| *management.endpoint.camelroutes.enabled* | Whether to enable the camelroutes endpoint. | true | Boolean +| *management.endpoint.camelroutes.enabled* | | false | Boolean +| *management.endpoint.camelroutes.read-only* | Whether Camel Routes actuator is in read-only mode. If not in read-only mode then operations to start/stop routes would be enabled. | true | Boolean +| *management.info.camel.enabled* | Whether to enable Camel info. | true | Boolean +| *camel.springboot.route-controller-logging-level* | *Deprecated* Sets the logging level used for logging route activity (such as starting and stopping routes). The default logging level is DEBUG. | | LoggingLevel +|=== +// spring-boot-auto-configure options: END + +[[SpringBoot-Auto-configuredCamelcontext]] +== Auto-configured Camel context + +The most important piece of functionality provided by the Camel +auto-configuration is `CamelContext` instance. +Camel auto-configuration creates a `SpringCamelContext` for you and +takes care of the proper initialization and shutdown of that context. +The created Camel context is also registered in the Spring application +context (under `camelContext` bean name), so you can access it just as + any other Spring bean. + +[source,java] +---- +@Configuration +public class MyAppConfig { + + @Autowired + CamelContext camelContext; + + @Bean + MyService myService() { + return new DefaultMyService(camelContext); + } + +} +---- + +[[SpringBoot-Auto-detectingCamelroutes]] +== Auto-detecting Camel routes + +Camel auto-configuration collects all the `RouteBuilder` instances from +the Spring context and automatically injects them into the provided +`CamelContext`. That means that creating new Camel route with the Spring +Boot starter is as simple as adding the `@Component` annotated class to +your classpath: + +[source,java] +---- +@Component +public class MyRouter extends RouteBuilder { + + @Override + public void configure() throws Exception { + from("jms:invoices").to("file:/invoices"); + } + +} +---- + +Or creating a new route `RouteBuilder` bean in your `@Configuration` class: + +[source,java] +---- +@Configuration +public class MyRouterConfiguration { + + @Bean + RoutesBuilder myRouter() { + return new RouteBuilder() { + + @Override + public void configure() throws Exception { + from("jms:invoices").to("file:/invoices"); + } + + }; + } + +} +---- + +[[SpringBoot-Camelproperties]] +== Camel properties + +Spring Boot auto-configuration automatically connects +to http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config[Spring +Boot external configuration] (like properties placeholders, OS +environment variables or system properties) with +the Camel properties support. It basically means +that any property defined in `application.properties` file: + +[source,text] +---- +route.from = jms:invoices +---- + +Or set via system property: + +[source,text] +---- +java -Droute.to=jms:processed.invoices -jar mySpringApp.jar +---- + +...can be used as placeholders in Camel route: + +[source,java] +---- +@Component +public class MyRouter extends RouteBuilder { + + @Override + public void configure() throws Exception { + from("{{route.from}}").to("{{route.to}}"); + } + +} +---- + +[[SpringBoot-CustomCamelcontextconfiguration]] +== Custom Camel context configuration + +If you would like to perform some operations on `CamelContext` bean +created by Camel auto-configuration, +register `CamelContextConfiguration` instance in your Spring context: + +[source,java] +---- +@Configuration +public class MyAppConfig { + + @Bean + CamelContextConfiguration contextConfiguration() { + return new CamelContextConfiguration() { + @Override + void beforeApplicationStart(CamelContext context) { + // your custom configuration goes here + } + }; + } + +} +---- + +Method beforeApplicationStart` will +be called just before the Spring context is started, so the +`CamelContext` instance passed to this callback is +fully auto-configured. You can add many instances of +`CamelContextConfiguration` into your Spring context - all of them will +be executed. + +[[SpringBoot-DisablingJMX]] +== Disabling JMX + +To disable JMX of the auto-configured `CamelContext` use +`camel.springboot.jmxEnabled` property (JMX is enabled by default). For +example you could add the following property to your +`application.properties` file: + +[source,text] +---- +camel.springboot.jmx-enabled = false +---- + +[[SpringBoot-Auto-configuredconsumerandproducertemplates]] +== Auto-configured consumer and producer templates + +Camel auto-configuration provides pre-configured `ConsumerTemplate` and +`ProducerTemplate` instances. You can simply inject them into your +Spring-managed beans: + +[source,java] +---- +@Component +public class InvoiceProcessor { + + @Autowired + private ProducerTemplate producerTemplate; + + @Autowired + private ConsumerTemplate consumerTemplate; + + public void processNextInvoice() { + Invoice invoice = consumerTemplate.receiveBody("jms:invoices", Invoice.class); + ... + producerTemplate.sendBody("netty-http:http://invoicing.com/received/" + invoice.id()); + } + +} +---- + +By default consumer templates and producer templates come with the +endpoint cache sizes set to 1000. You can change those values via the +following Spring properties: + +[source,text] +---- +camel.springboot.consumer-template-cache-size = 100 +camel.springboot.producer-template-cache-size = 200 +---- + +[[SpringBoot-Auto-configuredTypeConverter]] +== Auto-configured TypeConverter + +Camel auto-configuration registers a `TypeConverter` instance named +`typeConverter` in the Spring context. + +[source,java] +---- +@Component +public class InvoiceProcessor { + + @Autowired + private TypeConverter typeConverter; + + public long parseInvoiceValue(Invoice invoice) { + String invoiceValue = invoice.grossValue(); + return typeConverter.convertTo(Long.class, invoiceValue); + } + +} +---- + +[[SpringBoot-SpringtypeconversionAPIbridge]] +=== Spring type conversion API bridge + +Spring comes with +the powerful http://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html#core-convert[type +conversion API]. Spring API happens to be very similar to the Camel +type converter API. As those APIs are so +similar, Camel Spring Boot automatically registers a bridge converter +(`SpringTypeConverter`) that delegates to the Spring conversion API.That +means that out-of-the-box Camel will treat Spring Converters like Camel +ones. With this approach you can enjoy both Camel and Spring converters +accessed via Camel `TypeConverter` API: + +[source,java] +---- +@Component +public class InvoiceProcessor { + + @Autowired + private TypeConverter typeConverter; + + public UUID parseInvoiceId(Invoice invoice) { + // Using Spring's StringToUUIDConverter + UUID id = invoice.typeConverter.convertTo(UUID.class, invoice.getId()); + } + +} +---- + +Under the hood Camel Spring Boot delegates conversion to the Spring's +`ConversionService` instances available in the application context. If +no `ConversionService` instance is available, Camel Spring Boot +auto-configuration will create one for you. + +[[SpringBoot-Disablingtypeconversionsfeatures]] +== Disabling type conversions features + +If you don't want Camel Spring Boot to register type-conversions related +features (like `TypeConverter` instance or Spring bridge) set the +`camel.springboot.type-conversion` property to `false`. + +[source,text] +---- +camel.springboot.type-conversion = false +---- + + +[[SpringBoot-Keepingapplicationalive]] +== Keeping the application alive + +Camel applications having this feature enabled launch a new thread on startup for the sole purpose of +keeping the application alive by preventing JVM termination. +It means that after you start a Camel application with Spring Boot, your +application waits for a Ctrl+C signal and does not exit immediately. + +The controller thread can be activated using the `camel.springboot.main-run-controller` to `true`. + +[source,text] +---- +camel.springboot.main-run-controller = true +---- + +Applications using web modules (e.g. importing the `org.springframework.boot:spring-boot-web-starter` module), +usually don't need to use this feature because the application is kept alive by the presence of other non-daemon threads. + +[[SpringBoot-AddingXMLroutes]] +== Adding XML routes + +By default you can put Camel XML routes in the classpath under the +directory camel, which camel-spring-boot will auto detect and include. +You can configure the directory name or turn +this off using the configuration option + +[source,text] +---- +// turn off +camel.springboot.xml-routes = false +// scan in the com/foo/routes classpath +camel.springboot.xml-routes = classpath:com/foo/routes/*.xml +---- + +The XML files should be Camel XML routes (not CamelContext) such as + +[source,xml] +---- +<routes xmlns="http://camel.apache.org/schema/spring"> + <route id="test"> + <from uri="timer://trigger"/> + <transform> + <simple>ref:myBean</simple> + </transform> + <to uri="log:out"/> + </route> +</routes> +---- + +[[SpringBoot-AddingREST]] +== Adding XML Rest-DSL + +By default you can put Camel Rest-DSL XML routes in the classpath under the +directory camel-rest, which camel-spring-boot will auto detect and include. +You can configure the directory name or turn this off using the configuration option + +[source,text] +---- +// turn off +camel.springboot.xml-rests = false +// scan in the com/foo/routes classpath +camel.springboot.xml-rests = classpath:com/foo/rests/*.xml +---- + +The Rest-DSL XML files should be Camel XML rests (not CamelContext) such as + +[source,xml] +---- +<rests xmlns="http://camel.apache.org/schema/spring"> + <rest> + <post uri="/persons"> + <to uri="direct:postPersons"/> + </post> + <get uri="/persons"> + <to uri="direct:getPersons"/> + </get> + <get uri="/persons/{personId}"> + <to uri="direct:getPersionId"/> + </get> + <put uri="/persons/{personId}"> + <to uri="direct:putPersionId"/> + </put> + <delete uri="/persons/{personId}"> + <to uri="direct:deletePersionId"/> + </delete> + </rest> +</rests> +---- + +[[SpringBoot-Testing]] +== Testing the JUnit 4 way +For testing, Maven users will need to add the following dependencies to their `pom.xml`: + +[source,xml] +---- +<dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-test</artifactId> + <version>${spring-boot.version}</version> <!-- Use the same version as your Spring Boot version --> + <scope>test</scope> +</dependency> +<dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-test-spring</artifactId> + <version>${camel.version}</version> <!-- use the same version as your Camel core version --> + <scope>test</scope> +</dependency> +---- + +To test a Camel Spring Boot application, annotate your test class(es) with +`@RunWith(CamelSpringBootRunner.class)`. This brings Camel's Spring Test +support to your application, so that you can write tests using +https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html[Spring Boot test conventions]. + +To get the `CamelContext` or `ProducerTemplate`, you can inject them into the class in the normal Spring manner, using `@Autowired`. + +You can also use xref:components:others:test-spring-junit5.adoc[camel-test-spring-junit5] to configure tests declaratively. This example uses the `@MockEndpoints` annotation to auto-mock an endpoint: + +[source,java] +---- +@RunWith(CamelSpringBootRunner.class) +@SpringBootTest +@MockEndpoints("direct:end") +public class MyApplicationTest { + + @Autowired + private ProducerTemplate template; + + @EndpointInject("mock:direct:end") + MockEndpoint mock; + + @Test + public void testReceive() throws Exception { + mock.expectedBodiesReceived("Hello"); + template.sendBody("direct:start", "Hello"); + mock.assertIsSatisfied(); + } + +} +---- +== Testing the JUnit 5 way +For testing, Maven users will need to add the following dependencies to their `pom.xml`: + +[source,xml] +---- +<dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-test</artifactId> + <version>${spring-boot.version}</version> <!-- Use the same version as your Spring Boot version --> + <scope>test</scope> +</dependency> +<dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-test-spring-junit5</artifactId> + <version>${camel.version}</version> <!-- use the same version as your Camel core version --> + <scope>test</scope> +</dependency> +---- + +To test a Camel Spring Boot application, annotate your test class(es) with +`@CamelSpringBootTest`. This brings Camel's Spring Test +support to your application, so that you can write tests using +https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html[Spring Boot test conventions]. + +To get the `CamelContext` or `ProducerTemplate`, you can inject them into the class in the normal Spring manner, using `@Autowired`. + +You can also use xref:components:others:test-spring-junit5.adoc[camel-test-spring-junit5] to configure tests declaratively. This example uses the `@MockEndpoints` annotation to auto-mock an endpoint: + +[source,java] +---- +@CamelSpringBootTest +@SpringBootApplication +@MockEndpoints("direct:end") +public class MyApplicationTest { + + @Autowired + private ProducerTemplate template; + + @EndpointInject("mock:direct:end") + private MockEndpoint mock; + + @Test + public void testReceive() throws Exception { + mock.expectedBodiesReceived("Hello"); + template.sendBody("direct:start", "Hello"); + mock.assertIsSatisfied(); + } + +} +----
