| <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Netty HTTP :: Apache Camel</title> <link rel="canonical" href="https://camel.apache.org/components/4.10.x/netty-http-component.html"> <meta name="description" content="Netty HTTP server and client using the Netty 4.x."> <meta name="generator" content="Antora 3.1.7"> <link rel="stylesheet" href="../../_/css/site-2955eb42a8.css"> <meta name="application-name" content="Apache Camel"> <meta property="og:title" content="Netty HTTP"> <meta property="og:site_name" content="Apache Camel"> <meta property="og:url" content="https://camel.apache.org"> <meta property="og:description" content="Camel is an open source integration framework that empowers you to quickly and easily integrate various systems consuming or producing data."> <meta property="og:type" content="website"> <meta property="og:image" content="https://camel.apache.org/_/img/logo-d-a567cee6fa.svg"> <link rel="manifest" href="../../site.webmanifest"> <link rel="apple-touch-icon-precomposed" sizes="57x57" href="../../apple-touch-icon-57x57.png"> <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../../apple-touch-icon-114x114.png"> <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../../apple-touch-icon-72x72.png"> <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../../apple-touch-icon-144x144.png"> <link rel="apple-touch-icon-precomposed" sizes="60x60" href="../../apple-touch-icon-60x60.png"> <link rel="apple-touch-icon-precomposed" sizes="120x120" href="../../apple-touch-icon-120x120.png"> <link rel="apple-touch-icon-precomposed" sizes="76x76" href="../../apple-touch-icon-76x76.png"> <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../apple-touch-icon-152x152.png"> <link rel="icon" type="image/png" href="../../favicon-196x196.png" sizes="196x196"> <link rel="icon" type="image/png" href="../../favicon-96x96.png" sizes="96x96"> <link rel="icon" type="image/png" href="../../favicon-32x32.png" sizes="32x32"> <link rel="icon" type="image/png" href="../../favicon-16x16.png" sizes="16x16"> <link rel="icon" type="image/png" href="../../favicon-128.png" sizes="128x128"> </head> <body class="article"> <header class="header"> <nav class="navbar" aria-label="Main menu"> <div class="navbar-brand"> <a class="nav-logo" href="../.."></a> <div id="topbar-nav" class="navbar-menu"> <div class="navbar-end"> <a class="navbar-item-section navbar-item navbar-topics" href="../../blog/"> <img alt="Blog" src="/_/img/blog-4c7fa4cb60.svg"> Blog </a> <a class="navbar-item-section navbar-item navbar-topics" href="../../docs/"> <img alt="Documentation" src="/_/img/documentation-abb1b7f8b1.svg"> Documentation </a> <a class="navbar-item-section navbar-item navbar-topics" href="../../community/"> <img alt="Community" src="/_/img/community-2ec8a3dc8b.svg"> Community </a> <a class="navbar-item-section navbar-item navbar-topics" href="../../download/"> <img alt="Download" src="/_/img/download-63cdd75074.svg"> Download </a> <a class="navbar-item-section navbar-item navbar-topics" href="../../security/"> <img alt="Security" src="/_/img/security-06abe157b3.svg"> Security </a> </div> </div> <div class="navbar-fill"></div> <div class="break-row"></div> <div class="navbar-search results-hidden"> <input id="search" class="search" placeholder="Search" autocomplete="off"> <img src="../../_/img/cancel-1ed239489b.svg" alt="Clear" id="search-cancel"> <div id="search_results"></div> </div> <div class="navbar-tools"> <a rel="noopener noreferrer nofollow" href="https://github.com/apache/camel/" title="Collaborate on GitHub"><svg focusable="false" class="brand-icon"><use xlink:href="../../_/img/brand-logos-f2e689f4d4.svg#github"/></svg></a> <a rel="noopener noreferrer nofollow" href="https://camel.zulipchat.com" title="Chat on Zulip"><svg focusable="false" class="brand-icon"><use xlink:href="../../_/img/brand-logos-f2e689f4d4.svg#zulip"/></svg></a> <a rel="noopener noreferrer nofollow" href="https://twitter.com/ApacheCamel" title="Follow Apache Camel on Twitter"><svg focusable="false" class="brand-icon"><use xlink:href="../../_/img/brand-logos-f2e689f4d4.svg#twitter"/></svg></a> <a rel="noopener noreferrer nofollow" href="https://www.linkedin.com/groups/2447439/" title="Apache Camel group on Linkedin"><svg focusable="false" class="brand-icon"><use xlink:href="../../_/img/brand-logos-f2e689f4d4.svg#linkedin"/></svg></a> </div> <button class="navbar-burger" data-target="topbar-nav" type="button" aria-label="Menu"> <span></span> <span></span> <span></span> </button> </div> </nav> </header> <a id="top"></a> <div class="body"> <div class="nav-container" data-component="components" data-version="next"> <aside class="nav" aria-label="Side menu"> <div class="panels"> <div class="nav-panel-menu is-active"> <input class="search" placeholder="Quick lookup"> <nav class="nav-menu" data-panel="menu" aria-label="Topics"> <h3 class="title"><a href="index.html">Camel Components</a></h3> <ul class="nav-list"> <li class="nav-item" data-depth="0"> <ul class="nav-list"> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="index.html">Components</a> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <a class="nav-link" href="activemq-component.html">ActiveMQ 5.x</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="activemq6-component.html">ActiveMQ 6.x</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="ai-summary.html">AI</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="chatscript-component.html">ChatScript</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="djl-component.html">Deep Java Library</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kserve-component.html">KServe</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="langchain4j-chat-component.html">LangChain4j Chat</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="langchain4j-embeddings-component.html">LangChain4j Embeddings</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="langchain4j-tools-component.html">LangChain4j Tools</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="langchain4j-web-search-component.html">LangChain4j Web Search</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="milvus-component.html">Milvus</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="neo4j-component.html">Neo4j</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="pinecone-component.html">Pinecone</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="qdrant-component.html">Qdrant</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="tensorflow-serving-component.html">TensorFlow Serving</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="torchserve-component.html">TorchServe</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="weaviate-component.html">weaviate</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="amqp-component.html">AMQP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="arangodb-component.html">ArangoDb</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="as2-component.html">AS2</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="asterisk-component.html">Asterisk</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="atmosphere-websocket-component.html">Atmosphere Websocket</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="atom-component.html">Atom</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="avro-component.html">Avro RPC</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="aws-summary.html">AWS</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-athena-component.html">AWS Athena</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws-bedrock-component.html">AWS Bedrock</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws-bedrock-agent-component.html">AWS Bedrock Agent</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws-bedrock-agent-runtime-component.html">AWS Bedrock Agent Runtime</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws-cloudtrail-component.html">AWS Cloudtrail</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-cw-component.html">AWS CloudWatch</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws-config-component.html">AWS Config Service</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-ddb-component.html">AWS DynamoDB</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-ddbstream-component.html">AWS DynamoDB Streams</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-ec2-component.html">AWS Elastic Compute Cloud (EC2)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-ecs-component.html">AWS Elastic Container Service (ECS)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-eks-component.html">AWS Elastic Kubernetes Service (EKS)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-eventbridge-component.html">AWS Eventbridge</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-iam-component.html">AWS Identity and Access Management (IAM)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-kms-component.html">AWS Key Management Service (KMS)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-kinesis-component.html">AWS Kinesis</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-kinesis-firehose-component.html">AWS Kinesis Firehose</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-lambda-component.html">AWS Lambda</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-msk-component.html">AWS Managed Streaming for Apache Kafka (MSK)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-mq-component.html">AWS MQ</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-redshift-data-component.html">AWS RedshiftData</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-s3-component.html">AWS S3 Storage Service</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws-secrets-manager-component.html">AWS Secrets Manager</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-sts-component.html">AWS Security Token Service (STS)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-ses-component.html">AWS Simple Email Service (SES)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-sns-component.html">AWS Simple Notification System (SNS)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-sqs-component.html">AWS Simple Queue Service (SQS)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-step-functions-component.html">AWS StepFunctions</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-timestream-component.html">AWS Timestream</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="aws2-translate-component.html">AWS Translate</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="pqc-component.html">PQC Algorithms</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="azure-summary.html">Azure</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="azure-cosmosdb-component.html">Azure CosmosDB</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="azure-eventhubs-component.html">Azure Event Hubs</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="azure-files-component.html">Azure Files</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="azure-key-vault-component.html">Azure Key Vault</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="azure-servicebus-component.html">Azure ServiceBus</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="azure-storage-blob-component.html">Azure Storage Blob Service</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="azure-storage-datalake-component.html">Azure Storage Data Lake Service</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="azure-storage-queue-component.html">Azure Storage Queue Service</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="bean-component.html">Bean</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="bean-validator-component.html">Bean Validator</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="bonita-component.html">Bonita</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="box-component.html">Box</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="braintree-component.html">Braintree</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="browse-component.html">Browse</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="caffeine-cache-component.html">Caffeine Cache</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="caffeine-loadcache-component.html">Caffeine LoadCache</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="cql-component.html">Cassandra CQL</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="chunk-component.html">Chunk</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="class-component.html">Class</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="clickup-component.html">ClickUp</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="cm-sms-component.html">CM SMS Gateway</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="coap-component.html">CoAP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="cometd-component.html">CometD</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="consul-component.html">Consul</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="controlbus-component.html">Control Bus</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="couchbase-component.html">Couchbase</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="couchdb-component.html">CouchDB</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="cron-component.html">Cron</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="crypto-component.html">Crypto (JCE)</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="cxf-component.html">CXF</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="cxfrs-component.html">CXF-RS</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dapr-component.html">Dapr</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformat-component.html">Data Format</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataset-component.html">Dataset</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataset-test-component.html">DataSet Test</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="debezium-summary.html">Debezium</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="debezium-db2-component.html">Debezium DB2 Connector</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="debezium-mongodb-component.html">Debezium MongoDB Connector</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="debezium-mysql-component.html">Debezium MySQL Connector</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="debezium-oracle-component.html">Debezium Oracle Connector</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="debezium-postgres-component.html">Debezium PostgresSQL Connector</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="debezium-sqlserver-component.html">Debezium SQL Server Connector</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dfdl-component.html">DFDL</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dhis2-component.html">DHIS2</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="digitalocean-component.html">DigitalOcean</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="direct-component.html">Direct</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="disruptor-component.html">Disruptor</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="disruptor-vm-component.html">Disruptor VM</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dns-component.html">DNS</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="docker-component.html">Docker</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="drill-component.html">Drill</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dropbox-component.html">Dropbox</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dynamic-router-component.html">Dynamic Router</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dynamic-router-control-component.html">Dynamic Router Control</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="ehcache-component.html">Ehcache</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="elasticsearch-component.html">Elasticsearch</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="elasticsearch-rest-client-component.html">Elasticsearch Low level Rest Client</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="exec-component.html">Exec</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="fhir-component.html">FHIR</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="file-component.html">File</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="file-watch-component.html">File Watch</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="flatpack-component.html">Flatpack</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="flink-component.html">Flink</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="flowable-component.html">Flowable</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="fop-component.html">FOP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="freemarker-component.html">Freemarker</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="ftp-component.html">FTP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="ftps-component.html">FTPS</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="geocoder-component.html">Geocoder</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="git-component.html">Git</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="github-component.html">GitHub</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="google-summary.html">Google</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-bigquery-component.html">Google BigQuery</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-bigquery-sql-component.html">Google BigQuery Standard SQL</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-calendar-component.html">Google Calendar</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-calendar-stream-component.html">Google Calendar Stream</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-functions-component.html">Google Cloud Functions</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-drive-component.html">Google Drive</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-mail-component.html">Google Mail</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-mail-stream-component.html">Google Mail Stream</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-pubsub-component.html">Google Pubsub</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-pubsub-lite-component.html">Google PubSub Lite</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-secret-manager-component.html">Google Secret Manager</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-sheets-component.html">Google Sheets</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-sheets-stream-component.html">Google Sheets Stream</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="google-storage-component.html">Google Storage</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="grape-component.html">Grape</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="graphql-component.html">GraphQL</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="grpc-component.html">gRPC</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="guava-eventbus-component.html">Guava EventBus</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="hashicorp-vault-component.html">Hashicorp Vault</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="hazelcast-summary.html">Hazelcast</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hazelcast-atomicvalue-component.html">Hazelcast Atomic Number</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hazelcast-instance-component.html">Hazelcast Instance</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hazelcast-list-component.html">Hazelcast List</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hazelcast-map-component.html">Hazelcast Map</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hazelcast-multimap-component.html">Hazelcast Multimap</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hazelcast-queue-component.html">Hazelcast Queue</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hazelcast-replicatedmap-component.html">Hazelcast Replicated Map</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hazelcast-ringbuffer-component.html">Hazelcast Ringbuffer</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hazelcast-seda-component.html">Hazelcast SEDA</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hazelcast-set-component.html">Hazelcast Set</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hazelcast-topic-component.html">Hazelcast Topic</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="http-component.html">HTTP</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="hwcloud-summary.html">Huawei Cloud</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hwcloud-frs-component.html">Huawei Cloud Face Recognition Service (FRS)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hwcloud-imagerecognition-component.html">Huawei Cloud Image Recognition</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hwcloud-dms-component.html">Huawei Distributed Message Service (DMS)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hwcloud-functiongraph-component.html">Huawei FunctionGraph</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hwcloud-iam-component.html">Huawei Identity and Access Management (IAM)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hwcloud-obs-component.html">Huawei Object Storage Service (OBS)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hwcloud-smn-component.html">Huawei Simple Message Notification (SMN)</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="ibm-secrets-manager-component.html">IBM Secrets Manager</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="iec60870-client-component.html">IEC 60870 Client</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="iec60870-server-component.html">IEC 60870 Server</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="ignite-summary.html">Ignite</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="ignite-cache-component.html">Ignite Cache</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="ignite-compute-component.html">Ignite Compute</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="ignite-events-component.html">Ignite Events</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="ignite-idgen-component.html">Ignite ID Generator</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="ignite-messaging-component.html">Ignite Messaging</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="ignite-queue-component.html">Ignite Queues</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="ignite-set-component.html">Ignite Sets</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="infinispan-component.html">Infinispan</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="infinispan-embedded-component.html">Infinispan Embedded</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="influxdb-component.html">InfluxDB</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="influxdb2-component.html">InfluxDB2</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="irc-component.html">IRC</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="ironmq-component.html">IronMQ</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jcache-component.html">JCache</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jcr-component.html">JCR</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jdbc-component.html">JDBC</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jetty-component.html">Jetty</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jgroups-component.html">JGroups</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jgroups-raft-component.html">JGroups raft</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jira-component.html">Jira</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jms-component.html">JMS</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jmx-component.html">JMX</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jolt-component.html">JOLT</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jooq-component.html">JOOQ</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jpa-component.html">JPA</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jslt-component.html">JSLT</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="json-validator-component.html">JSON Schema Validator</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jsonata-component.html">JSONata</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="json-patch-component.html">JsonPatch</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jt400-component.html">JT400</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jte-component.html">JTE</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="kafka-component.html">Kafka</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="kamelet-component.html">Kamelet</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="knative-component.html">Knative</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="knative-http-component.html">Knative Http</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="kubernetes-summary.html">Kubernetes</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-config-maps-component.html">Kubernetes ConfigMap</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-cronjob-component.html">Kubernetes Cronjob</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-custom-resources-component.html">Kubernetes Custom Resources</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-deployments-component.html">Kubernetes Deployments</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-events-component.html">Kubernetes Event</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-hpa-component.html">Kubernetes HPA</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-job-component.html">Kubernetes Job</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-namespaces-component.html">Kubernetes Namespaces</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-nodes-component.html">Kubernetes Nodes</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-persistent-volumes-component.html">Kubernetes Persistent Volume</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-persistent-volumes-claims-component.html">Kubernetes Persistent Volume Claim</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-pods-component.html">Kubernetes Pods</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-replication-controllers-component.html">Kubernetes Replication Controller</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-resources-quota-component.html">Kubernetes Resources Quota</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-secrets-component.html">Kubernetes Secrets</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-service-accounts-component.html">Kubernetes Service Account</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="kubernetes-services-component.html">Kubernetes Services</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="openshift-build-configs-component.html">OpenShift Build Config</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="openshift-builds-component.html">OpenShift Builds</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="openshift-deploymentconfigs-component.html">OpenShift Deployment Configs</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="kudu-component.html">Kudu</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="language-component.html">Language</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="ldap-component.html">LDAP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="ldif-component.html">LDIF</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="log-component.html">Log Data</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="lucene-component.html">Lucene</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="lumberjack-component.html">Lumberjack</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="mail-component.html">Mail</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="mapstruct-component.html">MapStruct</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="master-component.html">Master</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="metrics-component.html">Metrics</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="micrometer-component.html">Micrometer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="mina-component.html">Mina</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="minio-component.html">Minio</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="mllp-component.html">MLLP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="mock-component.html">Mock</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="mongodb-component.html">MongoDB</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="mongodb-gridfs-component.html">MongoDB GridFS</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="mustache-component.html">Mustache</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="mvel-component.html">MVEL</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="mybatis-component.html">MyBatis</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="mybatis-bean-component.html">MyBatis Bean</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="nats-component.html">Nats</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="netty-component.html">Netty</a> </li> <li class="nav-item is-current-page" data-depth="2"> <a class="nav-link" href="netty-http-component.html">Netty HTTP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="nitrite-component.html">Nitrite</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="oaipmh-component.html">OAI-PMH</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="oauth-component.html">OAuth</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="olingo2-component.html">Olingo2</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="olingo4-component.html">Olingo4</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="opensearch-component.html">OpenSearch</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="openstack-summary.html">OpenStack</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="openstack-cinder-component.html">OpenStack Cinder</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="openstack-glance-component.html">OpenStack Glance</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="openstack-keystone-component.html">OpenStack Keystone</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="openstack-neutron-component.html">OpenStack Neutron</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="openstack-nova-component.html">OpenStack Nova</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="openstack-swift-component.html">OpenStack Swift</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="optaplanner-component.html">OptaPlanner</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="paho-component.html">Paho</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="paho-mqtt5-component.html">Paho MQTT 5</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="pdf-component.html">PDF</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="platform-http-component.html">Platform HTTP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="plc4x-component.html">PLC4X</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="pgevent-component.html">PostgresSQL Event</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="pg-replication-slot-component.html">PostgresSQL Replication Slot</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="lpr-component.html">Printer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="properties-component.html">Properties</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="pubnub-component.html">PubNub</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="pulsar-component.html">Pulsar</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="quartz-component.html">Quartz</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="quickfix-component.html">QuickFix</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="reactive-streams-component.html">Reactive Streams</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="ref-component.html">Ref</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="rest-component.html">REST</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="rest-api-component.html">REST API</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="rest-openapi-component.html">REST OpenApi</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="robotframework-component.html">Robot Framework</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="rocketmq-component.html">RocketMQ</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="rss-component.html">RSS</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="saga-component.html">Saga</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="salesforce-component.html">Salesforce</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="sap-netweaver-component.html">SAP NetWeaver</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="scheduler-component.html">Scheduler</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="schematron-component.html">Schematron</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="scp-component.html">SCP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="seda-component.html">SEDA</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="service-component.html">Service</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="servicenow-component.html">ServiceNow</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="servlet-component.html">Servlet</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="sftp-component.html">SFTP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="sjms-component.html">Simple JMS</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="sjms2-component.html">Simple JMS2</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="slack-component.html">Slack</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="smb-component.html">SMB</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="smooks-component.html">Smooks</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="smpp-component.html">SMPP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="snmp-component.html">SNMP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="solr-component.html">Solr</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="splunk-component.html">Splunk</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="splunk-hec-component.html">Splunk HEC</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="spring-summary.html">Spring</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="spring-batch-component.html">Spring Batch</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="spring-event-component.html">Spring Event</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="spring-jdbc-component.html">Spring JDBC</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="spring-ldap-component.html">Spring LDAP</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="spring-rabbitmq-component.html">Spring RabbitMQ</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="spring-redis-component.html">Spring Redis</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="spring-ws-component.html">Spring WebService</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="sql-component.html">SQL</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="sql-stored-component.html">SQL Stored Procedure</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="ssh-component.html">SSH</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="stax-component.html">StAX</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="stitch-component.html">Stitch</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="stomp-component.html">Stomp</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="stream-component.html">Stream</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="string-template-component.html">String Template</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="stub-component.html">Stub</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="tahu-summary.html">Tahu</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="tahu-edge-component.html">Tahu Edge Node / Device</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="tahu-host-component.html">Tahu Host Application</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="telegram-component.html">Telegram</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="thrift-component.html">Thrift</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="thymeleaf-component.html">Thymeleaf</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="tika-component.html">Tika</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="timer-component.html">Timer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="twilio-component.html">Twilio</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="twitter-directmessage-component.html">Twitter Direct Message</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="twitter-search-component.html">Twitter Search</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="twitter-timeline-component.html">Twitter Timeline</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="undertow-component.html">Undertow</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="validator-component.html">Validator</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="velocity-component.html">Velocity</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="vertx-component.html">Vert.x</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="vertx-http-component.html">Vert.x HTTP Client</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="vertx-websocket-component.html">Vert.x WebSocket</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="wasm-component.html">Wasm</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="weather-component.html">Weather</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="web3j-component.html">Web3j Ethereum Blockchain</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="webhook-component.html">Webhook</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="whatsapp-component.html">WhatsApp</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="wordpress-component.html">WordPress</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="workday-component.html">Workday</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="xchange-component.html">XChange</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="xj-component.html">XJ</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="xmlsecurity-sign-component.html">XML Security Sign</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="xmlsecurity-verify-component.html">XML Security Verify</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="xmpp-component.html">XMPP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="xquery-component.html">XQuery</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="xslt-component.html">XSLT</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="xslt-saxon-component.html">XSLT Saxon</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="zeebe-component.html">Zeebe</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="zendesk-component.html">Zendesk</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="zookeeper-component.html">ZooKeeper</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="zookeeper-master-component.html">ZooKeeper Master</a> </li> </ul> </li> </ul> </li> <li class="nav-item" data-depth="0"> <ul class="nav-list"> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="dataformats/index.html">Data Formats</a> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/asn1-dataformat.html">ASN.1 File</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/avro-dataformat.html">Avro</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/avroJackson-dataformat.html">Avro Jackson</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/barcode-dataformat.html">Barcode</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/base64-dataformat.html">Base64</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/beanio-dataformat.html">BeanIO</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/bindy-dataformat.html">Bindy</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/cbor-dataformat.html">CBOR</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/crypto-dataformat.html">Crypto (Java Cryptographic Extension)</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/csv-dataformat.html">CSV</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/dfdl-dataformat.html">DFDL</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/fhirJson-dataformat.html">FHIR JSon</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/fhirXml-dataformat.html">FHIR XML</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/flatpack-dataformat.html">Flatpack</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/fory-dataformat.html">Fory</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/grok-dataformat.html">Grok</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/gzipDeflater-dataformat.html">GZip Deflater</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/hl7-dataformat.html">HL7</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/ical-dataformat.html">iCal</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/iso8583-dataformat.html">ISO-8583</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/jacksonXml-dataformat.html">Jackson XML</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/jaxb-dataformat.html">JAXB</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/fastjson-dataformat.html">JSON Fastjson</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/gson-dataformat.html">JSON Gson</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/jackson-dataformat.html">JSON Jackson</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/jsonb-dataformat.html">JSON JSON-B</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/jsonApi-dataformat.html">JSonApi</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/lzf-dataformat.html">LZF Deflate Compression</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/mimeMultipart-dataformat.html">MIME Multipart</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/parquetAvro-dataformat.html">Parquet File</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/pgp-dataformat.html">PGP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/protobuf-dataformat.html">Protobuf</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/protobufJackson-dataformat.html">Protobuf Jackson</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/rss-dataformat.html">RSS</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/smooks-dataformat.html">Smooks</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/soap-dataformat.html">SOAP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/swiftMt-dataformat.html">SWIFT MT</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/swiftMx-dataformat.html">SWIFT MX</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/syslog-dataformat.html">Syslog</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/tarFile-dataformat.html">Tar File</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/thrift-dataformat.html">Thrift</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/univocityCsv-dataformat.html">uniVocity CSV</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/univocityFixed-dataformat.html">uniVocity Fixed Length</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/univocityTsv-dataformat.html">uniVocity TSV</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/xmlSecurity-dataformat.html">XML Security</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/snakeYaml-dataformat.html">YAML SnakeYAML</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/zipDeflater-dataformat.html">Zip Deflater</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformats/zipFile-dataformat.html">Zip File</a> </li> </ul> </li> </ul> </li> <li class="nav-item" data-depth="0"> <ul class="nav-list"> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="languages/index.html">Languages</a> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/bean-language.html">Bean Method</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/constant-language.html">Constant</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/csimple-language.html">CSimple</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/datasonnet-language.html">DataSonnet</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/exchangeProperty-language.html">ExchangeProperty</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/file-language.html">File</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/groovy-language.html">Groovy</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/header-language.html">Header</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/hl7terser-language.html">HL7 Terser</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/java-language.html">Java</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/js-language.html">JavaScript</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/joor-language.html">jOOR</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/jq-language.html">JQ</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/jsonpath-language.html">JSONPath</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/mvel-language.html">MVEL</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/ognl-language.html">OGNL</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/python-language.html">Python</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/ref-language.html">Ref</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/simple-language.html">Simple</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/spel-language.html">SpEL</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/tokenize-language.html">Tokenize</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/variable-language.html">Variable</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/wasm-language.html">Wasm</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/xtokenize-language.html">XML Tokenize</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/xpath-language.html">XPath</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages/xquery-language.html">XQuery</a> </li> </ul> </li> </ul> </li> <li class="nav-item" data-depth="0"> <ul class="nav-list"> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="others/index.html">Miscellaneous Components</a> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="others/langchain4j-tokenizer.html">LangChain4j Tokenizer</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/attachments.html">Attachments</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/aws-xray.html">AWS XRay</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/azure-schema-registry.html">Azure Schema Registry</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/cli-connector.html">CLI Connector</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/cloudevents.html">Cloudevents</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/csimple-joor.html">CSimple jOOR</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/cxf-transport.html">CXF Transport</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/debug.html">Debug</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/dsl.html">DSL</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="others/dsl-modeline.html">DSL Modeline</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="others/java-joor-dsl.html">Java DSL (runtime compiled)</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="others/java-xml-jaxb-dsl.html">Jaxb XML Dsl</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="others/kamelet-main.html">Kamelet Main</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="others/java-xml-io-dsl.html">XML Io Dsl</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="others/yaml-dsl.html">YAML DSL</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/elytron.html">Elytron</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/headersmap.html">Headersmap</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/jandex.html">Jandex</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/jasypt.html">Jasypt</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/jfr.html">JFR</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/jta.html">JTA</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/leveldb.html">LevelDB</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/lra.html">LRA</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/mail-microsoft-oauth.html">Mail Microsoft Oauth</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/main.html">Main</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/observation.html">Micrometer Observability</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/micrometer-prometheus.html">Micrometer Prometheus</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/microprofile-config.html">Microprofile Config</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/microprofile-fault-tolerance.html">Microprofile Fault Tolerance</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/microprofile-health.html">Microprofile Health</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/observability-services.html">Observability Services</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/openapi-java.html">Openapi Java</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/openapi-validator.html">Openapi Validator</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/opentelemetry.html">OpenTelemetry</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/opentelemetry2.html">Opentelemetry2</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/platform-http-jolokia.html">Platform HTTP Jolokia</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/platform-http-main.html">Platform Http Main</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/platform-http-vertx.html">Platform Http Vertx</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/reactive-executor-tomcat.html">Reactive Executor Tomcat</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/reactive-executor-vertx.html">Reactive Executor Vert.x</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/reactor.html">Reactor</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/redis.html">Redis</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/resilience4j.html">Resilience4j</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/resourceresolver-github.html">Resourceresolver Github</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/rxjava.html">RxJava</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/shiro.html">Shiro</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="others/spring-cloud-config.html">Spring Cloud Config</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/spring-main.html">Spring Main</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/spring-security.html">Spring Security</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/spring-xml.html">Spring XML</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/springdoc.html">Springdoc</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/telemetry.html">Telemetry</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/telemetry-dev.html">Telemetry Dev</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/test-junit5.html">Test JUnit5</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/test-main-junit5.html">Test Main JUnit5</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/test-spring-junit5.html">Test Spring JUnit5</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/threadpoolfactory-vertx.html">ThreadPoolFactory Vert.x</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/tracing.html">Tracing</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/undertow-spring-security.html">Undertow Spring Security</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="others/wal.html">Write Ahead Log Strategy for Resume API</a> </li> </ul> </li> </ul> </li> </ul> </li> <li class="nav-item" data-depth="0"> <ul class="nav-list"> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="eips/enterprise-integration-patterns.html">Enterprise Integration Patterns</a> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/aggregate-eip.html">Aggregate</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/batchConfig-eip.html">BatchConfig</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/bean-eip.html">Bean</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/change-data-capture.html">Change Data Capture</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/channel-adapter.html">Channel Adapter</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/choice-eip.html">Choice</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/circuitBreaker-eip.html">Circuit Breaker</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/claimCheck-eip.html">Claim Check</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/competing-consumers.html">Competing Consumers</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/composed-message-processor.html">Composed Message Processor</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/content-enricher.html">Content Enricher</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/content-filter-eip.html">Content Filter</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/convertBodyTo-eip.html">Convert Body To</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/convertHeaderTo-eip.html">Convert Header To</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/convertVariableTo-eip.html">Convert Variable To</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/correlation-identifier.html">Correlation Identifier</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/customLoadBalancer-eip.html">Custom Load Balancer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/dead-letter-channel.html">Dead Letter Channel</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/delay-eip.html">Delay</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/durable-subscriber.html">Durable Subscriber</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/dynamicRouter-eip.html">Dynamic Router</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/enrich-eip.html">Enrich</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/eventDrivenConsumer-eip.html">Event Driven Consumer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/event-message.html">Event Message</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/failoverLoadBalancer-eip.html">Failover Load Balancer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/faultToleranceConfiguration-eip.html">Fault Tolerance Configuration</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/fault-tolerance-eip.html">Fault Tolerance EIP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/filter-eip.html">Filter</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/from-eip.html">From</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/guaranteed-delivery.html">Guaranteed Delivery</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/idempotentConsumer-eip.html">Idempotent Consumer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/intercept.html">Intercept</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/kamelet-eip.html">Kamelet</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/loadBalance-eip.html">Load Balance</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/log-eip.html">Logger</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/loop-eip.html">Loop</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/marshal-eip.html">Marshal</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/message.html">Message</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/message-broker.html">Message Broker</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/message-bus.html">Message Bus</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/message-channel.html">Message Channel</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/message-dispatcher.html">Message Dispatcher</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/message-endpoint.html">Message Endpoint</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/message-expiration.html">Message Expiration</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/message-history.html">Message History</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/message-router.html">Message Router</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/message-translator.html">Message Translator</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/messaging-bridge.html">Messaging Bridge</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/messaging-gateway.html">Messaging Gateway</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/messaging-mapper.html">Messaging Mapper</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/multicast-eip.html">Multicast</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/normalizer.html">Normalizer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/onFallback-eip.html">On Fallback</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/pipeline-eip.html">Pipeline</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/point-to-point-channel.html">Point to Point Channel</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/poll-eip.html">Poll</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/pollEnrich-eip.html">Poll Enrich</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/polling-consumer.html">Polling Consumer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/process-eip.html">Process</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/process-manager.html">Process Manager</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/publish-subscribe-channel.html">Publish Subscribe Channel</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/randomLoadBalancer-eip.html">Random Load Balancer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/recipientList-eip.html">Recipient List</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/removeHeader-eip.html">Remove Header</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/removeHeaders-eip.html">Remove Headers</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/removeProperties-eip.html">Remove Properties</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/removeProperty-eip.html">Remove Property</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/removeVariable-eip.html">Remove Variable</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/requestReply-eip.html">Request Reply</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/resequence-eip.html">Resequence</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/resilience4jConfiguration-eip.html">Resilience4j Configuration</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/resilience4j-eip.html">Resilience4j EIP</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/resume-strategies.html">Resume Strategies</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/return-address.html">Return Address</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/rollback-eip.html">Rollback</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/roundRobinLoadBalancer-eip.html">Round Robin Load Balancer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/routingSlip-eip.html">Routing Slip</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/saga-eip.html">Saga</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/sample-eip.html">Sample</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/scatter-gather.html">Scatter-Gather</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/script-eip.html">Script</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/selective-consumer.html">Selective Consumer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/service-activator.html">Service Activator</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/serviceCall-eip.html">Service Call</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/setBody-eip.html">Set Body</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/setHeader-eip.html">Set Header</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/setHeaders-eip.html">Set Headers</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/setProperty-eip.html">Set Property</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/setVariable-eip.html">Set Variable</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/setVariables-eip.html">Set Variables</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/sort-eip.html">Sort</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/split-eip.html">Split</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/step-eip.html">Step</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/stickyLoadBalancer-eip.html">Sticky Load Balancer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/stop-eip.html">Stop</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/streamConfig-eip.html">StreamConfig</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/threads-eip.html">Threads</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/throttle-eip.html">Throttle</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/to-eip.html">To</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/toD-eip.html">To D</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/topicLoadBalancer-eip.html">Topic Load Balancer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/transactional-client.html">Transactional Client</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/transform-eip.html">Transform</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/unmarshal-eip.html">Unmarshal</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/validate-eip.html">Validate</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/weightedLoadBalancer-eip.html">Weighted Load Balancer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="eips/wireTap-eip.html">Wire Tap</a> </li> </ul> </li> </ul> </li> </ul> </nav> </div> <div class="nav-panel-explore" data-panel="explore"> <div class="context"> <span class="title">Camel Components</span> <span class="version">Next (Pre-release)</span> </div> <ul class="components"> <li class="component"> <span class="title"> <a href="../../manual/index.html">User manual</a> </span></li> <li class="component is-current"><span class="title">Camel Components</span> <ul class="versions"> <li class="version is-current"> <a href="index.html">Next (Pre-release)</a> </li> <li class="version"> <a href="../4.10.x/index.html">4.10.x (LTS)</a> </li> <li class="version"> <a href="../4.8.x/index.html">4.8.x (LTS)</a> </li> <li class="version"> <a href="../3.22.x/index.html">3.22.x (LTS)</a> </li> </ul></li> <li class="component"> <span class="title"> <a href="../../camel-core/index.html">Camel Core</a> </span></li> <li class="component"><span class="title">Camel K</span> <ul class="versions"> <li class="version"> <a href="../../camel-k/next/index.html">Next (Pre-release)</a> </li> <li class="version"> <a href="../../camel-k/2.7.x/index.html">2.7.x (LTS)</a> </li> <li class="version"> <a href="../../camel-k/2.5.x/index.html">2.5.x (LTS)</a> </li> </ul></li> <li class="component"><span class="title">Camel Kafka Connector</span> <ul class="versions"> <li class="version"> <a href="../../camel-kafka-connector/next/index.html">Next (Pre-release)</a> </li> <li class="version"> <a href="../../camel-kafka-connector/4.10.x/index.html">4.10.x</a> </li> </ul></li> <li class="component"><span class="title">Kamelet Catalog</span> <ul class="versions"> <li class="version"> <a href="../../camel-kamelets/next/index.html">Next (Pre-release)</a> </li> <li class="version"> <a href="../../camel-kamelets/4.10.x/index.html">4.10.x (LTS)</a> </li> <li class="version"> <a href="../../camel-kamelets/4.8.x/index.html">4.8.x (LTS)</a> </li> </ul></li> <li class="component"><span class="title">Camel Karaf</span> <ul class="versions"> <li class="version"> <a href="../../camel-karaf/4.9.x/index.html">4.9.x</a> </li> <li class="version"> <a href="../../camel-karaf/4.8.x/index.html">4.8.x</a> </li> <li class="version"> <a href="../../camel-karaf/3.22.x/index.html">3.22.x (LTS)</a> </li> </ul></li> <li class="component"><span class="title">Camel Quarkus</span> <ul class="versions"> <li class="version"> <a href="../../camel-quarkus/next/index.html">Next (Pre-release)</a> </li> <li class="version"> <a href="../../camel-quarkus/3.20.x/index.html">3.20.x</a> </li> <li class="version"> <a href="../../camel-quarkus/3.15.x/index.html">3.15.x</a> </li> </ul></li> <li class="component"><span class="title">Camel Spring Boot</span> <ul class="versions"> <li class="version"> <a href="../../camel-spring-boot/next/index.html">Next (Pre-release)</a> </li> <li class="version"> <a href="../../camel-spring-boot/4.10.x/index.html">4.10.x (LTS)</a> </li> <li class="version"> <a href="../../camel-spring-boot/4.8.x/index.html">4.8.x (LTS)</a> </li> <li class="version"> <a href="../../camel-spring-boot/3.22.x/index.html">3.22.x (LTS)</a> </li> </ul></li> </ul> </div> </div> </aside> </div> <main class="article"> <nav class="toolbar" aria-label="Toolbar"> <button class="nav-toggle" type="button" aria-label="Toggle submenu"></button> <nav class="breadcrumbs" aria-label="breadcrumbs"> <ul> <li><a href="index.html">Camel Components</a></li> <li><a href="index.html">Components</a></li> <li><a href="netty-http-component.html">Netty HTTP</a></li> </ul> </nav> <div class="page-versions"> <button class="version-menu-toggle" type="button" title="Show other versions of page">Next (Pre-release)</button> <div class="version-menu"> <a class="version is-current" href="netty-http-component.html">Next (Pre-release)</a> <a class="version" href="../4.10.x/netty-http-component.html">4.10.x (LTS)</a> <a class="version" href="../4.8.x/netty-http-component.html">4.8.x (LTS)</a> <a class="version" href="../3.22.x/netty-http-component.html">3.22.x (LTS)</a> </div> </div> <div class="edit-this-page"><a href="https://github.com/apache/camel/edit/main/docs/components/modules/ROOT/pages/netty-http-component.adoc">Edit this Page</a></div> </nav> <div class="content"> <article class="doc"> <h1 class="page">Netty HTTP</h1> <div id="preamble"> <div class="sectionbody"> <div class="paragraph"> <p><strong>Since Camel 2.14</strong></p> </div> <div class="paragraph"> <p><strong>Both producer and consumer are supported</strong></p> </div> <div class="paragraph"> <p>The Netty HTTP component is an extension to <a href="netty-component.html" class="xref page">Netty</a> component to simplify HTTP transport with <a href="netty-component.html" class="xref page">Netty</a>.</p> </div> <div class="admonitionblock note"> <div class="table-wrapper"><table> <tr> <td class="icon"> <i class="fa icon-note" title="Note"></i> </td> <td class="content"> <div class="paragraph"> <p><strong>Stream</strong></p> </div> <div class="paragraph"> <p>Netty is stream-based, which means the input it receives is submitted to Camel as a stream. That means you will only be able to read the content of the stream <strong>once</strong>. If you find a situation where the message body appears to be empty, or you need to access the data multiple times (eg: doing multicasting, or redelivery error handling), you should use Stream caching or convert the message body to a <code>String</code> which is safe to be re-read multiple times.</p> </div> <div class="paragraph"> <p>Note also that Netty HTTP reads the entire stream into memory using <code>io.netty.handler.codec.http.HttpObjectAggregator</code> to build the entire full http message. But the resulting message is still a stream-based message that is readable once.</p> </div> </td> </tr> </table></div> </div> <div class="paragraph"> <p>Maven users will need to add the following dependency to their <code>pom.xml</code> for this component:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency> |
| <groupId>org.apache.camel</groupId> |
| <artifactId>camel-netty-http</artifactId> |
| <version>x.x.x</version> |
| <!-- use the same version as your Camel core version --> |
| </dependency></code></pre> </div> </div> </div> </div> <div class="sect1"> <h2 id="_uri_format"><a class="anchor" href="#_uri_format"></a>URI format</h2> <div class="sectionbody"> <div class="paragraph"> <p>The URI scheme for a netty component is as follows</p> </div> <div class="listingblock"> <div class="content"> <pre>netty-http:http://0.0.0.0:8080[?options]</pre> </div> </div> <div class="admonitionblock note"> <div class="table-wrapper"><table> <tr> <td class="icon"> <i class="fa icon-note" title="Note"></i> </td> <td class="content"> <div class="paragraph"> <p><strong>Query parameters vs. endpoint options</strong></p> </div> <div class="paragraph"> <p>You may be wondering how Camel recognizes URI query parameters and endpoint options. For example, you might create endpoint URI as follows: <code>netty-http:http//example.com?myParam=myValue&compression=true</code> . In this example <code>myParam</code> is the HTTP parameter, while <code>compression</code> is the Camel endpoint option. The strategy used by Camel in such situations is to resolve available endpoint options and remove them from the URI. It means that for the discussed example, the HTTP request sent by Netty HTTP producer to the endpoint will look as follows: <code>http//example.com?myParam=myValue</code>, because <code>compression</code> endpoint option will be resolved and removed from the target URL.</p> </div> <div class="paragraph"> <p>Keep also in mind that you cannot specify endpoint options using dynamic headers (like <code>CamelHttpQuery</code>). Endpoint options can be specified only at the endpoint URI definition level (like <code>to</code> or <code>from</code> DSL elements).</p> </div> </td> </tr> </table></div> </div> <div class="admonitionblock important"> <div class="table-wrapper"><table> <tr> <td class="icon"> <i class="fa icon-important" title="Important"></i> </td> <td class="content"> <div class="paragraph"> <p><strong>A lot more options</strong></p> </div> <div class="paragraph"> <p>This component inherits all the options from <a href="netty-component.html" class="xref page">Netty</a>, so make sure to look at the <a href="netty-component.html" class="xref page">Netty</a> documentation as well. Notice that some options from <a href="netty-component.html" class="xref page">Netty</a> are not applicable when using this Netty HTTP component, such as options related to UDP transport.</p> </div> </td> </tr> </table></div> </div> </div> </div> <div class="sect1"> <h2 id="_configuring_options"><a class="anchor" href="#_configuring_options"></a>Configuring Options</h2> <div class="sectionbody"> <div class="paragraph"> <p>Camel components are configured on two separate levels:</p> </div> <div class="ulist"> <ul> <li> <p>component level</p> </li> <li> <p>endpoint level</p> </li> </ul> </div> <div class="sect2"> <h3 id="_configuring_component_options"><a class="anchor" href="#_configuring_component_options"></a>Configuring Component Options</h3> <div class="paragraph"> <p>At the component level, you set general and shared configurations that are, then, inherited by the endpoints. It is the highest configuration level.</p> </div> <div class="paragraph"> <p>For example, a component may have security settings, credentials for authentication, urls for network connection and so forth.</p> </div> <div class="paragraph"> <p>Some components only have a few options, and others may have many. Because components typically have pre-configured defaults that are commonly used, then you may often only need to configure a few options on a component; or none at all.</p> </div> <div class="paragraph"> <p>You can configure components using:</p> </div> <div class="ulist"> <ul> <li> <p>the <a href="../../manual/component-dsl.html" class="xref page">Component DSL</a>.</p> </li> <li> <p>in a configuration file (<code>application.properties</code>, <code>*.yaml</code> files, etc).</p> </li> <li> <p>directly in the Java code.</p> </li> </ul> </div> </div> <div class="sect2"> <h3 id="_configuring_endpoint_options"><a class="anchor" href="#_configuring_endpoint_options"></a>Configuring Endpoint Options</h3> <div class="paragraph"> <p>You usually spend more time setting up endpoints because they have many options. These options help you customize what you want the endpoint to do. The options are also categorized into whether the endpoint is used as a consumer (<em>from</em>), as a producer (<em>to</em>), or both.</p> </div> <div class="paragraph"> <p>Configuring endpoints is most often done directly in the endpoint URI as <em>path</em> and <em>query</em> parameters. You can also use the <a href="../../manual/Endpoint-dsl.html" class="xref page">Endpoint DSL</a> and <a href="../../manual/dataformat-dsl.html" class="xref page">DataFormat DSL</a> as a <em>type safe</em> way of configuring endpoints and data formats in Java.</p> </div> <div class="paragraph"> <p>A good practice when configuring options is to use <a href="../../manual/using-propertyplaceholder.html" class="xref page">Property Placeholders</a>.</p> </div> <div class="paragraph"> <p>Property placeholders provide a few benefits:</p> </div> <div class="ulist"> <ul> <li> <p>They help prevent using hardcoded urls, port numbers, sensitive information, and other settings.</p> </li> <li> <p>They allow externalizing the configuration from the code.</p> </li> <li> <p>They help the code to become more flexible and reusable.</p> </li> </ul> </div> <div class="paragraph"> <p>The following two sections list all the options, firstly for the component followed by the endpoint.</p> </div> </div> </div> </div> <div class="sect1"> <h2 id="_component_options"><a class="anchor" href="#_component_options"></a>Component Options</h2> <div class="sectionbody"> <div class="paragraph"> <p>The Netty HTTP component supports 81 options, which are listed below.</p> </div> <div class="table-wrapper"><table class="tableblock frame-all grid-all stretch"> <colgroup> <col> <col> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Name</th> <th class="tableblock halign-left valign-top">Description</th> <th class="tableblock halign-center valign-top">Default</th> <th class="tableblock halign-left valign-top">Type</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_configuration"></a> <a href="#_component_option_configuration" class="anchor"></a><strong>configuration</strong> (common)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To use the NettyConfiguration as configuration when creating endpoints.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">NettyConfiguration</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_disconnect"></a> <a href="#_component_option_disconnect" class="anchor"></a><strong>disconnect</strong> (common)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Whether or not to disconnect(close) from Netty Channel right after use.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_keepAlive"></a> <a href="#_component_option_keepAlive" class="anchor"></a><strong>keepAlive</strong> (common)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Setting to ensure socket is not closed due to inactivity.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_reuseAddress"></a> <a href="#_component_option_reuseAddress" class="anchor"></a><strong>reuseAddress</strong> (common)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Setting to facilitate socket multiplexing.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_reuseChannel"></a> <a href="#_component_option_reuseChannel" class="anchor"></a><strong>reuseChannel</strong> (common)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>This option allows producers and consumers (in client mode) to reuse the same Netty Channel for the lifecycle of processing the Exchange. This is useful if you need to call a server multiple times in a Camel route and want to use the same network connection. When using this, the channel is not returned to the connection pool until the Exchange is done; or disconnected if the disconnect option is set to true. The reused Channel is stored on the Exchange as an exchange property with the key CamelNettyChannel which allows you to obtain the channel during routing and use it as well.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_sync"></a> <a href="#_component_option_sync" class="anchor"></a><strong>sync</strong> (common)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Setting to set endpoint as one-way (false) or request-response (true).</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_tcpNoDelay"></a> <a href="#_component_option_tcpNoDelay" class="anchor"></a><strong>tcpNoDelay</strong> (common)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Setting to improve TCP protocol performance.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_bridgeErrorHandler"></a> <a href="#_component_option_bridgeErrorHandler" class="anchor"></a><strong>bridgeErrorHandler</strong> (consumer)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions (if possible) occurred while the Camel consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. Important: This is only possible if the 3rd party component allows Camel to be alerted if an exception was thrown. Some components handle this internally only, and therefore bridgeErrorHandler is not possible. In other situations we may improve the Camel component to hook into the 3rd party component and make this possible for future releases. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_clientMode"></a> <a href="#_component_option_clientMode" class="anchor"></a><strong>clientMode</strong> (consumer)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>If the clientMode is true, netty consumer will connect the address as a TCP client.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_muteException"></a> <a href="#_component_option_muteException" class="anchor"></a><strong>muteException</strong> (consumer)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>If enabled and an Exchange failed processing on the consumer side the response’s body won’t contain the exception’s stack trace.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_reconnect"></a> <a href="#_component_option_reconnect" class="anchor"></a><strong>reconnect</strong> (consumer)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Used only in clientMode in consumer, the consumer will attempt to reconnect on disconnection if this is enabled.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_reconnectInterval"></a> <a href="#_component_option_reconnectInterval" class="anchor"></a><strong>reconnectInterval</strong> (consumer)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Used if reconnect and clientMode is enabled. The interval in milli seconds to attempt reconnection.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">10000</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_backlog"></a> <a href="#_component_option_backlog" class="anchor"></a><strong>backlog</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Allows to configure a backlog for netty consumer (server). Note the backlog is just a best effort depending on the OS. Setting this option to a value such as 200, 500 or 1000, tells the TCP stack how long the accept queue can be If this option is not configured, then the backlog depends on OS setting.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_bossCount"></a> <a href="#_component_option_bossCount" class="anchor"></a><strong>bossCount</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>When netty works on nio mode, it uses default bossCount parameter from Netty, which is 1. User can use this option to override the default bossCount from Netty.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">1</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_bossGroup"></a> <a href="#_component_option_bossGroup" class="anchor"></a><strong>bossGroup</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Set the BossGroup which could be used for handling the new connection of the server side across the NettyEndpoint.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">EventLoopGroup</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_broadcast"></a> <a href="#_component_option_broadcast" class="anchor"></a><strong>broadcast</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Setting to choose Multicast over UDP.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_disconnectOnNoReply"></a> <a href="#_component_option_disconnectOnNoReply" class="anchor"></a><strong>disconnectOnNoReply</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>If sync is enabled then this option dictates NettyConsumer if it should disconnect where there is no reply to send back.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_executorService"></a> <a href="#_component_option_executorService" class="anchor"></a><strong>executorService</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To use the given custom EventExecutorGroup.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">EventExecutorGroup</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_maximumPoolSize"></a> <a href="#_component_option_maximumPoolSize" class="anchor"></a><strong>maximumPoolSize</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Sets a maximum thread pool size for the netty consumer ordered thread pool. The default size is 2 x cpu_core plus 1. Setting this value to eg 10 will then use 10 threads unless 2 x cpu_core plus 1 is a higher value, which then will override and be used. For example if there are 8 cores, then the consumer thread pool will be 17. This thread pool is used to route messages received from Netty by Camel. We use a separate thread pool to ensure ordering of messages and also in case some messages will block, then nettys worker threads (event loop) wont be affected.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_nettyServerBootstrapFactory"></a> <a href="#_component_option_nettyServerBootstrapFactory" class="anchor"></a><strong>nettyServerBootstrapFactory</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To use a custom NettyServerBootstrapFactory.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">NettyServerBootstrapFactory</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_networkInterface"></a> <a href="#_component_option_networkInterface" class="anchor"></a><strong>networkInterface</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>When using UDP then this option can be used to specify a network interface by its name, such as eth0 to join a multicast group.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_noReplyLogLevel"></a> <a href="#_component_option_noReplyLogLevel" class="anchor"></a><strong>noReplyLogLevel</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>If sync is enabled this option dictates NettyConsumer which logging level to use when logging a there is no reply to send back.</p> </div> <div class="paragraph"> <p>Enum values:</p> </div> <div class="ulist"> <ul> <li> <p>TRACE</p> </li> <li> <p>DEBUG</p> </li> <li> <p>INFO</p> </li> <li> <p>WARN</p> </li> <li> <p>ERROR</p> </li> <li> <p>OFF</p> </li> </ul> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">WARN</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">LoggingLevel</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_serverClosedChannelExceptionCaughtLogLevel"></a> <a href="#_component_option_serverClosedChannelExceptionCaughtLogLevel" class="anchor"></a><strong>serverClosedChannelExceptionCaughtLogLevel</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>If the server (NettyConsumer) catches an java.nio.channels.ClosedChannelException then its logged using this logging level. This is used to avoid logging the closed channel exceptions, as clients can disconnect abruptly and then cause a flood of closed exceptions in the Netty server.</p> </div> <div class="paragraph"> <p>Enum values:</p> </div> <div class="ulist"> <ul> <li> <p>TRACE</p> </li> <li> <p>DEBUG</p> </li> <li> <p>INFO</p> </li> <li> <p>WARN</p> </li> <li> <p>ERROR</p> </li> <li> <p>OFF</p> </li> </ul> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">DEBUG</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">LoggingLevel</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_serverExceptionCaughtLogLevel"></a> <a href="#_component_option_serverExceptionCaughtLogLevel" class="anchor"></a><strong>serverExceptionCaughtLogLevel</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>If the server (NettyConsumer) catches an exception then its logged using this logging level.</p> </div> <div class="paragraph"> <p>Enum values:</p> </div> <div class="ulist"> <ul> <li> <p>TRACE</p> </li> <li> <p>DEBUG</p> </li> <li> <p>INFO</p> </li> <li> <p>WARN</p> </li> <li> <p>ERROR</p> </li> <li> <p>OFF</p> </li> </ul> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">WARN</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">LoggingLevel</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_serverInitializerFactory"></a> <a href="#_component_option_serverInitializerFactory" class="anchor"></a><strong>serverInitializerFactory</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To use a custom ServerInitializerFactory.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">ServerInitializerFactory</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_usingExecutorService"></a> <a href="#_component_option_usingExecutorService" class="anchor"></a><strong>usingExecutorService</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Whether to use ordered thread pool, to ensure events are processed orderly on the same channel.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_connectTimeout"></a> <a href="#_component_option_connectTimeout" class="anchor"></a><strong>connectTimeout</strong> (producer)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Time to wait for a socket connection to be available. Value is in milliseconds.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">10000</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_lazyStartProducer"></a> <a href="#_component_option_lazyStartProducer" class="anchor"></a><strong>lazyStartProducer</strong> (producer)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel’s routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_requestTimeout"></a> <a href="#_component_option_requestTimeout" class="anchor"></a><strong>requestTimeout</strong> (producer)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Allows to use a timeout for the Netty producer when calling a remote server. By default no timeout is in use. The value is in milli seconds, so eg 30000 is 30 seconds. The requestTimeout is using Netty’s ReadTimeoutHandler to trigger the timeout.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">long</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_clientInitializerFactory"></a> <a href="#_component_option_clientInitializerFactory" class="anchor"></a><strong>clientInitializerFactory</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To use a custom ClientInitializerFactory.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">ClientInitializerFactory</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_correlationManager"></a> <a href="#_component_option_correlationManager" class="anchor"></a><strong>correlationManager</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To use a custom correlation manager to manage how request and reply messages are mapped when using request/reply with the netty producer. This should only be used if you have a way to map requests together with replies such as if there is correlation ids in both the request and reply messages. This can be used if you want to multiplex concurrent messages on the same channel (aka connection) in netty. When doing this you must have a way to correlate the request and reply messages so you can store the right reply on the inflight Camel Exchange before its continued routed. We recommend extending the TimeoutCorrelationManagerSupport when you build custom correlation managers. This provides support for timeout and other complexities you otherwise would need to implement as well. See also the producerPoolEnabled option for more details.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">NettyCamelStateCorrelationManager</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_lazyChannelCreation"></a> <a href="#_component_option_lazyChannelCreation" class="anchor"></a><strong>lazyChannelCreation</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Channels can be lazily created to avoid exceptions, if the remote server is not up and running when the Camel producer is started.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_producerPoolBlockWhenExhausted"></a> <a href="#_component_option_producerPoolBlockWhenExhausted" class="anchor"></a><strong>producerPoolBlockWhenExhausted</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Sets the value for the blockWhenExhausted configuration attribute. It determines whether to block when the borrowObject() method is invoked when the pool is exhausted (the maximum number of active objects has been reached).</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_producerPoolEnabled"></a> <a href="#_component_option_producerPoolEnabled" class="anchor"></a><strong>producerPoolEnabled</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Whether producer pool is enabled or not. Important: If you turn this off then a single shared connection is used for the producer, also if you are doing request/reply. That means there is a potential issue with interleaved responses if replies comes back out-of-order. Therefore you need to have a correlation id in both the request and reply messages so you can properly correlate the replies to the Camel callback that is responsible for continue processing the message in Camel. To do this you need to implement NettyCamelStateCorrelationManager as correlation manager and configure it via the correlationManager option. See also the correlationManager option for more details.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_producerPoolMaxIdle"></a> <a href="#_component_option_producerPoolMaxIdle" class="anchor"></a><strong>producerPoolMaxIdle</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Sets the cap on the number of idle instances in the pool.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">100</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_producerPoolMaxTotal"></a> <a href="#_component_option_producerPoolMaxTotal" class="anchor"></a><strong>producerPoolMaxTotal</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Sets the cap on the number of objects that can be allocated by the pool (checked out to clients, or idle awaiting checkout) at a given time. Use a negative value for no limit. Be careful to not set this value too low (such as 1) as the pool must have space to create a producer such as when performing retries. Be mindful that the option producerPoolBlockWhenExhausted is default true, and the pool will then block when there is no space, which can lead to the application to hang.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">-1</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_producerPoolMaxWait"></a> <a href="#_component_option_producerPoolMaxWait" class="anchor"></a><strong>producerPoolMaxWait</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Sets the maximum duration (value in millis) the borrowObject() method should block before throwing an exception when the pool is exhausted and producerPoolBlockWhenExhausted is true. When less than 0, the borrowObject() method may block indefinitely.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">-1</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">long</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_producerPoolMinEvictableIdle"></a> <a href="#_component_option_producerPoolMinEvictableIdle" class="anchor"></a><strong>producerPoolMinEvictableIdle</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Sets the minimum amount of time (value in millis) an object may sit idle in the pool before it is eligible for eviction by the idle object evictor.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">300000</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">long</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_producerPoolMinIdle"></a> <a href="#_component_option_producerPoolMinIdle" class="anchor"></a><strong>producerPoolMinIdle</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Sets the minimum number of instances allowed in the producer pool before the evictor thread (if active) spawns new objects.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_udpConnectionlessSending"></a> <a href="#_component_option_udpConnectionlessSending" class="anchor"></a><strong>udpConnectionlessSending</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>This option supports connection less udp sending which is a real fire and forget. A connected udp send receive the PortUnreachableException if no one is listen on the receiving port.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_useByteBuf"></a> <a href="#_component_option_useByteBuf" class="anchor"></a><strong>useByteBuf</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>If the useByteBuf is true, netty producer will turn the message body into ByteBuf before sending it out.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_allowSerializedHeaders"></a> <a href="#_component_option_allowSerializedHeaders" class="anchor"></a><strong>allowSerializedHeaders</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Only used for TCP when transferExchange is true. When set to true, serializable objects in headers and properties will be added to the exchange. Otherwise Camel will exclude any non-serializable objects and log it at WARN level.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_autowiredEnabled"></a> <a href="#_component_option_autowiredEnabled" class="anchor"></a><strong>autowiredEnabled</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>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.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_channelGroup"></a> <a href="#_component_option_channelGroup" class="anchor"></a><strong>channelGroup</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To use an explicit ChannelGroup.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">ChannelGroup</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_headerFilterStrategy"></a> <a href="#_component_option_headerFilterStrategy" class="anchor"></a><strong>headerFilterStrategy</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">HeaderFilterStrategy</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_nativeTransport"></a> <a href="#_component_option_nativeTransport" class="anchor"></a><strong>nativeTransport</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Whether to use native transport instead of NIO. Native transport takes advantage of the host operating system and is only supported on some platforms. You need to add the netty JAR for the host operating system you are using. See more details at: <a href="http://netty.io/wiki/native-transports.html" class="bare">http://netty.io/wiki/native-transports.html</a>.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_nettyHttpBinding"></a> <a href="#_component_option_nettyHttpBinding" class="anchor"></a><strong>nettyHttpBinding</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To use a custom org.apache.camel.component.netty.http.NettyHttpBinding for binding to/from Netty and Camel Message API.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">NettyHttpBinding</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_options"></a> <a href="#_component_option_options" class="anchor"></a><strong>options</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Allows to configure additional netty options using option. as prefix. For example option.child.keepAlive=false. See the Netty documentation for possible options that can be used. This is a multi-value option with prefix: option.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Map</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_receiveBufferSize"></a> <a href="#_component_option_receiveBufferSize" class="anchor"></a><strong>receiveBufferSize</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The TCP/UDP buffer sizes to be used during inbound communication. Size is bytes.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">65536</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_receiveBufferSizePredictor"></a> <a href="#_component_option_receiveBufferSizePredictor" class="anchor"></a><strong>receiveBufferSizePredictor</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Configures the buffer size predictor. See details at Jetty documentation and this mail thread.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_sendBufferSize"></a> <a href="#_component_option_sendBufferSize" class="anchor"></a><strong>sendBufferSize</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The TCP/UDP buffer sizes to be used during outbound communication. Size is bytes.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">65536</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_shutdownTimeout"></a> <a href="#_component_option_shutdownTimeout" class="anchor"></a><strong>shutdownTimeout</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Shutdown await timeout in milliseconds.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">100</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_transferExchange"></a> <a href="#_component_option_transferExchange" class="anchor"></a><strong>transferExchange</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body, Out body, fault body, In headers, Out headers, fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_udpByteArrayCodec"></a> <a href="#_component_option_udpByteArrayCodec" class="anchor"></a><strong>udpByteArrayCodec</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>For UDP only. If enabled the using byte array codec instead of Java serialization protocol.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_unixDomainSocketPath"></a> <a href="#_component_option_unixDomainSocketPath" class="anchor"></a><strong>unixDomainSocketPath</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Path to unix domain socket to use instead of inet socket. Host and port parameters will not be used, however required. It is ok to set dummy values for them. Must be used with nativeTransport=true and clientMode=false.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_workerCount"></a> <a href="#_component_option_workerCount" class="anchor"></a><strong>workerCount</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>When netty works on nio mode, it uses default workerCount parameter from Netty (which is cpu_core_threads x 2). User can use this option to override the default workerCount from Netty.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_workerGroup"></a> <a href="#_component_option_workerGroup" class="anchor"></a><strong>workerGroup</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To use a explicit EventLoopGroup as the boss thread pool. For example to share a thread pool with multiple consumers or producers. By default each consumer or producer has their own worker pool with 2 x cpu count core threads.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">EventLoopGroup</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_allowDefaultCodec"></a> <a href="#_component_option_allowDefaultCodec" class="anchor"></a><strong>allowDefaultCodec</strong> (codec)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The netty component installs a default codec if both, encoder/decoder is null and textline is false. Setting allowDefaultCodec to false prevents the netty component from installing a default codec as the first element in the filter chain.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_autoAppendDelimiter"></a> <a href="#_component_option_autoAppendDelimiter" class="anchor"></a><strong>autoAppendDelimiter</strong> (codec)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Whether or not to auto append missing end delimiter when sending using the textline codec.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_decoderMaxLineLength"></a> <a href="#_component_option_decoderMaxLineLength" class="anchor"></a><strong>decoderMaxLineLength</strong> (codec)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The max line length to use for the textline codec.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">1024</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_decoders"></a> <a href="#_component_option_decoders" class="anchor"></a><strong>decoders</strong> (codec)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>A list of decoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_delimiter"></a> <a href="#_component_option_delimiter" class="anchor"></a><strong>delimiter</strong> (codec)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The delimiter to use for the textline codec. Possible values are LINE and NULL.</p> </div> <div class="paragraph"> <p>Enum values:</p> </div> <div class="ulist"> <ul> <li> <p>LINE</p> </li> <li> <p>NULL</p> </li> </ul> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">LINE</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">TextLineDelimiter</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_encoders"></a> <a href="#_component_option_encoders" class="anchor"></a><strong>encoders</strong> (codec)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>A list of encoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_encoding"></a> <a href="#_component_option_encoding" class="anchor"></a><strong>encoding</strong> (codec)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The encoding (a charset name) to use for the textline codec. If not provided, Camel will use the JVM default Charset.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_textline"></a> <a href="#_component_option_textline" class="anchor"></a><strong>textline</strong> (codec)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Only used for TCP. If no codec is specified, you can use this flag to indicate a text line based codec; if not specified or the value is false, then Object Serialization is assumed over TCP - however only Strings are allowed to be serialized by default.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_enabledProtocols"></a> <a href="#_component_option_enabledProtocols" class="anchor"></a><strong>enabledProtocols</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Which protocols to enable when using SSL.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">TLSv1.2,TLSv1.3</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_hostnameVerification"></a> <a href="#_component_option_hostnameVerification" class="anchor"></a><strong>hostnameVerification</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To enable/disable hostname verification on SSLEngine.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_keyStoreFile"></a> <a href="#_component_option_keyStoreFile" class="anchor"></a><strong>keyStoreFile</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p><strong>Deprecated</strong> Client side certificate keystore to be used for encryption.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">File</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_keyStoreFormat"></a> <a href="#_component_option_keyStoreFormat" class="anchor"></a><strong>keyStoreFormat</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Keystore format to be used for payload encryption. Defaults to JKS if not set.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_keyStoreResource"></a> <a href="#_component_option_keyStoreResource" class="anchor"></a><strong>keyStoreResource</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Client side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_needClientAuth"></a> <a href="#_component_option_needClientAuth" class="anchor"></a><strong>needClientAuth</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Configures whether the server needs client authentication when using SSL.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_passphrase"></a> <a href="#_component_option_passphrase" class="anchor"></a><strong>passphrase</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Password setting to use in order to encrypt/decrypt payloads sent using SSH.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_securityConfiguration"></a> <a href="#_component_option_securityConfiguration" class="anchor"></a><strong>securityConfiguration</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Refers to a org.apache.camel.component.netty.http.NettyHttpSecurityConfiguration for configuring secure web resources.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">NettyHttpSecurityConfiguration</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_securityProvider"></a> <a href="#_component_option_securityProvider" class="anchor"></a><strong>securityProvider</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Security provider to be used for payload encryption. Defaults to SunX509 if not set.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_ssl"></a> <a href="#_component_option_ssl" class="anchor"></a><strong>ssl</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Setting to specify whether SSL encryption is applied to this endpoint.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_sslClientCertHeaders"></a> <a href="#_component_option_sslClientCertHeaders" class="anchor"></a><strong>sslClientCertHeaders</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>When enabled and in SSL mode, then the Netty consumer will enrich the Camel Message with headers having information about the client certificate such as subject name, issuer name, serial number, and the valid date range.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_sslContextParameters"></a> <a href="#_component_option_sslContextParameters" class="anchor"></a><strong>sslContextParameters</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To configure security using SSLContextParameters.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">SSLContextParameters</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_sslHandler"></a> <a href="#_component_option_sslHandler" class="anchor"></a><strong>sslHandler</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Reference to a class that could be used to return an SSL Handler.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">SslHandler</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_trustStoreFile"></a> <a href="#_component_option_trustStoreFile" class="anchor"></a><strong>trustStoreFile</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p><strong>Deprecated</strong> Server side certificate keystore to be used for encryption.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">File</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_trustStoreResource"></a> <a href="#_component_option_trustStoreResource" class="anchor"></a><strong>trustStoreResource</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Server side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_component_option_useGlobalSslContextParameters"></a> <a href="#_component_option_useGlobalSslContextParameters" class="anchor"></a><strong>useGlobalSslContextParameters</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Enable usage of global SSL context parameters.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> </tbody> </table></div> </div> </div> <div class="sect1"> <h2 id="_endpoint_options"><a class="anchor" href="#_endpoint_options"></a>Endpoint Options</h2> <div class="sectionbody"> <div class="paragraph"> <p>The Netty HTTP endpoint is configured using URI syntax:</p> </div> <div class="listingblock"> <div class="content"> <pre>netty-http:protocol://host:port/path</pre> </div> </div> <div class="paragraph"> <p>With the following <em>path</em> and <em>query</em> parameters:</p> </div> <div class="sect2"> <h3 id="_path_parameters_4_parameters"><a class="anchor" href="#_path_parameters_4_parameters"></a>Path Parameters (4 parameters)</h3> <div class="table-wrapper"><table class="tableblock frame-all grid-all stretch"> <colgroup> <col> <col> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Name</th> <th class="tableblock halign-left valign-top">Description</th> <th class="tableblock halign-center valign-top">Default</th> <th class="tableblock halign-left valign-top">Type</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_path_option_protocol"></a> <a href="#_endpoint_path_option_protocol" class="anchor"></a><strong>protocol</strong> (common)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p><strong>Required</strong> The protocol to use which is either http, https or proxy (consumer only).</p> </div> <div class="paragraph"> <p>Enum values:</p> </div> <div class="ulist"> <ul> <li> <p>http</p> </li> <li> <p>https</p> </li> <li> <p>proxy</p> </li> </ul> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_path_option_host"></a> <a href="#_endpoint_path_option_host" class="anchor"></a><strong>host</strong> (common)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p><strong>Required</strong> The local hostname such as localhost, or 0.0.0.0 when being a consumer. The remote HTTP server hostname when using producer.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_path_option_port"></a> <a href="#_endpoint_path_option_port" class="anchor"></a><strong>port</strong> (common)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The host port number.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_path_option_path"></a> <a href="#_endpoint_path_option_path" class="anchor"></a><strong>path</strong> (common)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Resource path.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> </tbody> </table></div> </div> <div class="sect2"> <h3 id="_query_parameters"><a class="anchor" href="#_query_parameters"></a>Query Parameters (86 parameters)</h3> <div class="table-wrapper"><table class="tableblock frame-all grid-all stretch"> <colgroup> <col> <col> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Name</th> <th class="tableblock halign-left valign-top">Description</th> <th class="tableblock halign-center valign-top">Default</th> <th class="tableblock halign-left valign-top">Type</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_bridgeEndpoint"></a> <a href="#_endpoint_query_option_bridgeEndpoint" class="anchor"></a><strong>bridgeEndpoint</strong> (common)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>If the option is true, the producer will ignore the NettyHttpConstants.HTTP_URI header, and use the endpoint’s URI for request. You may also set the throwExceptionOnFailure to be false to let the producer send all the fault response back. The consumer working in the bridge mode will skip the gzip compression and WWW URL form encoding (by adding the Exchange.SKIP_GZIP_ENCODING and Exchange.SKIP_WWW_FORM_URLENCODED headers to the consumed exchange).</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_disconnect"></a> <a href="#_endpoint_query_option_disconnect" class="anchor"></a><strong>disconnect</strong> (common)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Whether or not to disconnect(close) from Netty Channel right after use.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_keepAlive"></a> <a href="#_endpoint_query_option_keepAlive" class="anchor"></a><strong>keepAlive</strong> (common)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Setting to ensure socket is not closed due to inactivity.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_reuseAddress"></a> <a href="#_endpoint_query_option_reuseAddress" class="anchor"></a><strong>reuseAddress</strong> (common)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Setting to facilitate socket multiplexing.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_reuseChannel"></a> <a href="#_endpoint_query_option_reuseChannel" class="anchor"></a><strong>reuseChannel</strong> (common)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>This option allows producers and consumers (in client mode) to reuse the same Netty Channel for the lifecycle of processing the Exchange. This is useful if you need to call a server multiple times in a Camel route and want to use the same network connection. When using this, the channel is not returned to the connection pool until the Exchange is done; or disconnected if the disconnect option is set to true. The reused Channel is stored on the Exchange as an exchange property with the key CamelNettyChannel which allows you to obtain the channel during routing and use it as well.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_sync"></a> <a href="#_endpoint_query_option_sync" class="anchor"></a><strong>sync</strong> (common)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Setting to set endpoint as one-way (false) or request-response (true).</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_tcpNoDelay"></a> <a href="#_endpoint_query_option_tcpNoDelay" class="anchor"></a><strong>tcpNoDelay</strong> (common)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Setting to improve TCP protocol performance.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_matchOnUriPrefix"></a> <a href="#_endpoint_query_option_matchOnUriPrefix" class="anchor"></a><strong>matchOnUriPrefix</strong> (consumer)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Whether or not Camel should try to find a target consumer by matching the URI prefix if no exact match is found.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_muteException"></a> <a href="#_endpoint_query_option_muteException" class="anchor"></a><strong>muteException</strong> (consumer)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>If enabled and an Exchange failed processing on the consumer side the response’s body won’t contain the exception’s stack trace.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_send503whenSuspended"></a> <a href="#_endpoint_query_option_send503whenSuspended" class="anchor"></a><strong>send503whenSuspended</strong> (consumer)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Whether to send back HTTP status code 503 when the consumer has been suspended. If the option is false then the Netty Acceptor is unbound when the consumer is suspended, so clients cannot connect anymore.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_backlog"></a> <a href="#_endpoint_query_option_backlog" class="anchor"></a><strong>backlog</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Allows to configure a backlog for netty consumer (server). Note the backlog is just a best effort depending on the OS. Setting this option to a value such as 200, 500 or 1000, tells the TCP stack how long the accept queue can be If this option is not configured, then the backlog depends on OS setting.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_bossCount"></a> <a href="#_endpoint_query_option_bossCount" class="anchor"></a><strong>bossCount</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>When netty works on nio mode, it uses default bossCount parameter from Netty, which is 1. User can use this option to override the default bossCount from Netty.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">1</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_bossGroup"></a> <a href="#_endpoint_query_option_bossGroup" class="anchor"></a><strong>bossGroup</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Set the BossGroup which could be used for handling the new connection of the server side across the NettyEndpoint.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">EventLoopGroup</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_bridgeErrorHandler"></a> <a href="#_endpoint_query_option_bridgeErrorHandler" class="anchor"></a><strong>bridgeErrorHandler</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions (if possible) occurred while the Camel consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. Important: This is only possible if the 3rd party component allows Camel to be alerted if an exception was thrown. Some components handle this internally only, and therefore bridgeErrorHandler is not possible. In other situations we may improve the Camel component to hook into the 3rd party component and make this possible for future releases. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_chunkedMaxContentLength"></a> <a href="#_endpoint_query_option_chunkedMaxContentLength" class="anchor"></a><strong>chunkedMaxContentLength</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Value in bytes the max content length per chunked frame received on the Netty HTTP server.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">1048576</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_compression"></a> <a href="#_endpoint_query_option_compression" class="anchor"></a><strong>compression</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Allow using gzip/deflate for compression on the Netty HTTP server if the client supports it from the HTTP headers.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_disconnectOnNoReply"></a> <a href="#_endpoint_query_option_disconnectOnNoReply" class="anchor"></a><strong>disconnectOnNoReply</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>If sync is enabled then this option dictates NettyConsumer if it should disconnect where there is no reply to send back.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_exceptionHandler"></a> <a href="#_endpoint_query_option_exceptionHandler" class="anchor"></a><strong>exceptionHandler</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">ExceptionHandler</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_exchangePattern"></a> <a href="#_endpoint_query_option_exchangePattern" class="anchor"></a><strong>exchangePattern</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Sets the exchange pattern when the consumer creates an exchange.</p> </div> <div class="paragraph"> <p>Enum values:</p> </div> <div class="ulist"> <ul> <li> <p>InOnly</p> </li> <li> <p>InOut</p> </li> </ul> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">ExchangePattern</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_httpMethodRestrict"></a> <a href="#_endpoint_query_option_httpMethodRestrict" class="anchor"></a><strong>httpMethodRestrict</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To disable HTTP methods on the Netty HTTP consumer. You can specify multiple separated by comma.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_logWarnOnBadRequest"></a> <a href="#_endpoint_query_option_logWarnOnBadRequest" class="anchor"></a><strong>logWarnOnBadRequest</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Whether Netty HTTP server should log a WARN if decoding the HTTP request failed and a HTTP Status 400 (bad request) is returned.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_mapHeaders"></a> <a href="#_endpoint_query_option_mapHeaders" class="anchor"></a><strong>mapHeaders</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>If this option is enabled, then during binding from Netty to Camel Message then the headers will be mapped as well (eg added as header to the Camel Message as well). You can turn off this option to disable this. The headers can still be accessed from the org.apache.camel.component.netty.http.NettyHttpMessage message with the method getHttpRequest() that returns the Netty HTTP request io.netty.handler.codec.http.HttpRequest instance.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_maxChunkSize"></a> <a href="#_endpoint_query_option_maxChunkSize" class="anchor"></a><strong>maxChunkSize</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The maximum length of the content or each chunk. If the content length (or the length of each chunk) exceeds this value, the content or chunk will be split into multiple io.netty.handler.codec.http.HttpContents whose length is maxChunkSize at maximum. See io.netty.handler.codec.http.HttpObjectDecoder.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">8192</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_maxHeaderSize"></a> <a href="#_endpoint_query_option_maxHeaderSize" class="anchor"></a><strong>maxHeaderSize</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The maximum length of all headers. If the sum of the length of each header exceeds this value, a io.netty.handler.codec.TooLongFrameException will be raised.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">8192</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_maxInitialLineLength"></a> <a href="#_endpoint_query_option_maxInitialLineLength" class="anchor"></a><strong>maxInitialLineLength</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The maximum length of the initial line (e.g. \{code GET / HTTP/1.0} or \{code HTTP/1.0 200 OK}) If the length of the initial line exceeds this value, a TooLongFrameException will be raised. See io.netty.handler.codec.http.HttpObjectDecoder.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">4096</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_nettyServerBootstrapFactory"></a> <a href="#_endpoint_query_option_nettyServerBootstrapFactory" class="anchor"></a><strong>nettyServerBootstrapFactory</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To use a custom NettyServerBootstrapFactory.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">NettyServerBootstrapFactory</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_nettySharedHttpServer"></a> <a href="#_endpoint_query_option_nettySharedHttpServer" class="anchor"></a><strong>nettySharedHttpServer</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To use a shared Netty HTTP server. See Netty HTTP Server Example for more details.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">NettySharedHttpServer</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_noReplyLogLevel"></a> <a href="#_endpoint_query_option_noReplyLogLevel" class="anchor"></a><strong>noReplyLogLevel</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>If sync is enabled this option dictates NettyConsumer which logging level to use when logging a there is no reply to send back.</p> </div> <div class="paragraph"> <p>Enum values:</p> </div> <div class="ulist"> <ul> <li> <p>TRACE</p> </li> <li> <p>DEBUG</p> </li> <li> <p>INFO</p> </li> <li> <p>WARN</p> </li> <li> <p>ERROR</p> </li> <li> <p>OFF</p> </li> </ul> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">WARN</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">LoggingLevel</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_serverClosedChannelExceptionCaughtLogLevel"></a> <a href="#_endpoint_query_option_serverClosedChannelExceptionCaughtLogLevel" class="anchor"></a><strong>serverClosedChannelExceptionCaughtLogLevel</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>If the server (NettyConsumer) catches an java.nio.channels.ClosedChannelException then its logged using this logging level. This is used to avoid logging the closed channel exceptions, as clients can disconnect abruptly and then cause a flood of closed exceptions in the Netty server.</p> </div> <div class="paragraph"> <p>Enum values:</p> </div> <div class="ulist"> <ul> <li> <p>TRACE</p> </li> <li> <p>DEBUG</p> </li> <li> <p>INFO</p> </li> <li> <p>WARN</p> </li> <li> <p>ERROR</p> </li> <li> <p>OFF</p> </li> </ul> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">DEBUG</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">LoggingLevel</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_serverExceptionCaughtLogLevel"></a> <a href="#_endpoint_query_option_serverExceptionCaughtLogLevel" class="anchor"></a><strong>serverExceptionCaughtLogLevel</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>If the server (NettyConsumer) catches an exception then its logged using this logging level.</p> </div> <div class="paragraph"> <p>Enum values:</p> </div> <div class="ulist"> <ul> <li> <p>TRACE</p> </li> <li> <p>DEBUG</p> </li> <li> <p>INFO</p> </li> <li> <p>WARN</p> </li> <li> <p>ERROR</p> </li> <li> <p>OFF</p> </li> </ul> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">WARN</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">LoggingLevel</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_serverInitializerFactory"></a> <a href="#_endpoint_query_option_serverInitializerFactory" class="anchor"></a><strong>serverInitializerFactory</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To use a custom ServerInitializerFactory.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">ServerInitializerFactory</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_traceEnabled"></a> <a href="#_endpoint_query_option_traceEnabled" class="anchor"></a><strong>traceEnabled</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Specifies whether to enable HTTP TRACE for this Netty HTTP consumer. By default TRACE is turned off.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_urlDecodeHeaders"></a> <a href="#_endpoint_query_option_urlDecodeHeaders" class="anchor"></a><strong>urlDecodeHeaders</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>If this option is enabled, then during binding from Netty to Camel Message then the header values will be URL decoded (eg %20 will be a space character. Notice this option is used by the default org.apache.camel.component.netty.http.NettyHttpBinding and therefore if you implement a custom org.apache.camel.component.netty.http.NettyHttpBinding then you would need to decode the headers accordingly to this option.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_usingExecutorService"></a> <a href="#_endpoint_query_option_usingExecutorService" class="anchor"></a><strong>usingExecutorService</strong> (consumer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Whether to use ordered thread pool, to ensure events are processed orderly on the same channel.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_connectTimeout"></a> <a href="#_endpoint_query_option_connectTimeout" class="anchor"></a><strong>connectTimeout</strong> (producer)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Time to wait for a socket connection to be available. Value is in milliseconds.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">10000</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_cookieHandler"></a> <a href="#_endpoint_query_option_cookieHandler" class="anchor"></a><strong>cookieHandler</strong> (producer)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Configure a cookie handler to maintain a HTTP session.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">CookieHandler</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_requestTimeout"></a> <a href="#_endpoint_query_option_requestTimeout" class="anchor"></a><strong>requestTimeout</strong> (producer)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Allows to use a timeout for the Netty producer when calling a remote server. By default no timeout is in use. The value is in milli seconds, so eg 30000 is 30 seconds. The requestTimeout is using Netty’s ReadTimeoutHandler to trigger the timeout.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">long</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_throwExceptionOnFailure"></a> <a href="#_endpoint_query_option_throwExceptionOnFailure" class="anchor"></a><strong>throwExceptionOnFailure</strong> (producer)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Option to disable throwing the HttpOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_clientInitializerFactory"></a> <a href="#_endpoint_query_option_clientInitializerFactory" class="anchor"></a><strong>clientInitializerFactory</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To use a custom ClientInitializerFactory.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">ClientInitializerFactory</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_lazyChannelCreation"></a> <a href="#_endpoint_query_option_lazyChannelCreation" class="anchor"></a><strong>lazyChannelCreation</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Channels can be lazily created to avoid exceptions, if the remote server is not up and running when the Camel producer is started.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_lazyStartProducer"></a> <a href="#_endpoint_query_option_lazyStartProducer" class="anchor"></a><strong>lazyStartProducer</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel’s routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_okStatusCodeRange"></a> <a href="#_endpoint_query_option_okStatusCodeRange" class="anchor"></a><strong>okStatusCodeRange</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The status codes which are considered a success response. The values are inclusive. Multiple ranges can be defined, separated by comma, e.g. 200-204,209,301-304. Each range must be a single number or from-to with the dash included. The default range is 200-299.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">200-299</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_producerPoolBlockWhenExhausted"></a> <a href="#_endpoint_query_option_producerPoolBlockWhenExhausted" class="anchor"></a><strong>producerPoolBlockWhenExhausted</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Sets the value for the blockWhenExhausted configuration attribute. It determines whether to block when the borrowObject() method is invoked when the pool is exhausted (the maximum number of active objects has been reached).</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_producerPoolEnabled"></a> <a href="#_endpoint_query_option_producerPoolEnabled" class="anchor"></a><strong>producerPoolEnabled</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Whether producer pool is enabled or not. Important: If you turn this off then a single shared connection is used for the producer, also if you are doing request/reply. That means there is a potential issue with interleaved responses if replies comes back out-of-order. Therefore you need to have a correlation id in both the request and reply messages so you can properly correlate the replies to the Camel callback that is responsible for continue processing the message in Camel. To do this you need to implement NettyCamelStateCorrelationManager as correlation manager and configure it via the correlationManager option. See also the correlationManager option for more details.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_producerPoolMaxIdle"></a> <a href="#_endpoint_query_option_producerPoolMaxIdle" class="anchor"></a><strong>producerPoolMaxIdle</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Sets the cap on the number of idle instances in the pool.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">100</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_producerPoolMaxTotal"></a> <a href="#_endpoint_query_option_producerPoolMaxTotal" class="anchor"></a><strong>producerPoolMaxTotal</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Sets the cap on the number of objects that can be allocated by the pool (checked out to clients, or idle awaiting checkout) at a given time. Use a negative value for no limit. Be careful to not set this value too low (such as 1) as the pool must have space to create a producer such as when performing retries. Be mindful that the option producerPoolBlockWhenExhausted is default true, and the pool will then block when there is no space, which can lead to the application to hang.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">-1</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_producerPoolMaxWait"></a> <a href="#_endpoint_query_option_producerPoolMaxWait" class="anchor"></a><strong>producerPoolMaxWait</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Sets the maximum duration (value in millis) the borrowObject() method should block before throwing an exception when the pool is exhausted and producerPoolBlockWhenExhausted is true. When less than 0, the borrowObject() method may block indefinitely.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">-1</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">long</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_producerPoolMinEvictableIdle"></a> <a href="#_endpoint_query_option_producerPoolMinEvictableIdle" class="anchor"></a><strong>producerPoolMinEvictableIdle</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Sets the minimum amount of time (value in millis) an object may sit idle in the pool before it is eligible for eviction by the idle object evictor.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">300000</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">long</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_producerPoolMinIdle"></a> <a href="#_endpoint_query_option_producerPoolMinIdle" class="anchor"></a><strong>producerPoolMinIdle</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Sets the minimum number of instances allowed in the producer pool before the evictor thread (if active) spawns new objects.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_useRelativePath"></a> <a href="#_endpoint_query_option_useRelativePath" class="anchor"></a><strong>useRelativePath</strong> (producer (advanced))</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Sets whether to use a relative path in HTTP requests.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_allowSerializedHeaders"></a> <a href="#_endpoint_query_option_allowSerializedHeaders" class="anchor"></a><strong>allowSerializedHeaders</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Only used for TCP when transferExchange is true. When set to true, serializable objects in headers and properties will be added to the exchange. Otherwise Camel will exclude any non-serializable objects and log it at WARN level.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_channelGroup"></a> <a href="#_endpoint_query_option_channelGroup" class="anchor"></a><strong>channelGroup</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To use an explicit ChannelGroup.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">ChannelGroup</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_configuration"></a> <a href="#_endpoint_query_option_configuration" class="anchor"></a><strong>configuration</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To use a custom configured NettyHttpConfiguration for configuring this endpoint.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">NettyHttpConfiguration</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_disableStreamCache"></a> <a href="#_endpoint_query_option_disableStreamCache" class="anchor"></a><strong>disableStreamCache</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Determines whether or not the raw input stream from Netty HttpRequest#getContent() or HttpResponset#getContent() is cached or not (Camel will read the stream into a in light-weight memory based Stream caching) cache. By default Camel will cache the Netty input stream to support reading it multiple times to ensure it Camel can retrieve all data from the stream. However you can set this option to true when you for example need to access the raw stream, such as streaming it directly to a file or other persistent store. Mind that if you enable this option, then you cannot read the Netty stream multiple times out of the box, and you would need manually to reset the reader index on the Netty raw stream. Also Netty will auto-close the Netty stream when the Netty HTTP server/HTTP client is done processing, which means that if the asynchronous routing engine is in use then any asynchronous thread that may continue routing the org.apache.camel.Exchange may not be able to read the Netty stream, because Netty has closed it.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_headerFilterStrategy"></a> <a href="#_endpoint_query_option_headerFilterStrategy" class="anchor"></a><strong>headerFilterStrategy</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">HeaderFilterStrategy</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_nativeTransport"></a> <a href="#_endpoint_query_option_nativeTransport" class="anchor"></a><strong>nativeTransport</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Whether to use native transport instead of NIO. Native transport takes advantage of the host operating system and is only supported on some platforms. You need to add the netty JAR for the host operating system you are using. See more details at: <a href="http://netty.io/wiki/native-transports.html" class="bare">http://netty.io/wiki/native-transports.html</a>.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_nettyHttpBinding"></a> <a href="#_endpoint_query_option_nettyHttpBinding" class="anchor"></a><strong>nettyHttpBinding</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To use a custom org.apache.camel.component.netty.http.NettyHttpBinding for binding to/from Netty and Camel Message API.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">NettyHttpBinding</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_options"></a> <a href="#_endpoint_query_option_options" class="anchor"></a><strong>options</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Allows to configure additional netty options using option. as prefix. For example option.child.keepAlive=false. See the Netty documentation for possible options that can be used. This is a multi-value option with prefix: option.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Map</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_receiveBufferSize"></a> <a href="#_endpoint_query_option_receiveBufferSize" class="anchor"></a><strong>receiveBufferSize</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The TCP/UDP buffer sizes to be used during inbound communication. Size is bytes.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">65536</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_receiveBufferSizePredictor"></a> <a href="#_endpoint_query_option_receiveBufferSizePredictor" class="anchor"></a><strong>receiveBufferSizePredictor</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Configures the buffer size predictor. See details at Jetty documentation and this mail thread.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_sendBufferSize"></a> <a href="#_endpoint_query_option_sendBufferSize" class="anchor"></a><strong>sendBufferSize</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The TCP/UDP buffer sizes to be used during outbound communication. Size is bytes.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">65536</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_shutdownTimeout"></a> <a href="#_endpoint_query_option_shutdownTimeout" class="anchor"></a><strong>shutdownTimeout</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Shutdown await timeout in milliseconds.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">100</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_synchronous"></a> <a href="#_endpoint_query_option_synchronous" class="anchor"></a><strong>synchronous</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Sets whether synchronous processing should be strictly used.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_transferException"></a> <a href="#_endpoint_query_option_transferException" class="anchor"></a><strong>transferException</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is, instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_transferExchange"></a> <a href="#_endpoint_query_option_transferExchange" class="anchor"></a><strong>transferExchange</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body, Out body, fault body, In headers, Out headers, fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_unixDomainSocketPath"></a> <a href="#_endpoint_query_option_unixDomainSocketPath" class="anchor"></a><strong>unixDomainSocketPath</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Path to unix domain socket to use instead of inet socket. Host and port parameters will not be used, however required. It is ok to set dummy values for them. Must be used with nativeTransport=true and clientMode=false.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_workerCount"></a> <a href="#_endpoint_query_option_workerCount" class="anchor"></a><strong>workerCount</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>When netty works on nio mode, it uses default workerCount parameter from Netty (which is cpu_core_threads x 2). User can use this option to override the default workerCount from Netty.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">int</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_workerGroup"></a> <a href="#_endpoint_query_option_workerGroup" class="anchor"></a><strong>workerGroup</strong> (advanced)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To use a explicit EventLoopGroup as the boss thread pool. For example to share a thread pool with multiple consumers or producers. By default each consumer or producer has their own worker pool with 2 x cpu count core threads.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">EventLoopGroup</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_decoders"></a> <a href="#_endpoint_query_option_decoders" class="anchor"></a><strong>decoders</strong> (codec)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>A list of decoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_encoders"></a> <a href="#_endpoint_query_option_encoders" class="anchor"></a><strong>encoders</strong> (codec)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>A list of encoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_enabledProtocols"></a> <a href="#_endpoint_query_option_enabledProtocols" class="anchor"></a><strong>enabledProtocols</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Which protocols to enable when using SSL.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">TLSv1.2,TLSv1.3</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_hostnameVerification"></a> <a href="#_endpoint_query_option_hostnameVerification" class="anchor"></a><strong>hostnameVerification</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To enable/disable hostname verification on SSLEngine.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_keyStoreFile"></a> <a href="#_endpoint_query_option_keyStoreFile" class="anchor"></a><strong>keyStoreFile</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p><strong>Deprecated</strong> Client side certificate keystore to be used for encryption.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">File</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_keyStoreFormat"></a> <a href="#_endpoint_query_option_keyStoreFormat" class="anchor"></a><strong>keyStoreFormat</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Keystore format to be used for payload encryption. Defaults to JKS if not set.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_keyStoreResource"></a> <a href="#_endpoint_query_option_keyStoreResource" class="anchor"></a><strong>keyStoreResource</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Client side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_needClientAuth"></a> <a href="#_endpoint_query_option_needClientAuth" class="anchor"></a><strong>needClientAuth</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Configures whether the server needs client authentication when using SSL.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_passphrase"></a> <a href="#_endpoint_query_option_passphrase" class="anchor"></a><strong>passphrase</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Password setting to use in order to encrypt/decrypt payloads sent using SSH.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_securityConfiguration"></a> <a href="#_endpoint_query_option_securityConfiguration" class="anchor"></a><strong>securityConfiguration</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Refers to a org.apache.camel.component.netty.http.NettyHttpSecurityConfiguration for configuring secure web resources.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">NettyHttpSecurityConfiguration</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_securityOptions"></a> <a href="#_endpoint_query_option_securityOptions" class="anchor"></a><strong>securityOptions</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To configure NettyHttpSecurityConfiguration using key/value pairs from the map. This is a multi-value option with prefix: securityConfiguration.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Map</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_securityProvider"></a> <a href="#_endpoint_query_option_securityProvider" class="anchor"></a><strong>securityProvider</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Security provider to be used for payload encryption. Defaults to SunX509 if not set.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_ssl"></a> <a href="#_endpoint_query_option_ssl" class="anchor"></a><strong>ssl</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Setting to specify whether SSL encryption is applied to this endpoint.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_sslClientCertHeaders"></a> <a href="#_endpoint_query_option_sslClientCertHeaders" class="anchor"></a><strong>sslClientCertHeaders</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>When enabled and in SSL mode, then the Netty consumer will enrich the Camel Message with headers having information about the client certificate such as subject name, issuer name, serial number, and the valid date range.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_sslContextParameters"></a> <a href="#_endpoint_query_option_sslContextParameters" class="anchor"></a><strong>sslContextParameters</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To configure security using SSLContextParameters.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">SSLContextParameters</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_sslHandler"></a> <a href="#_endpoint_query_option_sslHandler" class="anchor"></a><strong>sslHandler</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Reference to a class that could be used to return an SSL Handler.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">SslHandler</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_trustStoreFile"></a> <a href="#_endpoint_query_option_trustStoreFile" class="anchor"></a><strong>trustStoreFile</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p><strong>Deprecated</strong> Server side certificate keystore to be used for encryption.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">File</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_query_option_trustStoreResource"></a> <a href="#_endpoint_query_option_trustStoreResource" class="anchor"></a><strong>trustStoreResource</strong> (security)</p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Server side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> </tbody> </table></div> </div> </div> </div> <div class="sect1"> <h2 id="_message_headers"><a class="anchor" href="#_message_headers"></a>Message Headers</h2> <div class="sectionbody"> <div class="paragraph"> <p>The Netty HTTP component supports 24 message header(s), which is/are listed below:</p> </div> <div class="table-wrapper"><table class="tableblock frame-all grid-all stretch"> <colgroup> <col> <col> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Name</th> <th class="tableblock halign-left valign-top">Description</th> <th class="tableblock halign-center valign-top">Default</th> <th class="tableblock halign-left valign-top">Type</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelHttpAuthentication"></a> <a href="#_endpoint_header_CamelHttpAuthentication" class="anchor"></a><strong>CamelHttpAuthentication</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/http/NettyHttpConstants.html#HTTP_AUTHENTICATION"><code>HTTP_AUTHENTICATION</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>If the user was authenticated using HTTP Basic then this header is added with the value Basic.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_Content-Type"></a> <a href="#_endpoint_header_Content-Type" class="anchor"></a><strong>Content-Type</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/http/NettyHttpConstants.html#CONTENT_TYPE"><code>CONTENT_TYPE</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>To set the content-type of the HTTP body. For example: text/plain; charset=UTF-8.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_connection"></a> <a href="#_endpoint_header_connection" class="anchor"></a><strong>connection</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/http/NettyHttpConstants.html#CONNECTION"><code>CONNECTION</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The value of the HTTP header connection to use.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelNettyCloseChannelWhenComplete"></a> <a href="#_endpoint_header_CamelNettyCloseChannelWhenComplete" class="anchor"></a><strong>CamelNettyCloseChannelWhenComplete</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/http/NettyHttpConstants.html#NETTY_CLOSE_CHANNEL_WHEN_COMPLETE"><code>NETTY_CLOSE_CHANNEL_WHEN_COMPLETE</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Indicates whether the channel should be closed after complete.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelHttpResponseCode"></a> <a href="#_endpoint_header_CamelHttpResponseCode" class="anchor"></a><strong>CamelHttpResponseCode</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/http/NettyHttpConstants.html#HTTP_RESPONSE_CODE"><code>HTTP_RESPONSE_CODE</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Allows to set the HTTP Status code to use. By default 200 is used for success, and 500 for failure.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Integer</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelHttpProtocolVersion"></a> <a href="#_endpoint_header_CamelHttpProtocolVersion" class="anchor"></a><strong>CamelHttpProtocolVersion</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/http/NettyHttpConstants.html#HTTP_PROTOCOL_VERSION"><code>HTTP_PROTOCOL_VERSION</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The version of the HTTP protocol.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">HTTP/1.1</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelHttpMethod"></a> <a href="#_endpoint_header_CamelHttpMethod" class="anchor"></a><strong>CamelHttpMethod</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/http/NettyHttpConstants.html#HTTP_METHOD"><code>HTTP_METHOD</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The HTTP method used, such as GET, POST, TRACE etc.</p> </div></div></td> <td class="tableblock halign-center valign-top"><p class="tableblock">GET</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelHttpQuery"></a> <a href="#_endpoint_header_CamelHttpQuery" class="anchor"></a><strong>CamelHttpQuery</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/http/NettyHttpConstants.html#HTTP_QUERY"><code>HTTP_QUERY</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Any query parameters, such as foo=bar&beer=yes.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelHttpPath"></a> <a href="#_endpoint_header_CamelHttpPath" class="anchor"></a><strong>CamelHttpPath</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/http/NettyHttpConstants.html#HTTP_PATH"><code>HTTP_PATH</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Allows to provide URI context-path and query parameters as a String value that overrides the endpoint configuration. This allows to reuse the same producer for calling same remote http server, but using a dynamic context-path and query parameters.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelHttpRawQuery"></a> <a href="#_endpoint_header_CamelHttpRawQuery" class="anchor"></a><strong>CamelHttpRawQuery</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/http/NettyHttpConstants.html#HTTP_RAW_QUERY"><code>HTTP_RAW_QUERY</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>Any query parameters, such as foo=bar&beer=yes. Stored in the raw form, as they arrived to the consumer (i.e. before URL decoding).</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelHttpUrl"></a> <a href="#_endpoint_header_CamelHttpUrl" class="anchor"></a><strong>CamelHttpUrl</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/http/NettyHttpConstants.html#HTTP_URL"><code>HTTP_URL</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The URL including protocol, host and port, etc: <a href="http://0.0.0.0:8080/myapp" class="bare">http://0.0.0.0:8080/myapp</a>.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelHttpCharacterEncoding"></a> <a href="#_endpoint_header_CamelHttpCharacterEncoding" class="anchor"></a><strong>CamelHttpCharacterEncoding</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/http/NettyHttpConstants.html#HTTP_CHARACTER_ENCODING"><code>HTTP_CHARACTER_ENCODING</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The charset from the content-type header.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelHttpUri"></a> <a href="#_endpoint_header_CamelHttpUri" class="anchor"></a><strong>CamelHttpUri</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/http/NettyHttpConstants.html#HTTP_URI"><code>HTTP_URI</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The URI without protocol, host and port, etc: /myapp.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelNettyChannelHandlerContext"></a> <a href="#_endpoint_header_CamelNettyChannelHandlerContext" class="anchor"></a><strong>CamelNettyChannelHandlerContext</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/NettyConstants.html#NETTY_CHANNEL_HANDLER_CONTEXT"><code>NETTY_CHANNEL_HANDLER_CONTEXT</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The channel handler context.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">ChannelHandlerContext</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelNettyRemoteAddress"></a> <a href="#_endpoint_header_CamelNettyRemoteAddress" class="anchor"></a><strong>CamelNettyRemoteAddress</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/NettyConstants.html#NETTY_REMOTE_ADDRESS"><code>NETTY_REMOTE_ADDRESS</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The remote address.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">SocketAddress</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelNettyLocalAddress"></a> <a href="#_endpoint_header_CamelNettyLocalAddress" class="anchor"></a><strong>CamelNettyLocalAddress</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/NettyConstants.html#NETTY_LOCAL_ADDRESS"><code>NETTY_LOCAL_ADDRESS</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The local address.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">SocketAddress</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelNettySSLSession"></a> <a href="#_endpoint_header_CamelNettySSLSession" class="anchor"></a><strong>CamelNettySSLSession</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/NettyConstants.html#NETTY_SSL_SESSION"><code>NETTY_SSL_SESSION</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The SSL session.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">SSLSession</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelNettySSLClientCertSubjectName"></a> <a href="#_endpoint_header_CamelNettySSLClientCertSubjectName" class="anchor"></a><strong>CamelNettySSLClientCertSubjectName</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/NettyConstants.html#NETTY_SSL_CLIENT_CERT_SUBJECT_NAME"><code>NETTY_SSL_CLIENT_CERT_SUBJECT_NAME</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The SSL client certificate subject name.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelNettySSLClientCertIssuerName"></a> <a href="#_endpoint_header_CamelNettySSLClientCertIssuerName" class="anchor"></a><strong>CamelNettySSLClientCertIssuerName</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/NettyConstants.html#NETTY_SSL_CLIENT_CERT_ISSUER_NAME"><code>NETTY_SSL_CLIENT_CERT_ISSUER_NAME</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The SSL client certificate issuer name.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelNettySSLClientCertSerialNumber"></a> <a href="#_endpoint_header_CamelNettySSLClientCertSerialNumber" class="anchor"></a><strong>CamelNettySSLClientCertSerialNumber</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/NettyConstants.html#NETTY_SSL_CLIENT_CERT_SERIAL_NO"><code>NETTY_SSL_CLIENT_CERT_SERIAL_NO</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The SSL client certificate serial number.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelNettySSLClientCertNotBefore"></a> <a href="#_endpoint_header_CamelNettySSLClientCertNotBefore" class="anchor"></a><strong>CamelNettySSLClientCertNotBefore</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/NettyConstants.html#NETTY_SSL_CLIENT_CERT_NOT_BEFORE"><code>NETTY_SSL_CLIENT_CERT_NOT_BEFORE</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The SSL client certificate not before.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Date</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelNettySSLClientCertNotAfter"></a> <a href="#_endpoint_header_CamelNettySSLClientCertNotAfter" class="anchor"></a><strong>CamelNettySSLClientCertNotAfter</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/NettyConstants.html#NETTY_SSL_CLIENT_CERT_NOT_AFTER"><code>NETTY_SSL_CLIENT_CERT_NOT_AFTER</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The SSL client certificate not after.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Date</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelNettyRequestTimeout"></a> <a href="#_endpoint_header_CamelNettyRequestTimeout" class="anchor"></a><strong>CamelNettyRequestTimeout</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/NettyConstants.html#NETTY_REQUEST_TIMEOUT"><code>NETTY_REQUEST_TIMEOUT</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The read timeout.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Long</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_endpoint_header_CamelNettyChannel"></a> <a href="#_endpoint_header_CamelNettyChannel" class="anchor"></a><strong>CamelNettyChannel</strong> (common)</p> <p class="tableblock">Constant: <a href="https://javadoc.io/doc/org.apache.camel/camel-netty-http/latest/org/apache/camel/component/netty/NettyConstants.html#NETTY_CHANNEL"><code>NETTY_CHANNEL</code></a></p></td> <td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph"> <p>The Netty Channel object.</p> </div></div></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Channel</p></td> </tr> </tbody> </table></div> </div> </div> <div class="sect1"> <h2 id="_usage"><a class="anchor" href="#_usage"></a>Usage</h2> <div class="sectionbody"> <div class="sect2"> <h3 id="_access_to_netty_types"><a class="anchor" href="#_access_to_netty_types"></a>Access to Netty types</h3> <div class="paragraph"> <p>This component uses the <code>org.apache.camel.component.netty.http.NettyHttpMessage</code> as the message implementation on the Exchange. This allows end users to get access to the original Netty request/response instances if needed, as shown below. Mind that the original response may not be accessible at all times.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">io.netty.handler.codec.http.HttpRequest request = exchange.getIn(NettyHttpMessage.class).getHttpRequest();</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_using_http_basic_authentication"><a class="anchor" href="#_using_http_basic_authentication"></a>Using HTTP Basic Authentication</h3> <div class="paragraph"> <p>The Netty HTTP consumer supports HTTP basic authentication by specifying the security realm name to use, as shown below</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java"><route> |
| <from uri="netty-http:http://0.0.0.0:{{port}}/foo?securityConfiguration.realm=someRealm"/> |
| ... |
| </route></code></pre> </div> </div> <div class="paragraph"> <p>The realm name is mandatory to enable basic authentication. By default, the JAAS based authenticator is used, which will use the realm name specified (<code><em>someRealm</em></code> in the example above) and use the JAAS realm and the <code>JAAS \{{LoginModule}}s</code> of this realm for authentication.</p> </div> <div class="sect3"> <h4 id="_specifying_acl_on_web_resources"><a class="anchor" href="#_specifying_acl_on_web_resources"></a>Specifying ACL on web resources</h4> <div class="paragraph"> <p>The <code>org.apache.camel.component.netty.http.SecurityConstraint</code> allows to define constraints on web resources. And the <code>org.apache.camel.component.netty.http.SecurityConstraintMapping</code> is provided out of the box, allowing to easily define inclusions and exclusions with roles.</p> </div> <div class="paragraph"> <p>For example, as shown below in the XML DSL, we define the constraint bean:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"> <bean id="constraint" class="org.apache.camel.component.netty.http.SecurityConstraintMapping"> |
| <!-- inclusions defines url -> roles restrictions --> |
| <!-- a * should be used for any role accepted (or even no roles) --> |
| <property name="inclusions"> |
| <map> |
| <entry key="/*" value="*"/> |
| <entry key="/admin/*" value="admin"/> |
| <entry key="/guest/*" value="admin,guest"/> |
| </map> |
| </property> |
| <!-- exclusions is used to define public urls, which requires no authentication --> |
| <property name="exclusions"> |
| <set> |
| <value>/public/*</value> |
| </set> |
| </property> |
| </bean></code></pre> </div> </div> <div class="paragraph"> <p>The constraint above is defined so that</p> </div> <div class="ulist"> <ul> <li> <p>access to /* is restricted and any roles are accepted (also if user has no roles)</p> </li> <li> <p>access to /admin/* requires the admin role</p> </li> <li> <p>access to /guest/* requires the admin or guest role</p> </li> <li> <p>access to /public/* is an exclusion that means no authentication is necessary, and is therefore public for everyone without logging in</p> </li> </ul> </div> <div class="paragraph"> <p>To use this constraint, we just need to refer to the bean id as shown below:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><route> |
| <from uri="netty-http:http://0.0.0.0:{{port}}/foo?matchOnUriPrefix=true&amp;securityConfiguration.realm=someRealm&amp;securityConfiguration.securityConstraint=#constraint"/> |
| ... |
| </route></code></pre> </div> </div> </div> </div> </div> </div> <div class="sect1"> <h2 id="_examples"><a class="anchor" href="#_examples"></a>Examples</h2> <div class="sectionbody"> <div class="paragraph"> <p>In the route below, we use Netty HTTP as an HTTP server, which returns a hardcoded <em>"Bye World"</em> message.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java"> from("netty-http:http://0.0.0.0:8080/foo") |
| .transform().constant("Bye World");</code></pre> </div> </div> <div class="paragraph"> <p>And we can call this HTTP server using Camel also, with the ProducerTemplate as shown below:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java"> String out = template.requestBody("netty-http:http://0.0.0.0:8080/foo", "Hello World", String.class); |
| System.out.println(out);</code></pre> </div> </div> <div class="paragraph"> <p>And we get <em>"Bye World"</em> as the output.</p> </div> <div class="sect2"> <h3 id="_how_do_i_let_netty_match_wildcards"><a class="anchor" href="#_how_do_i_let_netty_match_wildcards"></a>How do I let Netty match wildcards?</h3> <div class="paragraph"> <p>By default, Netty HTTP will only match on exact uri’s. But you can instruct Netty to match prefixes. For example</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">from("netty-http:http://0.0.0.0:8123/foo").to("mock:foo");</code></pre> </div> </div> <div class="paragraph"> <p>In the route above Netty HTTP will only match if the uri is an exact match, so it will match if you enter<br> <code>http://0.0.0.0:8123/foo</code> but not match if you do <code>http://0.0.0.0:8123/foo/bar</code>.</p> </div> <div class="paragraph"> <p>So if you want to enable wildcard matching, you do as follows:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">from("netty-http:http://0.0.0.0:8123/foo?matchOnUriPrefix=true").to("mock:foo");</code></pre> </div> </div> <div class="paragraph"> <p>So now Netty matches any endpoints with starts with <code>foo</code>.</p> </div> <div class="paragraph"> <p>To match <strong>any</strong> endpoint, you can do:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">from("netty-http:http://0.0.0.0:8123?matchOnUriPrefix=true").to("mock:foo");</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_using_multiple_routes_with_same_port"><a class="anchor" href="#_using_multiple_routes_with_same_port"></a>Using multiple routes with same port</h3> <div class="paragraph"> <p>In the same CamelContext you can have multiple routes from Netty HTTP that shares the same port (e.g., a <code>io.netty.bootstrap.ServerBootstrap</code> instance). Doing this requires a number of bootstrap options to be identical in the routes, as the routes will share the same <code>io.netty.bootstrap.ServerBootstrap</code> instance. The instance will be configured with the options from the first route created.</p> </div> <div class="paragraph"> <p>The options the routes must be identical configured is all the options defined in the <code>org.apache.camel.component.netty.NettyServerBootstrapConfiguration</code> configuration class. If you have configured another route with different options, Camel will throw an exception on startup, indicating the options are not identical. To mitigate this ensure all options are identical.</p> </div> <div class="paragraph"> <p>Here is an example with two routes that share the same port.</p> </div> <div class="paragraph"> <p><strong>Two routes sharing the same port</strong></p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">from("netty-http:http://0.0.0.0:{{port}}/foo") |
| .to("mock:foo") |
| .transform().constant("Bye World"); |
| |
| from("netty-http:http://0.0.0.0:{{port}}/bar") |
| .to("mock:bar") |
| .transform().constant("Bye Camel");</code></pre> </div> </div> <div class="paragraph"> <p>And here is an example of a mis-configured second route that does not have identical <code>org.apache.camel.component.netty.NettyServerBootstrapConfiguration</code> option as the first route. This will cause Camel to fail on startup.</p> </div> <div class="paragraph"> <p><strong>Two routes are sharing the same port, but the second route is misconfigured and will fail on starting</strong></p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">from("netty-http:http://0.0.0.0:{{port}}/foo") |
| .to("mock:foo") |
| .transform().constant("Bye World"); |
| |
| // we cannot have a 2nd route on the same port with SSL enabled, when the 1st route is NOT |
| from("netty-http:http://0.0.0.0:{{port}}/bar?ssl=true") |
| .to("mock:bar") |
| .transform().constant("Bye Camel");</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_reusing_the_same_server_bootstrap_configuration_with_multiple_routes"><a class="anchor" href="#_reusing_the_same_server_bootstrap_configuration_with_multiple_routes"></a>Reusing the same server bootstrap configuration with multiple routes</h3> <div class="paragraph"> <p>By configuring the common server bootstrap option in a single instance of a <code>org.apache.camel.component.netty.NettyServerBootstrapConfiguration</code> type, we can use the <code>bootstrapConfiguration</code> option on the Netty HTTP consumers to refer and reuse the same options across all consumers.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><bean id="nettyHttpBootstrapOptions" class="org.apache.camel.component.netty.NettyServerBootstrapConfiguration"> |
| <property name="backlog" value="200"/> |
| <property name="connectionTimeout" value="20000"/> |
| <property name="workerCount" value="16"/> |
| </bean></code></pre> </div> </div> <div class="paragraph"> <p>And in the routes you refer to this option as shown below</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><route> |
| <from uri="netty-http:http://0.0.0.0:{{port}}/foo?bootstrapConfiguration=#nettyHttpBootstrapOptions"/> |
| ... |
| </route> |
| |
| <route> |
| <from uri="netty-http:http://0.0.0.0:{{port}}/bar?bootstrapConfiguration=#nettyHttpBootstrapOptions"/> |
| ... |
| </route> |
| |
| <route> |
| <from uri="netty-http:http://0.0.0.0:{{port}}/beer?bootstrapConfiguration=#nettyHttpBootstrapOptions"/> |
| ... |
| </route></code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_implementing_a_reverse_proxy"><a class="anchor" href="#_implementing_a_reverse_proxy"></a>Implementing a reverse proxy</h3> <div class="paragraph"> <p>Netty HTTP component can act as a reverse proxy, in that case <code>Exchange.HTTP_SCHEME</code>, <code>Exchange.HTTP_HOST</code> and <code>Exchange.HTTP_PORT</code> headers are populated from the absolute URL received on the request line of the HTTP request.</p> </div> <div class="paragraph"> <p>Here’s an example of an HTTP proxy that simply transforms the response from the origin server to uppercase.</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">from("netty-http:proxy://0.0.0.0:8080") |
| .toD("netty-http:" |
| + "${headers." + Exchange.HTTP_SCHEME + "}://" |
| + "${headers." + Exchange.HTTP_HOST + "}:" |
| + "${headers." + Exchange.HTTP_PORT + "}") |
| .process(this::processResponse); |
| |
| void processResponse(final Exchange exchange) { |
| final NettyHttpMessage message = exchange.getIn(NettyHttpMessage.class); |
| final FullHttpResponse response = message.getHttpResponse(); |
| |
| final ByteBuf buf = response.content(); |
| final String string = buf.toString(StandardCharsets.UTF_8); |
| |
| buf.resetWriterIndex(); |
| ByteBufUtil.writeUtf8(buf, string.toUpperCase(Locale.US)); |
| }</code></pre> </div> </div> </div> </div> </div> <div class="sect1"> <h2 id="_spring_boot_auto_configuration"><a class="anchor" href="#_spring_boot_auto_configuration"></a>Spring Boot Auto-Configuration</h2> <div class="sectionbody"> <div class="paragraph"> <p>When using netty-http with Spring Boot make sure to use the following Maven dependency to have support for auto configuration:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"><dependency> |
| <groupId>org.apache.camel.springboot</groupId> |
| <artifactId>camel-netty-http-starter</artifactId> |
| <version>x.x.x</version> |
| <!-- use the same version as your Camel core version --> |
| </dependency></code></pre> </div> </div> <div class="paragraph"> <p>The component supports 68 options, which are listed below.</p> </div> <div class="table-wrapper"><table class="tableblock frame-all grid-all stretch"> <colgroup> <col> <col> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Name</th> <th class="tableblock halign-left valign-top">Description</th> <th class="tableblock halign-center valign-top">Default</th> <th class="tableblock halign-left valign-top">Type</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_allow-serialized-headers"></a> <a href="#_sb_option_camel_component_netty-http_allow-serialized-headers" class="anchor"></a><strong>camel.component.netty-http.allow-serialized-headers</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Only used for TCP when transferExchange is true. When set to true, serializable objects in headers and properties will be added to the exchange. Otherwise Camel will exclude any non-serializable objects and log it at WARN level.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_autowired-enabled"></a> <a href="#_sb_option_camel_component_netty-http_autowired-enabled" class="anchor"></a><strong>camel.component.netty-http.autowired-enabled</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">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.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_backlog"></a> <a href="#_sb_option_camel_component_netty-http_backlog" class="anchor"></a><strong>camel.component.netty-http.backlog</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Allows to configure a backlog for netty consumer (server). Note the backlog is just a best effort depending on the OS. Setting this option to a value such as 200, 500 or 1000, tells the TCP stack how long the accept queue can be If this option is not configured, then the backlog depends on OS setting.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Integer</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_boss-count"></a> <a href="#_sb_option_camel_component_netty-http_boss-count" class="anchor"></a><strong>camel.component.netty-http.boss-count</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">When netty works on nio mode, it uses default bossCount parameter from Netty, which is 1. User can use this option to override the default bossCount from Netty.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">1</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Integer</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_boss-group"></a> <a href="#_sb_option_camel_component_netty-http_boss-group" class="anchor"></a><strong>camel.component.netty-http.boss-group</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Set the BossGroup which could be used for handling the new connection of the server side across the NettyEndpoint. The option is a io.netty.channel.EventLoopGroup type.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">EventLoopGroup</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_bridge-error-handler"></a> <a href="#_sb_option_camel_component_netty-http_bridge-error-handler" class="anchor"></a><strong>camel.component.netty-http.bridge-error-handler</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions (if possible) occurred while the Camel consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. Important: This is only possible if the 3rd party component allows Camel to be alerted if an exception was thrown. Some components handle this internally only, and therefore bridgeErrorHandler is not possible. In other situations we may improve the Camel component to hook into the 3rd party component and make this possible for future releases. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_channel-group"></a> <a href="#_sb_option_camel_component_netty-http_channel-group" class="anchor"></a><strong>camel.component.netty-http.channel-group</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">To use an explicit ChannelGroup. The option is a io.netty.channel.group.ChannelGroup type.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">ChannelGroup</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_client-initializer-factory"></a> <a href="#_sb_option_camel_component_netty-http_client-initializer-factory" class="anchor"></a><strong>camel.component.netty-http.client-initializer-factory</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">To use a custom ClientInitializerFactory. The option is a org.apache.camel.component.netty.ClientInitializerFactory type.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">ClientInitializerFactory</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_configuration"></a> <a href="#_sb_option_camel_component_netty-http_configuration" class="anchor"></a><strong>camel.component.netty-http.configuration</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">To use the NettyConfiguration as configuration when creating endpoints. The option is a org.apache.camel.component.netty.NettyConfiguration type.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">NettyConfiguration</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_connect-timeout"></a> <a href="#_sb_option_camel_component_netty-http_connect-timeout" class="anchor"></a><strong>camel.component.netty-http.connect-timeout</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Time to wait for a socket connection to be available. Value is in milliseconds.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">10000</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Integer</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_correlation-manager"></a> <a href="#_sb_option_camel_component_netty-http_correlation-manager" class="anchor"></a><strong>camel.component.netty-http.correlation-manager</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">To use a custom correlation manager to manage how request and reply messages are mapped when using request/reply with the netty producer. This should only be used if you have a way to map requests together with replies such as if there is correlation ids in both the request and reply messages. This can be used if you want to multiplex concurrent messages on the same channel (aka connection) in netty. When doing this you must have a way to correlate the request and reply messages so you can store the right reply on the inflight Camel Exchange before its continued routed. We recommend extending the TimeoutCorrelationManagerSupport when you build custom correlation managers. This provides support for timeout and other complexities you otherwise would need to implement as well. See also the producerPoolEnabled option for more details. The option is a org.apache.camel.component.netty.NettyCamelStateCorrelationManager type.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">NettyCamelStateCorrelationManager</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_decoders"></a> <a href="#_sb_option_camel_component_netty-http_decoders" class="anchor"></a><strong>camel.component.netty-http.decoders</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">A list of decoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_disconnect"></a> <a href="#_sb_option_camel_component_netty-http_disconnect" class="anchor"></a><strong>camel.component.netty-http.disconnect</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Whether or not to disconnect(close) from Netty Channel right after use.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_disconnect-on-no-reply"></a> <a href="#_sb_option_camel_component_netty-http_disconnect-on-no-reply" class="anchor"></a><strong>camel.component.netty-http.disconnect-on-no-reply</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">If sync is enabled then this option dictates NettyConsumer if it should disconnect where there is no reply to send back.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_enabled"></a> <a href="#_sb_option_camel_component_netty-http_enabled" class="anchor"></a><strong>camel.component.netty-http.enabled</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Whether to enable auto configuration of the netty-http component. This is enabled by default.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_enabled-protocols"></a> <a href="#_sb_option_camel_component_netty-http_enabled-protocols" class="anchor"></a><strong>camel.component.netty-http.enabled-protocols</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Which protocols to enable when using SSL.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">TLSv1.2,TLSv1.3</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_encoders"></a> <a href="#_sb_option_camel_component_netty-http_encoders" class="anchor"></a><strong>camel.component.netty-http.encoders</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">A list of encoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_executor-service"></a> <a href="#_sb_option_camel_component_netty-http_executor-service" class="anchor"></a><strong>camel.component.netty-http.executor-service</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">To use the given custom EventExecutorGroup. The option is a io.netty.util.concurrent.EventExecutorGroup type.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">EventExecutorGroup</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_header-filter-strategy"></a> <a href="#_sb_option_camel_component_netty-http_header-filter-strategy" class="anchor"></a><strong>camel.component.netty-http.header-filter-strategy</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers. The option is a org.apache.camel.spi.HeaderFilterStrategy type.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">HeaderFilterStrategy</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_hostname-verification"></a> <a href="#_sb_option_camel_component_netty-http_hostname-verification" class="anchor"></a><strong>camel.component.netty-http.hostname-verification</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">To enable/disable hostname verification on SSLEngine.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_keep-alive"></a> <a href="#_sb_option_camel_component_netty-http_keep-alive" class="anchor"></a><strong>camel.component.netty-http.keep-alive</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Setting to ensure socket is not closed due to inactivity.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_key-store-format"></a> <a href="#_sb_option_camel_component_netty-http_key-store-format" class="anchor"></a><strong>camel.component.netty-http.key-store-format</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Keystore format to be used for payload encryption. Defaults to JKS if not set.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_key-store-resource"></a> <a href="#_sb_option_camel_component_netty-http_key-store-resource" class="anchor"></a><strong>camel.component.netty-http.key-store-resource</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Client side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_lazy-channel-creation"></a> <a href="#_sb_option_camel_component_netty-http_lazy-channel-creation" class="anchor"></a><strong>camel.component.netty-http.lazy-channel-creation</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Channels can be lazily created to avoid exceptions, if the remote server is not up and running when the Camel producer is started.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_lazy-start-producer"></a> <a href="#_sb_option_camel_component_netty-http_lazy-start-producer" class="anchor"></a><strong>camel.component.netty-http.lazy-start-producer</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel’s routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_maximum-pool-size"></a> <a href="#_sb_option_camel_component_netty-http_maximum-pool-size" class="anchor"></a><strong>camel.component.netty-http.maximum-pool-size</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Sets a maximum thread pool size for the netty consumer ordered thread pool. The default size is 2 x cpu_core plus 1. Setting this value to eg 10 will then use 10 threads unless 2 x cpu_core plus 1 is a higher value, which then will override and be used. For example if there are 8 cores, then the consumer thread pool will be 17. This thread pool is used to route messages received from Netty by Camel. We use a separate thread pool to ensure ordering of messages and also in case some messages will block, then nettys worker threads (event loop) wont be affected.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Integer</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_mute-exception"></a> <a href="#_sb_option_camel_component_netty-http_mute-exception" class="anchor"></a><strong>camel.component.netty-http.mute-exception</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">If enabled and an Exchange failed processing on the consumer side the response’s body won’t contain the exception’s stack trace.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_native-transport"></a> <a href="#_sb_option_camel_component_netty-http_native-transport" class="anchor"></a><strong>camel.component.netty-http.native-transport</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Whether to use native transport instead of NIO. Native transport takes advantage of the host operating system and is only supported on some platforms. You need to add the netty JAR for the host operating system you are using. See more details at: <a href="http://netty.io/wiki/native-transports.html" class="bare">http://netty.io/wiki/native-transports.html</a>.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_need-client-auth"></a> <a href="#_sb_option_camel_component_netty-http_need-client-auth" class="anchor"></a><strong>camel.component.netty-http.need-client-auth</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Configures whether the server needs client authentication when using SSL.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_netty-http-binding"></a> <a href="#_sb_option_camel_component_netty-http_netty-http-binding" class="anchor"></a><strong>camel.component.netty-http.netty-http-binding</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">To use a custom org.apache.camel.component.netty.http.NettyHttpBinding for binding to/from Netty and Camel Message API. The option is a org.apache.camel.component.netty.http.NettyHttpBinding type.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">NettyHttpBinding</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_netty-server-bootstrap-factory"></a> <a href="#_sb_option_camel_component_netty-http_netty-server-bootstrap-factory" class="anchor"></a><strong>camel.component.netty-http.netty-server-bootstrap-factory</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">To use a custom NettyServerBootstrapFactory. The option is a org.apache.camel.component.netty.NettyServerBootstrapFactory type.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">NettyServerBootstrapFactory</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_no-reply-log-level"></a> <a href="#_sb_option_camel_component_netty-http_no-reply-log-level" class="anchor"></a><strong>camel.component.netty-http.no-reply-log-level</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">If sync is enabled this option dictates NettyConsumer which logging level to use when logging a there is no reply to send back.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">warn</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">LoggingLevel</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_options"></a> <a href="#_sb_option_camel_component_netty-http_options" class="anchor"></a><strong>camel.component.netty-http.options</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Allows to configure additional netty options using option. as prefix. For example option.child.keepAlive=false. See the Netty documentation for possible options that can be used. This is a multi-value option with prefix: option.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Map</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_passphrase"></a> <a href="#_sb_option_camel_component_netty-http_passphrase" class="anchor"></a><strong>camel.component.netty-http.passphrase</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Password setting to use in order to encrypt/decrypt payloads sent using SSH.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_producer-pool-block-when-exhausted"></a> <a href="#_sb_option_camel_component_netty-http_producer-pool-block-when-exhausted" class="anchor"></a><strong>camel.component.netty-http.producer-pool-block-when-exhausted</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Sets the value for the blockWhenExhausted configuration attribute. It determines whether to block when the borrowObject() method is invoked when the pool is exhausted (the maximum number of active objects has been reached).</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_producer-pool-enabled"></a> <a href="#_sb_option_camel_component_netty-http_producer-pool-enabled" class="anchor"></a><strong>camel.component.netty-http.producer-pool-enabled</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Whether producer pool is enabled or not. Important: If you turn this off then a single shared connection is used for the producer, also if you are doing request/reply. That means there is a potential issue with interleaved responses if replies comes back out-of-order. Therefore you need to have a correlation id in both the request and reply messages so you can properly correlate the replies to the Camel callback that is responsible for continue processing the message in Camel. To do this you need to implement NettyCamelStateCorrelationManager as correlation manager and configure it via the correlationManager option. See also the correlationManager option for more details.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_producer-pool-max-idle"></a> <a href="#_sb_option_camel_component_netty-http_producer-pool-max-idle" class="anchor"></a><strong>camel.component.netty-http.producer-pool-max-idle</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Sets the cap on the number of idle instances in the pool.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">100</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Integer</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_producer-pool-max-total"></a> <a href="#_sb_option_camel_component_netty-http_producer-pool-max-total" class="anchor"></a><strong>camel.component.netty-http.producer-pool-max-total</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Sets the cap on the number of objects that can be allocated by the pool (checked out to clients, or idle awaiting checkout) at a given time. Use a negative value for no limit. Be careful to not set this value too low (such as 1) as the pool must have space to create a producer such as when performing retries. Be mindful that the option producerPoolBlockWhenExhausted is default true, and the pool will then block when there is no space, which can lead to the application to hang.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">-1</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Integer</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_producer-pool-max-wait"></a> <a href="#_sb_option_camel_component_netty-http_producer-pool-max-wait" class="anchor"></a><strong>camel.component.netty-http.producer-pool-max-wait</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Sets the maximum duration (value in millis) the borrowObject() method should block before throwing an exception when the pool is exhausted and producerPoolBlockWhenExhausted is true. When less than 0, the borrowObject() method may block indefinitely.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">-1</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Long</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_producer-pool-min-evictable-idle"></a> <a href="#_sb_option_camel_component_netty-http_producer-pool-min-evictable-idle" class="anchor"></a><strong>camel.component.netty-http.producer-pool-min-evictable-idle</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Sets the minimum amount of time (value in millis) an object may sit idle in the pool before it is eligible for eviction by the idle object evictor.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">300000</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Long</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_producer-pool-min-idle"></a> <a href="#_sb_option_camel_component_netty-http_producer-pool-min-idle" class="anchor"></a><strong>camel.component.netty-http.producer-pool-min-idle</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Sets the minimum number of instances allowed in the producer pool before the evictor thread (if active) spawns new objects.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Integer</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_receive-buffer-size"></a> <a href="#_sb_option_camel_component_netty-http_receive-buffer-size" class="anchor"></a><strong>camel.component.netty-http.receive-buffer-size</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The TCP/UDP buffer sizes to be used during inbound communication. Size is bytes.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">65536</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Integer</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_receive-buffer-size-predictor"></a> <a href="#_sb_option_camel_component_netty-http_receive-buffer-size-predictor" class="anchor"></a><strong>camel.component.netty-http.receive-buffer-size-predictor</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Configures the buffer size predictor. See details at Jetty documentation and this mail thread.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Integer</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_request-timeout"></a> <a href="#_sb_option_camel_component_netty-http_request-timeout" class="anchor"></a><strong>camel.component.netty-http.request-timeout</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Allows to use a timeout for the Netty producer when calling a remote server. By default no timeout is in use. The value is in milli seconds, so eg 30000 is 30 seconds. The requestTimeout is using Netty’s ReadTimeoutHandler to trigger the timeout.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Long</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_reuse-address"></a> <a href="#_sb_option_camel_component_netty-http_reuse-address" class="anchor"></a><strong>camel.component.netty-http.reuse-address</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Setting to facilitate socket multiplexing.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_reuse-channel"></a> <a href="#_sb_option_camel_component_netty-http_reuse-channel" class="anchor"></a><strong>camel.component.netty-http.reuse-channel</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">This option allows producers and consumers (in client mode) to reuse the same Netty Channel for the lifecycle of processing the Exchange. This is useful if you need to call a server multiple times in a Camel route and want to use the same network connection. When using this, the channel is not returned to the connection pool until the Exchange is done; or disconnected if the disconnect option is set to true. The reused Channel is stored on the Exchange as an exchange property with the key CamelNettyChannel which allows you to obtain the channel during routing and use it as well.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_security-configuration"></a> <a href="#_sb_option_camel_component_netty-http_security-configuration" class="anchor"></a><strong>camel.component.netty-http.security-configuration</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Refers to a org.apache.camel.component.netty.http.NettyHttpSecurityConfiguration for configuring secure web resources. The option is a org.apache.camel.component.netty.http.NettyHttpSecurityConfiguration type.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">NettyHttpSecurityConfiguration</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_security-provider"></a> <a href="#_sb_option_camel_component_netty-http_security-provider" class="anchor"></a><strong>camel.component.netty-http.security-provider</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Security provider to be used for payload encryption. Defaults to SunX509 if not set.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_send-buffer-size"></a> <a href="#_sb_option_camel_component_netty-http_send-buffer-size" class="anchor"></a><strong>camel.component.netty-http.send-buffer-size</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The TCP/UDP buffer sizes to be used during outbound communication. Size is bytes.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">65536</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Integer</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_server-closed-channel-exception-caught-log-level"></a> <a href="#_sb_option_camel_component_netty-http_server-closed-channel-exception-caught-log-level" class="anchor"></a><strong>camel.component.netty-http.server-closed-channel-exception-caught-log-level</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">If the server (NettyConsumer) catches an java.nio.channels.ClosedChannelException then its logged using this logging level. This is used to avoid logging the closed channel exceptions, as clients can disconnect abruptly and then cause a flood of closed exceptions in the Netty server.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">debug</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">LoggingLevel</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_server-exception-caught-log-level"></a> <a href="#_sb_option_camel_component_netty-http_server-exception-caught-log-level" class="anchor"></a><strong>camel.component.netty-http.server-exception-caught-log-level</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">If the server (NettyConsumer) catches an exception then its logged using this logging level.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">warn</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">LoggingLevel</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_server-initializer-factory"></a> <a href="#_sb_option_camel_component_netty-http_server-initializer-factory" class="anchor"></a><strong>camel.component.netty-http.server-initializer-factory</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">To use a custom ServerInitializerFactory. The option is a org.apache.camel.component.netty.ServerInitializerFactory type.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">ServerInitializerFactory</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_shutdown-timeout"></a> <a href="#_sb_option_camel_component_netty-http_shutdown-timeout" class="anchor"></a><strong>camel.component.netty-http.shutdown-timeout</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Shutdown await timeout in milliseconds.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">100</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Integer</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_ssl"></a> <a href="#_sb_option_camel_component_netty-http_ssl" class="anchor"></a><strong>camel.component.netty-http.ssl</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Setting to specify whether SSL encryption is applied to this endpoint.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_ssl-client-cert-headers"></a> <a href="#_sb_option_camel_component_netty-http_ssl-client-cert-headers" class="anchor"></a><strong>camel.component.netty-http.ssl-client-cert-headers</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">When enabled and in SSL mode, then the Netty consumer will enrich the Camel Message with headers having information about the client certificate such as subject name, issuer name, serial number, and the valid date range.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_ssl-context-parameters"></a> <a href="#_sb_option_camel_component_netty-http_ssl-context-parameters" class="anchor"></a><strong>camel.component.netty-http.ssl-context-parameters</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">To configure security using SSLContextParameters. The option is a org.apache.camel.support.jsse.SSLContextParameters type.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">SSLContextParameters</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_ssl-handler"></a> <a href="#_sb_option_camel_component_netty-http_ssl-handler" class="anchor"></a><strong>camel.component.netty-http.ssl-handler</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Reference to a class that could be used to return an SSL Handler. The option is a io.netty.handler.ssl.SslHandler type.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">SslHandler</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_sync"></a> <a href="#_sb_option_camel_component_netty-http_sync" class="anchor"></a><strong>camel.component.netty-http.sync</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Setting to set endpoint as one-way (false) or request-response (true).</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_tcp-no-delay"></a> <a href="#_sb_option_camel_component_netty-http_tcp-no-delay" class="anchor"></a><strong>camel.component.netty-http.tcp-no-delay</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Setting to improve TCP protocol performance.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_transfer-exchange"></a> <a href="#_sb_option_camel_component_netty-http_transfer-exchange" class="anchor"></a><strong>camel.component.netty-http.transfer-exchange</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body, Out body, fault body, In headers, Out headers, fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_trust-store-resource"></a> <a href="#_sb_option_camel_component_netty-http_trust-store-resource" class="anchor"></a><strong>camel.component.netty-http.trust-store-resource</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Server side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_unix-domain-socket-path"></a> <a href="#_sb_option_camel_component_netty-http_unix-domain-socket-path" class="anchor"></a><strong>camel.component.netty-http.unix-domain-socket-path</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Path to unix domain socket to use instead of inet socket. Host and port parameters will not be used, however required. It is ok to set dummy values for them. Must be used with nativeTransport=true and clientMode=false.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">String</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_use-global-ssl-context-parameters"></a> <a href="#_sb_option_camel_component_netty-http_use-global-ssl-context-parameters" class="anchor"></a><strong>camel.component.netty-http.use-global-ssl-context-parameters</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Enable usage of global SSL context parameters.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_using-executor-service"></a> <a href="#_sb_option_camel_component_netty-http_using-executor-service" class="anchor"></a><strong>camel.component.netty-http.using-executor-service</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Whether to use ordered thread pool, to ensure events are processed orderly on the same channel.</p></td> <td class="tableblock halign-center valign-top"><p class="tableblock">true</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_worker-count"></a> <a href="#_sb_option_camel_component_netty-http_worker-count" class="anchor"></a><strong>camel.component.netty-http.worker-count</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">When netty works on nio mode, it uses default workerCount parameter from Netty (which is cpu_core_threads x 2). User can use this option to override the default workerCount from Netty.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Integer</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_worker-group"></a> <a href="#_sb_option_camel_component_netty-http_worker-group" class="anchor"></a><strong>camel.component.netty-http.worker-group</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">To use a explicit EventLoopGroup as the boss thread pool. For example to share a thread pool with multiple consumers or producers. By default each consumer or producer has their own worker pool with 2 x cpu count core threads. The option is a io.netty.channel.EventLoopGroup type.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">EventLoopGroup</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_key-store-file"></a> <a href="#_sb_option_camel_component_netty-http_key-store-file" class="anchor"></a><strong>camel.component.netty-http.key-store-file</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated</strong> Client side certificate keystore to be used for encryption.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">File</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock"><a id="_sb_option_camel_component_netty-http_trust-store-file"></a> <a href="#_sb_option_camel_component_netty-http_trust-store-file" class="anchor"></a><strong>camel.component.netty-http.trust-store-file</strong></p></td> <td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Deprecated</strong> Server side certificate keystore to be used for encryption.</p></td> <td class="tableblock halign-center valign-top"></td> <td class="tableblock halign-left valign-top"><p class="tableblock">File</p></td> </tr> </tbody> </table></div> </div> </div> </article> <aside class="toc sidebar" aria-label="Table of contents" data-title="Contents" data-levels="2"> <div class="toc-menu"></div> </aside> </div> </main> </div> <div class="footer-tools"> <a href="#top" title="Reach the top of the page">Back to top</a> </div> <footer> <div class="footer"> <figure class="logo"> <img src="../../_/img/logo-d-a567cee6fa.svg" class="logo-small mt-60" alt="Apache Camel Logo" aria-label="white silhouette of a camel in front of a sand dune"> </figure> <input id="footer-toggle-overview" type="checkbox" title="Show/Hide Overview section"> <dl> <dt><label for="footer-toggle-overview">Overview</label><label for="footer-toggle-overview">+</label></dt> <dd><a href="../../blog/">Blog</a></dd> <dd><a href="../../docs/">Documentation</a></dd> <dd><a href="../../community/support/">Community</a></dd> <dd><a href="../../download/">Download</a></dd> </dl> <input id="footer-toggle-documentation" type="checkbox" title="Show/Hide Documentation section"> <dl> <dt><label for="footer-toggle-documentation">Documentation</label><label for="footer-toggle-documentation">+</label></dt> <dd><a href="../../manual/">User Manual</a></dd> <dd><a href="../../components/next/index.html">Components</a></dd> <dd><a href="../../camel-k/next/">Camel-K</a></dd> <dd><a href="../../camel-kafka-connector/next/">Camel Kafka Connector</a></dd> <dd><a href="../../camel-quarkus/next/">Camel Quarkus</a></dd> <dd><a href="../../camel-spring-boot/next/">Camel Spring Boot</a></dd> <dd><a href="../../camel-karaf/3.22.x/">Camel Karaf</a></dd> <dd><a href="../../manual/faq/index.html">FAQ</a></dd> </dl> <input id="footer-toggle-community" type="checkbox" title="Show/Hide Community section"> <dl> <dt><label for="footer-toggle-community">Community</label><label for="footer-toggle-community">+</label></dt> <dd><a href="../../community/support/">Support</a></dd> <dd><a href="../../community/contributing/">Contributing</a></dd> <dd><a href="../../community/mailing-list/">Mailing Lists</a></dd> <dd><a href="../../community/user-stories/">User stories</a></dd> <dd><a href="../../community/articles/">Articles</a></dd> <dd><a href="../../community/books/">Books</a></dd> <dd><a href="../../community/team/">Team</a></dd> </dl> <input id="footer-toggle-about" type="checkbox" title="Show/Hide Acknowledgements section"> <dl> <dt><label for="footer-toggle-about">About</label><label for="footer-toggle-about">+</label></dt> <dd><a href="../../acknowledgments/">Acknowledgments</a></dd> <dd><a target="_blank" rel="noopener noreferrer nofollow" href="https://www.apache.org/events/current-event.html" title="Apache Events">Apache Events</a></dd> <dd><a target="_blank" rel="noopener noreferrer nofollow" href="https://www.apache.org/licenses/" title="License">License</a></dd> <dd><a target="_blank" rel="noopener noreferrer nofollow" href="https://www.apache.org/security/" title="Security">Security</a></dd> <dd><a target="_blank" rel="noopener noreferrer nofollow" href="https://www.apache.org/foundation/sponsorship.html" title="Sponsorship">Sponsorship</a></dd> <dd><a target="_blank" rel="noopener noreferrer nofollow" href="https://www.apache.org/foundation/thanks.html" title="Thanks">Thanks</a></dd> </dl> <p class="remark"> © 2004-2025 The <a href="https://apache.org">Apache Software Foundation</a>.<br> Apache Camel, Camel, Apache, the Apache feather logo, and the Apache Camel project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners. </p> <div class="resources"> <div class="context"> <a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a> </div> <div class="context"> <a target="_blank" rel="noopener noreferrer nofollow" href="https://www.apache.org/foundation/policies/conduct">Code of Conduct</a> </div> <div class="context"> <a href="../../sitemap/">Sitemap</a> </div> </div> <div class="footer-icons"> <a rel="noopener noreferrer nofollow" href="https://github.com/apache/camel/" title="Collaborate on GitHub"><svg class="brand-icon" focusable="false"><use xlink:href="../../_/img/brand-logos-f2e689f4d4.svg#github"/></svg></a> <a rel="noopener noreferrer nofollow" href="https://camel.zulipchat.com" title="Chat on Zulip"><svg class="brand-icon" focusable="false"><use xlink:href="../../_/img/brand-logos-f2e689f4d4.svg#zulip"/></svg></a> <a rel="noopener noreferrer nofollow" href="https://twitter.com/ApacheCamel" title="Follow Apache Camel on Twitter"><svg class="brand-icon" focusable="false"><use xlink:href="../../_/img/brand-logos-f2e689f4d4.svg#twitter"/></svg></a> <a rel="noopener noreferrer nofollow" href="https://www.linkedin.com/groups/2447439/" title="Apache Camel group on Linkedin"><svg class="brand-icon" focusable="false"><use xlink:href="../../_/img/brand-logos-f2e689f4d4.svg#linkedin"/></svg></a> </div> </div> </footer> <script src="../../_/js/vendor/algoliasearch-bad45193e2.js"></script> <script src="../../_/js/site-c215fb6972.js"></script> <script async src="../../_/js/vendor/highlight-621a10fe1b.js"></script> <script async src="../../_/js/vendor/svg4everybody-a0c573f2b9.js"></script> <script async src="../../_/js/vendor/tabs-5aea11bcf5.js" data-sync-storage-key="preferred-tab"></script> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "Organization", "name": "Apache Camel", "url": "https://camel.apache.org", "sameAs": [ "https://twitter.com/ApacheCamel" ], "logo": "../../_/img/logo-d-a567cee6fa.svg", "description": "Apache Camel ™ is a versatile open-source integration framework based on known Enterprise Integration Patterns. Camel empowers you to define routing and mediation rules in a variety of domain-specific languages, including a Java-based Fluent API, Spring or Blueprint XML Configuration files, and a Scala DSL." } </script> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "BreadcrumbList", "itemListElement": [{ "@type": "ListItem", "position": 1, "name": "Apache Camel", "item": "https://camel.apache.org/" }, { "@type": "ListItem", "position": 2, "name": "Camel Components", "item": "https://camel.apache.org/components/4.10.x/index.html" }, { "@type": "ListItem", "position": 3, "name": "Next (Pre-release)", "item": "https://camel.apache.org/components/next/index.html" }, { "@type": "ListItem", "position": 4, "name": "Components", "item": "https://camel.apache.org/components/next/index.html" }, { "@type": "ListItem", "position": 5, "name": "Netty HTTP", "item": "https://camel.apache.org/components/next/netty-http-component.html" }] } </script> </body> </html> |