= Extensions

Apache Camel Quarkus supports the following Camel artifacts as Quarkus Extensions

== Camel Components

// components: START
Number of Camel components: 48 in 41 JAR artifacts (0 deprecated)

[width="100%",cols="4,1,5",options="header"]
|===
| Component | Since | Description

| link:https://camel.apache.org/components/latest/aws-ecs-component.html[AWS ECS] (camel-quarkus-aws-ecs) +
`aws-ecs:label` | 0.5 | The aws-ecs is used for managing Amazon ECS

| link:https://camel.apache.org/components/latest/aws-eks-component.html[AWS EKS] (camel-quarkus-aws-eks) +
`aws-eks:label` | 0.2 | The aws-eks is used for managing Amazon EKS

| link:https://camel.apache.org/components/latest/aws-kms-component.html[AWS KMS] (camel-quarkus-aws-kms) +
`aws-kms:label` | 0.5 | The aws-kms is used for managing Amazon KMS

| link:https://camel.apache.org/components/latest/aws-s3-component.html[AWS S3 Storage Service] (camel-quarkus-aws-s3) +
`aws-s3://bucketNameOrArn` | 0.2 | The aws-s3 component is used for storing and retrieving object from Amazon S3 Storage Service.

| link:https://camel.apache.org/components/latest/aws-sns-component.html[AWS Simple Notification System] (camel-quarkus-aws-sns) +
`aws-sns:topicNameOrArn` | 0.2 | The aws-sns component is used for sending messages to an Amazon Simple Notification Topic.

| link:https://camel.apache.org/components/latest/aws-sqs-component.html[AWS Simple Queue Service] (camel-quarkus-aws-sqs) +
`aws-sqs:queueNameOrArn` | 0.2 | The aws-sqs component is used for sending and receiving messages to Amazon's SQS service.

| link:https://camel.apache.org/components/latest/bean-component.html[Bean] (camel-quarkus-bean) +
`bean:beanName` | 0.2 | The bean component is for invoking Java beans from Camel.

| link:https://camel.apache.org/components/latest/bean-validator-component.html[Bean Validator] (camel-quarkus-bean-validator) +
`bean-validator:label` | 0.5 | The Validator component performs bean validation of the message body using the Java Bean Validation API.

| link:https://camel.apache.org/components/latest/class-component.html[Class] (camel-quarkus-bean) +
`class:beanName` | 0.2 | The class component is for invoking Java classes (Java beans) from Camel.

| link:https://camel.apache.org/components/latest/controlbus-component.html[Control Bus] (camel-quarkus-controlbus) +
`controlbus:command:language` | 0.4 | The controlbus component provides easy management of Camel applications based on the Control Bus EIP pattern.

| link:https://camel.apache.org/components/latest/dataformat-component.html[Data Format] (camel-quarkus-dataformat) +
`dataformat:name:operation` | 0.4 | The dataformat component is used for working with Data Formats as if it was a regular Component supporting Endpoints and URIs.

| link:https://camel.apache.org/components/latest/direct-component.html[Direct] (camel-quarkus-direct) +
`direct:name` | 0.2 | The direct component provides direct, synchronous call to another endpoint from the same CamelContext.

| xref:extensions/dozer.adoc[Dozer] (camel-quarkus-dozer) +
`dozer:name` | 0.5 | The dozer component provides the ability to map between Java beans using the Dozer mapping library.

| link:https://camel.apache.org/components/latest/exec-component.html[Exec] (camel-quarkus-exec) +
`exec:executable` | 0.4 | The exec component can be used to execute OS system commands.

| xref:extensions/fhir.adoc[FHIR] (camel-quarkus-fhir) +
`fhir:apiName/methodName` | 0.3 | The fhir component is used for working with the FHIR protocol (health care).

| link:https://camel.apache.org/components/latest/file-component.html[File] (camel-quarkus-file) +
`file:directoryName` | 0.4 | The file component is used for reading or writing files.

| link:https://camel.apache.org/components/latest/ftp-component.html[FTP] (camel-quarkus-ftp) +
`ftp:host:port/directoryName` | 0.5 | The \ftp component is used for uploading or downloading files from FTP servers.

| link:https://camel.apache.org/components/latest/ftps-component.html[FTPS] (camel-quarkus-ftp) +
`ftps:host:port/directoryName` | 0.5 | The \ftps (FTP secure SSL/TLS) component is used for uploading or downloading files from FTP servers.

| link:https://camel.apache.org/components/latest/infinispan-component.html[Infinispan] (camel-quarkus-infinispan) +
`infinispan:cacheName` | 0.2 | For reading/writing from/to Infinispan distributed key/value store and data grid.

| link:https://camel.apache.org/components/latest/jdbc-component.html[JDBC] (camel-quarkus-jdbc) +
`jdbc:dataSourceName` | 0.2 | The jdbc component enables you to access databases through JDBC, where SQL queries are sent in the message body.

| link:https://camel.apache.org/components/latest/kafka-component.html[Kafka] (camel-quarkus-kafka) +
`kafka:topic` | 0.5 | The kafka component allows messages to be sent to (or consumed from) Apache Kafka brokers.

| link:https://camel.apache.org/components/latest/log-component.html[Log] (camel-quarkus-log) +
`log:loggerName` | 0.2 | The log component logs message exchanges to the underlying logging mechanism.

| link:https://camel.apache.org/components/latest/mail-component.html[Mail] (camel-quarkus-mail) +
`imap:host:port` | 0.2 | To send or receive emails using imap/pop3 or smtp protocols.

| xref:extensions/microprofile-metrics.adoc[MicroProfile Metrics] (camel-quarkus-microprofile-metrics) +
`microprofile-metrics:metricType:metricName` | 0.2 | Camel metrics exposed with Eclipse MicroProfile Metrics

| xref:extensions/mongodb.adoc[MongoDB] (camel-quarkus-mongodb) +
`mongodb:connectionBean` | 0.5 | Component for working with documents stored in MongoDB database.

| xref:extensions/netty.adoc[Netty] (camel-quarkus-netty) +
`netty:protocol:host:port` | 0.4 | Socket level networking using TCP or UDP with the Netty 4.x library.

| xref:extensions/netty-http.adoc[Netty HTTP] (camel-quarkus-netty-http) +
`netty-http:protocol:host:port/path` | 0.2 | Netty HTTP server and client using the Netty 4.x library.

| link:https://camel.apache.org/components/latest/paho-component.html[Paho] (camel-quarkus-paho) +
`paho:topic` | 0.2 | Component for communicating with MQTT message brokers using Eclipse Paho MQTT Client.

| link:https://camel.apache.org/components/latest/pdf-component.html[PDF] (camel-quarkus-pdf) +
`pdf:operation` | 0.3.1 | The pdf components provides the ability to create, modify or extract content from PDF documents.

| xref:extensions/platform-http.adoc[Platform HTTP] (camel-quarkus-platform-http) +
`platform-http:path` | 0.3 | HTTP service leveraging existing runtime platform HTTP server

| link:https://camel.apache.org/components/latest/rest-component.html[REST] (camel-quarkus-rest) +
`rest:method:path:uriTemplate` | 0.2 | The rest component is used for either hosting REST services (consumer) or calling external REST services (producer).

| link:https://camel.apache.org/components/latest/rest-api-component.html[REST API] (camel-quarkus-rest) +
`rest-api:path/contextIdPattern` | 0.2 | The rest-api component is used for providing Swagger API of the REST services which has been defined using the rest-dsl in Camel.

| link:https://camel.apache.org/components/latest/salesforce-component.html[Salesforce] (camel-quarkus-salesforce) +
`salesforce:operationName:topicName` | 0.2 | The salesforce component is used for integrating Camel with the massive Salesforce API.

| link:https://camel.apache.org/components/latest/scheduler-component.html[Scheduler] (camel-quarkus-scheduler) +
`scheduler:name` | 0.4 | The scheduler component is used for generating message exchanges when a scheduler fires.

| link:https://camel.apache.org/components/latest/seda-component.html[SEDA] (camel-quarkus-seda) +
`seda:name` | 0.5 | The seda component provides asynchronous call to another endpoint from any CamelContext in the same JVM.

| link:https://camel.apache.org/components/latest/servlet-component.html[Servlet] (camel-quarkus-servlet) +
`servlet:contextPath` | 0.2 | To use a HTTP Servlet as entry for Camel routes when running in a servlet container.

| link:https://camel.apache.org/components/latest/sftp-component.html[SFTP] (camel-quarkus-ftp) +
`sftp:host:port/directoryName` | 0.5 | The \sftp (FTP over SSH) component is used for uploading or downloading files from SFTP servers.

| link:https://camel.apache.org/components/latest/sjms-component.html[Simple JMS] (camel-quarkus-sjms) +
`sjms:destinationType:destinationName` | 0.5 | The sjms component (simple jms) allows messages to be sent to (or consumed from) a JMS Queue or Topic (uses JMS 1.x API).

| link:https://camel.apache.org/components/latest/sjms-batch-component.html[Simple JMS Batch] (camel-quarkus-sjms) +
`sjms-batch:destinationName` | 0.5 | The sjms-batch component is a specialized for highly performant, transactional batch consumption from a JMS queue.

| link:https://camel.apache.org/components/latest/sjms2-component.html[Simple JMS2] (camel-quarkus-sjms2) +
`sjms2:destinationType:destinationName` | 0.5 | The sjms2 component (simple jms) allows messages to be sent to (or consumed from) a JMS Queue or Topic (uses JMS 2.x API).

| link:https://camel.apache.org/components/latest/slack-component.html[Slack] (camel-quarkus-slack) +
`slack:channel` | 0.3 | The slack component allows you to send messages to Slack.

| link:https://camel.apache.org/components/latest/timer-component.html[Timer] (camel-quarkus-timer) +
`timer:timerName` | 0.2 | The timer component is used for generating message exchanges when a timer fires.

| link:https://camel.apache.org/components/latest/twitter-directmessage-component.html[Twitter Direct Message] (camel-quarkus-twitter) +
`twitter-directmessage:user` | 0.2 | The Twitter Direct Message Component consumes/produces user's direct messages.

| link:https://camel.apache.org/components/latest/twitter-search-component.html[Twitter Search] (camel-quarkus-twitter) +
`twitter-search:keywords` | 0.2 | The Twitter Search component consumes search results.

| link:https://camel.apache.org/components/latest/twitter-timeline-component.html[Twitter Timeline] (camel-quarkus-twitter) +
`twitter-timeline:timelineType` | 0.2 | The Twitter Timeline component consumes twitter timeline or update the status of specific user.

| link:https://camel.apache.org/components/latest/validator-component.html[Validator] (camel-quarkus-validator) +
`validator:resourceUri` | 0.4 | Validates the payload of a message using XML Schema and JAXP Validation.

| link:https://camel.apache.org/components/latest/vm-component.html[VM] (camel-quarkus-vm) +
`vm:name` | 0.3 | The vm component provides asynchronous call to another endpoint from the same CamelContext.

| xref:extensions/xslt.adoc[XSLT] (camel-quarkus-xslt) +
`xslt:resourceUri` | 0.4 | Transforms the message using a XSLT template.

|===
// components: END


== Camel Data Formats

// dataformats: START
Number of Camel data formats: 9 in 8 JAR artifacts (0 deprecated)

[width="100%",cols="4,1,5",options="header"]
|===
| Data Format | Since | Description

| link:https://camel.apache.org/components/latest/csv-dataformat.html[CSV] (camel-quarkus-csv) | 0.2 | The CSV data format is used for handling CSV payloads.

| xref:extensions/fhir.adoc[FHIR JSon] (camel-quarkus-fhir) | 0.3 | The FHIR JSon data format is used to marshall/unmarshall to/from FHIR objects to/from JSON.

| xref:extensions/fhir.adoc[FHIR XML] (camel-quarkus-fhir) | 0.3 | The FHIR XML data format is used to marshall/unmarshall from/to FHIR objects to/from XML.

| link:https://camel.apache.org/components/latest/json-jackson-dataformat.html[JSon Jackson] (camel-quarkus-jackson) | 0.3 | JSon data format is used for unmarshal a JSon payload to POJO or to marshal POJO back to JSon payload.

| link:https://camel.apache.org/components/latest/mime-multipart-dataformat.html[MIME Multipart] (camel-quarkus-mail) | 0.2 | The MIME Multipart data format is used for marshalling Camel messages with attachments into MIME-Multipart message, and vise-versa.

| link:https://camel.apache.org/components/latest/tarfile-dataformat.html[Tar File] (camel-quarkus-tarfile) | 0.3 | The Tar File data format is a message compression and de-compression format of tar files.

| link:https://camel.apache.org/components/latest/tidyMarkup-dataformat.html[TidyMarkup] (camel-quarkus-tagsoup) | 0.5 | TidyMarkup data format is used for parsing HTML and return it as pretty well-formed HTML.

| link:https://camel.apache.org/components/latest/yaml-snakeyaml-dataformat.html[YAML SnakeYAML] (camel-quarkus-snakeyaml) | 0.4 | YAML is a data format to marshal and unmarshal Java objects to and from YAML.

| link:https://camel.apache.org/components/latest/zipfile-dataformat.html[Zip File] (camel-quarkus-zipfile) | 0.2 | The Zip File data format is a message compression and de-compression format of zip files.
|===
// dataformats: END


== Camel Languages

// languages: START
Number of Camel languages: 8 in 2 JAR artifacts (0 deprecated)

[width="100%",cols="4,1,5",options="header"]
|===
| Language | Since | Description

| link:https://camel.apache.org/components/latest/bean-language.html[Bean method] (camel-quarkus-bean) | 0.2 | To use a Java bean (aka method call) in Camel expressions or predicates.

| link:https://camel.apache.org/components/latest/constant-language.html[Constant] (camel-quarkus-core) | 0.2 | To use a constant value in Camel expressions or predicates.

| link:https://camel.apache.org/components/latest/exchangeProperty-language.html[ExchangeProperty] (camel-quarkus-core) | 0.2 | To use a Camel Exchange property in expressions or predicates.

| link:https://camel.apache.org/components/latest/file-language.html[File] (camel-quarkus-core) | 0.2 | For expressions and predicates using the file/simple language.

| link:https://camel.apache.org/components/latest/header-language.html[Header] (camel-quarkus-core) | 0.2 | To use a Camel Message header in expressions or predicates.

| link:https://camel.apache.org/components/latest/ref-language.html[Ref] (camel-quarkus-core) | 0.2 | Reference to an existing Camel expression or predicate, which is looked up from the Camel registry.

| link:https://camel.apache.org/components/latest/simple-language.html[Simple] (camel-quarkus-core) | 0.2 | To use Camels built-in Simple language in Camel expressions or predicates.

| link:https://camel.apache.org/components/latest/tokenize-language.html[Tokenize] (camel-quarkus-core) | 0.2 | To use Camel message body or header with a tokenizer in Camel expressions or predicates.
|===
// languages: END


== Miscellaneous Extensions

// others: START
Number of miscellaneous extensions: 7 in 7 JAR artifacts (0 deprecated)

[width="100%",cols="4,1,5",options="header"]
|===
| Extension | Since | Description

| (camel-quarkus-attachments) | 0.3 | Java Attachments support for Camel Message

| (camel-quarkus-core-cloud) | 0.2 | The Camel Quarkus core cloud module

| (camel-quarkus-core-xml) | 0.3 | Includes implementations of Java Architecture for XML Binding (JAXB) and Java API for XML Processing (JAXP)

| (camel-quarkus-hystrix) | 0.5 | Circuit Breaker EIP using Netflix Hystrix

| xref:extensions/microprofile-health.adoc[camel-quarkus-microprofile-health]  | 0.3 | Bridging Eclipse MicroProfile Health with Camel health checks

| xref:extensions/opentracing.adoc[camel-quarkus-opentracing]  | 0.3 | Distributed tracing using OpenTracing

| (camel-quarkus-reactive-executor) | 0.3 | Reactive Executor for camel-core using Vert.x
|===
// others: END

