You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by gn...@apache.org on 2019/06/12 20:37:10 UTC

[camel] 02/02: Use a different approach to keep a single method and split advanced options in separate interfaces

This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch endpoint-dsl
in repository https://gitbox.apache.org/repos/asf/camel.git

commit c19d2fee312045fa066ee18f3511f8f98921260f
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Jun 12 22:36:35 2019 +0200

    Use a different approach to keep a single method and split advanced options in separate interfaces
---
 .../apache/camel/builder/EndpointRouteBuilder.java |    4 +-
 .../camel/model/AbstractEndpointBuilder.java       |    3 +
 .../camel/model/EndpointConsumerBuilder.java       |    2 +
 .../camel/model/EndpointProducerBuilder.java       |    2 +
 .../camel/model/endpoint/AMQPEndpointBuilder.java  | 2329 ----------
 .../model/endpoint/AMQPEndpointBuilderFactory.java | 4637 ++++++++++++++++++
 .../camel/model/endpoint/AS2EndpointBuilder.java   |  668 ---
 .../model/endpoint/AS2EndpointBuilderFactory.java  | 1700 +++++++
 .../model/endpoint/ActiveMQEndpointBuilder.java    | 2347 ----------
 .../endpoint/ActiveMQEndpointBuilderFactory.java   | 4649 +++++++++++++++++++
 ...Builder.java => AhcEndpointBuilderFactory.java} |  307 +-
 .../camel/model/endpoint/ApnsEndpointBuilder.java  |  565 ---
 ...uilder.java => ApnsEndpointBuilderFactory.java} |  802 ++--
 .../model/endpoint/AsteriskEndpointBuilder.java    |  272 --
 .../endpoint/AsteriskEndpointBuilderFactory.java   |  464 ++
 .../camel/model/endpoint/AtmosEndpointBuilder.java |  323 --
 .../endpoint/AtmosEndpointBuilderFactory.java      |  681 +++
 .../AtmosphereWebsocketEndpointBuilder.java        |  662 ---
 .../AtmosphereWebsocketEndpointBuilderFactory.java | 1358 ++++++
 .../camel/model/endpoint/AtomEndpointBuilder.java  |  674 ---
 .../model/endpoint/AtomEndpointBuilderFactory.java |  260 ++
 .../model/endpoint/AtomixMapEndpointBuilder.java   |  489 --
 .../endpoint/AtomixMapEndpointBuilderFactory.java  | 1192 +++++
 .../endpoint/AtomixMessagingEndpointBuilder.java   |  500 --
 .../AtomixMessagingEndpointBuilderFactory.java     | 1223 +++++
 .../endpoint/AtomixMultiMapEndpointBuilder.java    |  471 --
 .../AtomixMultiMapEndpointBuilderFactory.java      |  413 ++
 .../model/endpoint/AtomixQueueEndpointBuilder.java |  452 --
 .../AtomixQueueEndpointBuilderFactory.java         | 1082 +++++
 .../model/endpoint/AtomixSetEndpointBuilder.java   |  469 --
 .../endpoint/AtomixSetEndpointBuilderFactory.java  | 1132 +++++
 .../model/endpoint/AtomixValueEndpointBuilder.java |  470 --
 .../AtomixValueEndpointBuilderFactory.java         | 1136 +++++
 .../camel/model/endpoint/AvroEndpointBuilder.java  |  354 --
 .../model/endpoint/AvroEndpointBuilderFactory.java |  789 ++++
 ...uilder.java => BeanEndpointBuilderFactory.java} |  112 +-
 ...va => BeanValidatorEndpointBuilderFactory.java} |  145 +-
 .../model/endpoint/BeanstalkEndpointBuilder.java   |  721 ---
 .../endpoint/BeanstalkEndpointBuilderFactory.java  | 1068 +++++
 .../model/endpoint/BlobServiceEndpointBuilder.java |  508 --
 .../BlobServiceEndpointBuilderFactory.java         | 1024 ++++
 .../model/endpoint/BonitaEndpointBuilder.java      |  259 --
 .../endpoint/BonitaEndpointBuilderFactory.java     |  185 +
 .../camel/model/endpoint/BoxEndpointBuilder.java   |  451 --
 .../model/endpoint/BoxEndpointBuilderFactory.java  | 1075 +++++
 .../model/endpoint/BraintreeEndpointBuilder.java   |  367 --
 .../endpoint/BraintreeEndpointBuilderFactory.java  |  822 ++++
 .../model/endpoint/BrowseEndpointBuilder.java      |  216 -
 .../endpoint/BrowseEndpointBuilderFactory.java     |  354 ++
 ...tBuilder.java => CMEndpointBuilderFactory.java} |  119 +-
 .../camel/model/endpoint/CMISEndpointBuilder.java  |  353 --
 .../model/endpoint/CMISEndpointBuilderFactory.java |  721 +++
 .../endpoint/CaffeineCacheEndpointBuilder.java     |  519 ---
 .../CaffeineCacheEndpointBuilderFactory.java       |  804 ++++
 .../endpoint/CaffeineLoadCacheEndpointBuilder.java |  524 ---
 .../CaffeineLoadCacheEndpointBuilderFactory.java   |  813 ++++
 .../model/endpoint/CassandraEndpointBuilder.java   |  753 ---
 .../endpoint/CassandraEndpointBuilderFactory.java  | 1289 ++++++
 ....java => ChatScriptEndpointBuilderFactory.java} |  156 +-
 ...ilder.java => ChunkEndpointBuilderFactory.java} |  123 +-
 ...lder.java => CinderEndpointBuilderFactory.java} |  137 +-
 ...ilder.java => ClassEndpointBuilderFactory.java} |  112 +-
 .../model/endpoint/ClientEndpointBuilder.java      |  534 ---
 .../endpoint/ClientEndpointBuilderFactory.java     | 1306 ++++++
 .../camel/model/endpoint/CoAPEndpointBuilder.java  |  380 --
 .../model/endpoint/CoAPEndpointBuilderFactory.java |  846 ++++
 .../model/endpoint/CometdEndpointBuilder.java      |  461 --
 .../endpoint/CometdEndpointBuilderFactory.java     | 1024 ++++
 .../model/endpoint/ConsulEndpointBuilder.java      |  219 -
 .../endpoint/ConsulEndpointBuilderFactory.java     |  357 ++
 ....java => ControlBusEndpointBuilderFactory.java} |  146 +-
 .../camel/model/endpoint/CordaEndpointBuilder.java |  225 -
 .../endpoint/CordaEndpointBuilderFactory.java      |  395 ++
 .../model/endpoint/CouchDbEndpointBuilder.java     |  361 --
 .../endpoint/CouchDbEndpointBuilderFactory.java    |  650 +++
 .../model/endpoint/CouchbaseEndpointBuilder.java   | 1007 ----
 .../endpoint/CouchbaseEndpointBuilderFactory.java  | 1646 +++++++
 ...r.java => CryptoCmsEndpointBuilderFactory.java} |  310 +-
 ...tBuilder.java => CwEndpointBuilderFactory.java} |  188 +-
 .../camel/model/endpoint/CxfEndpointBuilder.java   |  776 ----
 .../model/endpoint/CxfEndpointBuilderFactory.java  | 1905 ++++++++
 .../camel/model/endpoint/CxfRsEndpointBuilder.java |  804 ----
 .../endpoint/CxfRsEndpointBuilderFactory.java      | 1725 +++++++
 ....java => DataFormatEndpointBuilderFactory.java} |   87 +-
 ...der.java => DataSetEndpointBuilderFactory.java} |  545 ++-
 .../model/endpoint/DataSetTestEndpointBuilder.java |  453 --
 .../DataSetTestEndpointBuilderFactory.java         |  195 +
 ...Builder.java => DdbEndpointBuilderFactory.java} |  216 +-
 .../model/endpoint/DdbStreamEndpointBuilder.java   |  702 ---
 .../endpoint/DdbStreamEndpointBuilderFactory.java  |  175 +
 ...ava => DigitalOceanEndpointBuilderFactory.java} |  252 +-
 ...=> DigitalSignatureEndpointBuilderFactory.java} |  309 +-
 .../model/endpoint/DirectEndpointBuilder.java      |  276 --
 .../endpoint/DirectEndpointBuilderFactory.java     |  416 ++
 .../model/endpoint/DirectVmEndpointBuilder.java    |  325 --
 .../endpoint/DirectVmEndpointBuilderFactory.java   |  509 ++
 .../model/endpoint/DisruptorEndpointBuilder.java   |  441 --
 .../endpoint/DisruptorEndpointBuilderFactory.java  |  639 +++
 .../model/endpoint/DisruptorVmEndpointBuilder.java |  442 --
 .../DisruptorVmEndpointBuilderFactory.java         |  639 +++
 ...Builder.java => DnsEndpointBuilderFactory.java} |   86 +-
 .../model/endpoint/DockerEndpointBuilder.java      |  462 --
 .../endpoint/DockerEndpointBuilderFactory.java     | 1125 +++++
 ...ilder.java => DozerEndpointBuilderFactory.java} |  127 +-
 ...ilder.java => DrillEndpointBuilderFactory.java} |  118 +-
 .../model/endpoint/DropboxEndpointBuilder.java     |  352 --
 .../endpoint/DropboxEndpointBuilderFactory.java    |  743 +++
 .../camel/model/endpoint/EC2EndpointBuilder.java   |  221 -
 ...Builder.java => EC2EndpointBuilderFactory.java} |   96 +-
 .../camel/model/endpoint/ECSEndpointBuilder.java   |  215 -
 ...Builder.java => ECSEndpointBuilderFactory.java} |   96 +-
 .../camel/model/endpoint/EKSEndpointBuilder.java   |  215 -
 ...Builder.java => EKSEndpointBuilderFactory.java} |   96 +-
 .../model/endpoint/EhcacheEndpointBuilder.java     |  480 --
 .../endpoint/EhcacheEndpointBuilderFactory.java    |  971 ++++
 ...Builder.java => EjbEndpointBuilderFactory.java} |  111 +-
 ...va => ElasticsearchEndpointBuilderFactory.java} |  223 +-
 .../camel/model/endpoint/ElsqlEndpointBuilder.java | 1141 -----
 .../endpoint/ElsqlEndpointBuilderFactory.java      | 2006 ++++++++
 .../camel/model/endpoint/EndpointBuilder.java      |  317 --
 .../model/endpoint/EndpointBuilderFactory.java     |  317 ++
 .../camel/model/endpoint/EtcdEndpointBuilder.java  |  735 ---
 .../model/endpoint/EtcdEndpointBuilderFactory.java | 1123 +++++
 .../model/endpoint/EventAdminEndpointBuilder.java  |  237 -
 .../endpoint/EventAdminEndpointBuilderFactory.java |  416 ++
 .../camel/model/endpoint/EventEndpointBuilder.java |  214 -
 .../endpoint/EventEndpointBuilderFactory.java      |  353 ++
 ...uilder.java => ExecEndpointBuilderFactory.java} |  151 +-
 .../model/endpoint/FacebookEndpointBuilder.java    | 1541 ------
 .../endpoint/FacebookEndpointBuilderFactory.java   | 4534 ++++++++++++++++++
 .../camel/model/endpoint/FhirEndpointBuilder.java  |  605 ---
 .../model/endpoint/FhirEndpointBuilderFactory.java | 1516 ++++++
 ...uilder.java => FileEndpointBuilderFactory.java} | 2845 +++++++-----
 .../model/endpoint/FlatpackEndpointBuilder.java    |  708 ---
 .../endpoint/FlatpackEndpointBuilderFactory.java   | 1162 +++++
 ...ilder.java => FlinkEndpointBuilderFactory.java} |  154 +-
 ...Builder.java => FopEndpointBuilderFactory.java} |  106 +-
 ....java => FreemarkerEndpointBuilderFactory.java} |  129 +-
 .../camel/model/endpoint/FtpEndpointBuilder.java   | 2759 -----------
 .../model/endpoint/FtpEndpointBuilderFactory.java  | 4298 +++++++++++++++++
 .../camel/model/endpoint/FtpsEndpointBuilder.java  | 3030 ------------
 .../model/endpoint/FtpsEndpointBuilderFactory.java | 4897 ++++++++++++++++++++
 ...der.java => GangliaEndpointBuilderFactory.java} |  210 +-
 ...er.java => GeoCoderEndpointBuilderFactory.java} |  218 +-
 .../camel/model/endpoint/GitEndpointBuilder.java   |  320 --
 .../model/endpoint/GitEndpointBuilderFactory.java  |  568 +++
 .../model/endpoint/GitHubEndpointBuilder.java      |  313 --
 .../endpoint/GitHubEndpointBuilderFactory.java     |  567 +++
 ...lder.java => GlanceEndpointBuilderFactory.java} |  131 +-
 ...a => GoogleBigQueryEndpointBuilderFactory.java} |  114 +-
 ...> GoogleBigQuerySQLEndpointBuilderFactory.java} |  106 +-
 .../endpoint/GoogleCalendarEndpointBuilder.java    |  342 --
 .../GoogleCalendarEndpointBuilderFactory.java      |  751 +++
 ...GoogleCalendarStreamEndpointBuilderFactory.java |  283 ++
 .../model/endpoint/GoogleDriveEndpointBuilder.java |  350 --
 .../GoogleDriveEndpointBuilderFactory.java         |  761 +++
 .../model/endpoint/GoogleMailEndpointBuilder.java  |  299 --
 .../endpoint/GoogleMailEndpointBuilderFactory.java |  609 +++
 .../endpoint/GoogleMailStreamEndpointBuilder.java  |  652 ---
 .../GoogleMailStreamEndpointBuilderFactory.java    |  229 +
 .../endpoint/GooglePubsubEndpointBuilder.java      |  325 --
 .../GooglePubsubEndpointBuilderFactory.java        |  695 +++
 .../endpoint/GoogleSheetsEndpointBuilder.java      |  301 --
 .../GoogleSheetsEndpointBuilderFactory.java        |  615 +++
 .../GoogleSheetsStreamEndpointBuilderFactory.java  |  286 ++
 .../camel/model/endpoint/GoraEndpointBuilder.java  |  499 --
 .../model/endpoint/GoraEndpointBuilderFactory.java |  747 +++
 ...ilder.java => GrapeEndpointBuilderFactory.java} |   84 +-
 .../model/endpoint/GridFsEndpointBuilder.java      |  431 --
 .../endpoint/GridFsEndpointBuilderFactory.java     |  786 ++++
 .../camel/model/endpoint/GrpcEndpointBuilder.java  |  609 ---
 .../model/endpoint/GrpcEndpointBuilderFactory.java | 1200 +++++
 .../endpoint/GuavaEventBusEndpointBuilder.java     |  276 --
 .../GuavaEventBusEndpointBuilderFactory.java       |  542 +++
 .../camel/model/endpoint/HBaseEndpointBuilder.java |  449 --
 .../endpoint/HBaseEndpointBuilderFactory.java      |  898 ++++
 ...zelcastAtomicnumberEndpointBuilderFactory.java} |  245 +-
 .../endpoint/HazelcastInstanceEndpointBuilder.java |  454 --
 ...> HazelcastInstanceEndpointBuilderFactory.java} |  272 +-
 .../endpoint/HazelcastListEndpointBuilder.java     |  471 --
 .../HazelcastListEndpointBuilderFactory.java       | 1018 ++++
 .../endpoint/HazelcastMapEndpointBuilder.java      |  471 --
 .../HazelcastMapEndpointBuilderFactory.java        | 1014 ++++
 .../endpoint/HazelcastMultimapEndpointBuilder.java |  476 --
 .../HazelcastMultimapEndpointBuilderFactory.java   | 1026 ++++
 .../endpoint/HazelcastQueueEndpointBuilder.java    |  472 --
 .../HazelcastQueueEndpointBuilderFactory.java      | 1021 ++++
 .../HazelcastReplicatedmapEndpointBuilder.java     |  478 --
 ...zelcastReplicatedmapEndpointBuilderFactory.java | 1029 ++++
 ...HazelcastRingbufferEndpointBuilderFactory.java} |  245 +-
 .../endpoint/HazelcastSedaEndpointBuilder.java     |  471 --
 .../HazelcastSedaEndpointBuilderFactory.java       | 1017 ++++
 .../endpoint/HazelcastSetEndpointBuilder.java      |  469 --
 .../HazelcastSetEndpointBuilderFactory.java        | 1014 ++++
 .../endpoint/HazelcastTopicEndpointBuilder.java    |  472 --
 .../HazelcastTopicEndpointBuilderFactory.java      | 1021 ++++
 .../camel/model/endpoint/HdfsEndpointBuilder.java  |  969 ----
 .../model/endpoint/HdfsEndpointBuilderFactory.java | 1834 ++++++++
 .../model/endpoint/HipchatEndpointBuilder.java     |  631 ---
 .../endpoint/HipchatEndpointBuilderFactory.java    |  923 ++++
 .../camel/model/endpoint/HttpEndpointBuilder.java  | 1053 -----
 .../model/endpoint/HttpEndpointBuilderFactory.java |  599 +++
 .../camel/model/endpoint/IAMEndpointBuilder.java   |  215 -
 ...Builder.java => IAMEndpointBuilderFactory.java} |   96 +-
 .../camel/model/endpoint/IOTAEndpointBuilder.java  |  301 --
 .../model/endpoint/IOTAEndpointBuilderFactory.java |  632 +++
 ...uilder.java => IPFSEndpointBuilderFactory.java} |   95 +-
 .../model/endpoint/IgniteCacheEndpointBuilder.java |  486 --
 .../IgniteCacheEndpointBuilderFactory.java         |  721 +++
 .../endpoint/IgniteComputeEndpointBuilder.java     |  261 --
 .../IgniteComputeEndpointBuilderFactory.java       |  177 +
 .../endpoint/IgniteEventsEndpointBuilder.java      |  289 --
 .../IgniteEventsEndpointBuilderFactory.java        |  166 +
 .../model/endpoint/IgniteIdGenEndpointBuilder.java |  232 -
 .../IgniteIdGenEndpointBuilderFactory.java         |  175 +
 .../endpoint/IgniteMessagingEndpointBuilder.java   |  334 --
 .../IgniteMessagingEndpointBuilderFactory.java     |  562 +++
 .../model/endpoint/IgniteQueueEndpointBuilder.java |  256 -
 .../IgniteQueueEndpointBuilderFactory.java         |  174 +
 .../model/endpoint/IgniteSetEndpointBuilder.java   |  221 -
 .../endpoint/IgniteSetEndpointBuilderFactory.java  |  174 +
 .../model/endpoint/InfinispanEndpointBuilder.java  |  536 ---
 .../endpoint/InfinispanEndpointBuilderFactory.java | 1077 +++++
 ...er.java => InfluxDbEndpointBuilderFactory.java} |  121 +-
 .../camel/model/endpoint/IrcEndpointBuilder.java   |  586 ---
 .../model/endpoint/IrcEndpointBuilderFactory.java  | 1494 ++++++
 .../model/endpoint/IronMQEndpointBuilder.java      |  754 ---
 .../endpoint/IronMQEndpointBuilderFactory.java     | 1060 +++++
 .../camel/model/endpoint/JBPMEndpointBuilder.java  |  640 ---
 .../model/endpoint/JBPMEndpointBuilderFactory.java | 1652 +++++++
 .../model/endpoint/JCacheEndpointBuilder.java      |  549 ---
 .../endpoint/JCacheEndpointBuilderFactory.java     | 1218 +++++
 .../model/endpoint/JGroupsEndpointBuilder.java     |  250 -
 .../endpoint/JGroupsEndpointBuilderFactory.java    |  413 ++
 .../model/endpoint/JGroupsRaftEndpointBuilder.java |  241 -
 .../JGroupsRaftEndpointBuilderFactory.java         |  380 ++
 .../camel/model/endpoint/JMXEndpointBuilder.java   |  657 ---
 .../model/endpoint/JMXEndpointBuilderFactory.java  |  538 +++
 .../endpoint/JSR356WebSocketEndpointBuilder.java   |  246 -
 .../JSR356WebSocketEndpointBuilderFactory.java     |  455 ++
 .../model/endpoint/JcloudsEndpointBuilder.java     |  346 --
 .../endpoint/JcloudsEndpointBuilderFactory.java    |  551 +++
 .../camel/model/endpoint/JcrEndpointBuilder.java   |  380 --
 .../model/endpoint/JcrEndpointBuilderFactory.java  |  861 ++++
 ...uilder.java => JdbcEndpointBuilderFactory.java} |  234 +-
 .../camel/model/endpoint/JettyHttpEndpoint9.java   |  637 ---
 .../model/endpoint/JettyHttpEndpointBuilder9.java  | 1334 ------
 .../endpoint/JettyHttpEndpointBuilder9Factory.java | 2056 ++++++++
 ...uilder.java => JingEndpointBuilderFactory.java} |   94 +-
 .../camel/model/endpoint/JiraEndpointBuilder.java  |  354 --
 .../model/endpoint/JiraEndpointBuilderFactory.java |  708 +++
 .../camel/model/endpoint/JmsEndpointBuilder.java   | 2329 ----------
 .../model/endpoint/JmsEndpointBuilderFactory.java  | 4634 ++++++++++++++++++
 ...uilder.java => JoltEndpointBuilderFactory.java} |  132 +-
 .../camel/model/endpoint/JooqEndpointBuilder.java  |  624 ---
 ...uilder.java => JooqEndpointBuilderFactory.java} |  944 ++--
 .../camel/model/endpoint/JpaEndpointBuilder.java   | 1043 -----
 .../model/endpoint/JpaEndpointBuilderFactory.java  | 1632 +++++++
 ...va => JsonValidatorEndpointBuilderFactory.java} |  160 +-
 .../camel/model/endpoint/Jt400EndpointBuilder.java |  825 ----
 .../endpoint/Jt400EndpointBuilderFactory.java      | 1436 ++++++
 .../camel/model/endpoint/KMSEndpointBuilder.java   |  214 -
 ...Builder.java => KMSEndpointBuilderFactory.java} |   96 +-
 .../camel/model/endpoint/KafkaEndpointBuilder.java | 2001 --------
 .../endpoint/KafkaEndpointBuilderFactory.java      | 2985 ++++++++++++
 ...er.java => KeystoneEndpointBuilderFactory.java} |  131 +-
 .../model/endpoint/KinesisEndpointBuilder.java     |  746 ---
 .../endpoint/KinesisEndpointBuilderFactory.java    | 1057 +++++
 ... => KinesisFirehoseEndpointBuilderFactory.java} |  159 +-
 ...ubernetesConfigMapsEndpointBuilderFactory.java} |  306 +-
 .../KubernetesDeploymentsEndpointBuilder.java      |  479 --
 ...ubernetesDeploymentsEndpointBuilderFactory.java | 1078 +++++
 .../endpoint/KubernetesHPAEndpointBuilder.java     |  476 --
 .../KubernetesHPAEndpointBuilderFactory.java       | 1065 +++++
 .../endpoint/KubernetesJobEndpointBuilder.java     |  476 --
 .../KubernetesJobEndpointBuilderFactory.java       | 1065 +++++
 .../KubernetesNamespacesEndpointBuilder.java       |  481 --
 ...KubernetesNamespacesEndpointBuilderFactory.java | 1079 +++++
 .../endpoint/KubernetesNodesEndpointBuilder.java   |  477 --
 .../KubernetesNodesEndpointBuilderFactory.java     | 1072 +++++
 ...istentVolumesClaimsEndpointBuilderFactory.java} |  307 +-
 ...esPersistentVolumesEndpointBuilderFactory.java} |  305 +-
 .../endpoint/KubernetesPodsEndpointBuilder.java    |  476 --
 .../KubernetesPodsEndpointBuilderFactory.java      | 1072 +++++
 ...netesReplicationControllersEndpointBuilder.java |  490 --
 ...plicationControllersEndpointBuilderFactory.java | 1083 +++++
 ...netesResourcesQuotaEndpointBuilderFactory.java} |  307 +-
 ...> KubernetesSecretsEndpointBuilderFactory.java} |  303 +-
 ...etesServiceAccountsEndpointBuilderFactory.java} |  307 +-
 .../KubernetesServicesEndpointBuilder.java         |  481 --
 .../KubernetesServicesEndpointBuilderFactory.java  | 1078 +++++
 ...lder.java => LambdaEndpointBuilderFactory.java} |  209 +-
 ...er.java => LanguageEndpointBuilderFactory.java} |  141 +-
 ...uilder.java => LdapEndpointBuilderFactory.java} |  114 +-
 ...uilder.java => LdifEndpointBuilderFactory.java} |   82 +-
 .../model/endpoint/LinkedInEndpointBuilder.java    |  455 --
 .../endpoint/LinkedInEndpointBuilderFactory.java   | 1064 +++++
 ...Builder.java => LogEndpointBuilderFactory.java} |  418 +-
 ...lder.java => LuceneEndpointBuilderFactory.java} |  141 +-
 .../model/endpoint/LumberjackEndpointBuilder.java  |  234 -
 .../endpoint/LumberjackEndpointBuilderFactory.java |  161 +
 .../camel/model/endpoint/MQEndpointBuilder.java    |  216 -
 ...tBuilder.java => MQEndpointBuilderFactory.java} |   95 +-
 .../camel/model/endpoint/MQTTEndpointBuilder.java  |  843 ----
 .../model/endpoint/MQTTEndpointBuilderFactory.java | 2286 +++++++++
 .../camel/model/endpoint/MSKEndpointBuilder.java   |  215 -
 ...Builder.java => MSKEndpointBuilderFactory.java} |   96 +-
 .../camel/model/endpoint/MailEndpointBuilder.java  | 1426 ------
 .../model/endpoint/MailEndpointBuilderFactory.java | 2356 ++++++++++
 .../model/endpoint/MasterEndpointBuilder.java      |  204 -
 ...lder.java => MasterEndpointBuilderFactory.java} |  101 +-
 ...der.java => MetricsEndpointBuilderFactory.java} |  168 +-
 ....java => MicrometerEndpointBuilderFactory.java} |  131 +-
 .../model/endpoint/MiloClientEndpointBuilder.java  |  545 ---
 .../endpoint/MiloClientEndpointBuilderFactory.java | 1422 ++++++
 .../model/endpoint/MiloServerEndpointBuilder.java  |  214 -
 .../endpoint/MiloServerEndpointBuilderFactory.java |  352 ++
 .../camel/model/endpoint/Mina2EndpointBuilder.java |  730 ---
 .../endpoint/Mina2EndpointBuilderFactory.java      | 1733 +++++++
 .../camel/model/endpoint/MllpEndpointBuilder.java  |  718 ---
 .../model/endpoint/MllpEndpointBuilderFactory.java | 1479 ++++++
 .../camel/model/endpoint/MockEndpointBuilder.java  |  376 --
 ...uilder.java => MockEndpointBuilderFactory.java} |   90 +-
 .../model/endpoint/MongoDbEndpointBuilder.java     |  492 --
 .../endpoint/MongoDbEndpointBuilderFactory.java    | 1216 +++++
 ...Builder.java => MsvEndpointBuilderFactory.java} |  189 +-
 ...er.java => MustacheEndpointBuilderFactory.java} |  112 +-
 ...uilder.java => MvelEndpointBuilderFactory.java} |   99 +-
 .../model/endpoint/MyBatisBeanEndpointBuilder.java |  184 -
 .../MyBatisBeanEndpointBuilderFactory.java         |  138 +
 ...der.java => MyBatisEndpointBuilderFactory.java} |  781 ++--
 ...lder.java => NagiosEndpointBuilderFactory.java} |  205 +-
 .../camel/model/endpoint/NatsEndpointBuilder.java  |  570 ---
 .../model/endpoint/NatsEndpointBuilderFactory.java | 1387 ++++++
 ...r.java => NetWeaverEndpointBuilderFactory.java} |  131 +-
 .../camel/model/endpoint/NettyEndpointBuilder.java | 1692 -------
 .../endpoint/NettyEndpointBuilderFactory.java      | 3648 +++++++++++++++
 .../model/endpoint/NettyHttpEndpointBuilder.java   | 1917 --------
 .../endpoint/NettyHttpEndpointBuilderFactory.java  | 4014 ++++++++++++++++
 ...der.java => NeutronEndpointBuilderFactory.java} |  137 +-
 ...uilder.java => NovaEndpointBuilderFactory.java} |  137 +-
 .../camel/model/endpoint/NsqEndpointBuilder.java   |  406 --
 .../model/endpoint/NsqEndpointBuilderFactory.java  |  674 +++
 .../model/endpoint/Olingo2EndpointBuilder.java     |  448 --
 .../endpoint/Olingo2EndpointBuilderFactory.java    | 1083 +++++
 .../model/endpoint/Olingo4EndpointBuilder.java     |  448 --
 .../endpoint/Olingo4EndpointBuilderFactory.java    | 1083 +++++
 ...enshiftBuildConfigsEndpointBuilderFactory.java} |  306 +-
 ... => OpenshiftBuildsEndpointBuilderFactory.java} |  301 +-
 .../model/endpoint/OptaPlannerEndpointBuilder.java |  261 --
 .../OptaPlannerEndpointBuilderFactory.java         |  421 ++
 .../camel/model/endpoint/PahoEndpointBuilder.java  |  383 --
 .../model/endpoint/PahoEndpointBuilderFactory.java |  867 ++++
 .../model/endpoint/PaxLoggingEndpointBuilder.java  |  197 -
 ....java => PaxLoggingEndpointBuilderFactory.java} |   99 +-
 ...Builder.java => PdfEndpointBuilderFactory.java} |  185 +-
 .../model/endpoint/PgEventEndpointBuilder.java     |  292 --
 .../endpoint/PgEventEndpointBuilderFactory.java    |  588 +++
 ...der.java => PrinterEndpointBuilderFactory.java} |  179 +-
 .../model/endpoint/PropertiesEndpointBuilder.java  |  262 --
 .../endpoint/PropertiesEndpointBuilderFactory.java |  498 ++
 .../model/endpoint/PubNubEndpointBuilder.java      |  350 --
 .../endpoint/PubNubEndpointBuilderFactory.java     |  689 +++
 .../model/endpoint/PulsarEndpointBuilder.java      |  318 --
 .../endpoint/PulsarEndpointBuilderFactory.java     |  447 ++
 ...lder.java => QuartzEndpointBuilderFactory.java} |  468 +-
 .../endpoint/QueueServiceEndpointBuilder.java      |  338 --
 .../QueueServiceEndpointBuilderFactory.java        |  574 +++
 .../model/endpoint/QuickfixjEndpointBuilder.java   |  268 --
 .../endpoint/QuickfixjEndpointBuilderFactory.java  |  523 +++
 .../model/endpoint/RabbitMQEndpointBuilder.java    | 1202 -----
 .../endpoint/RabbitMQEndpointBuilderFactory.java   | 2704 +++++++++++
 .../endpoint/ReactiveStreamsEndpointBuilder.java   |  371 --
 .../ReactiveStreamsEndpointBuilderFactory.java     |  511 ++
 .../camel/model/endpoint/RedisEndpointBuilder.java |  357 --
 .../endpoint/RedisEndpointBuilderFactory.java      |  734 +++
 .../camel/model/endpoint/RefEndpointBuilder.java   |  214 -
 .../model/endpoint/RefEndpointBuilderFactory.java  |  352 ++
 .../model/endpoint/RestApiEndpointBuilder.java     |  229 -
 .../endpoint/RestApiEndpointBuilderFactory.java    |  157 +
 .../camel/model/endpoint/RestEndpointBuilder.java  |  367 --
 .../model/endpoint/RestEndpointBuilderFactory.java |  673 +++
 .../model/endpoint/RestSwaggerEndpointBuilder.java |  222 -
 ...java => RestSwaggerEndpointBuilderFactory.java} |   87 +-
 .../model/endpoint/RestletEndpointBuilder.java     |  571 ---
 .../endpoint/RestletEndpointBuilderFactory.java    | 1039 +++++
 .../camel/model/endpoint/RssEndpointBuilder.java   |  673 ---
 .../model/endpoint/RssEndpointBuilderFactory.java  |  258 ++
 .../camel/model/endpoint/S3EndpointBuilder.java    | 1124 -----
 .../model/endpoint/S3EndpointBuilderFactory.java   | 1905 ++++++++
 .../camel/model/endpoint/SWFEndpointBuilder.java   |  588 ---
 .../model/endpoint/SWFEndpointBuilderFactory.java  | 1094 +++++
 ...uilder.java => SagaEndpointBuilderFactory.java} |   89 +-
 .../model/endpoint/SalesforceEndpointBuilder.java  |  915 ----
 .../endpoint/SalesforceEndpointBuilderFactory.java | 2399 ++++++++++
 .../model/endpoint/SchedulerEndpointBuilder.java   |  562 ---
 .../endpoint/SchedulerEndpointBuilderFactory.java  |  143 +
 ....java => SchematronEndpointBuilderFactory.java} |  119 +-
 ...Builder.java => ScpEndpointBuilderFactory.java} |  465 +-
 ...Builder.java => SdbEndpointBuilderFactory.java} |  168 +-
 .../camel/model/endpoint/SedaEndpointBuilder.java  |  528 ---
 .../model/endpoint/SedaEndpointBuilderFactory.java |  773 +++
 .../model/endpoint/ServerEndpointBuilder.java      |  552 ---
 .../endpoint/ServerEndpointBuilderFactory.java     | 1366 ++++++
 .../model/endpoint/ServiceEndpointBuilder.java     |  195 -
 ...der.java => ServiceEndpointBuilderFactory.java} |   93 +-
 ....java => ServiceNowEndpointBuilderFactory.java} |  694 +--
 .../model/endpoint/ServletEndpointBuilder.java     |  596 ---
 .../endpoint/ServletEndpointBuilderFactory.java    |  339 ++
 ...Builder.java => SesEndpointBuilderFactory.java} |  193 +-
 .../camel/model/endpoint/SftpEndpointBuilder.java  | 2879 ------------
 .../model/endpoint/SftpEndpointBuilderFactory.java | 4584 ++++++++++++++++++
 .../camel/model/endpoint/SipEndpointBuilder.java   |  906 ----
 .../model/endpoint/SipEndpointBuilderFactory.java  | 2464 ++++++++++
 .../camel/model/endpoint/Sjms2EndpointBuilder.java |  907 ----
 .../endpoint/Sjms2EndpointBuilderFactory.java      | 1846 ++++++++
 ...r.java => SjmsBatchEndpointBuilderFactory.java} |  424 +-
 .../camel/model/endpoint/SjmsEndpointBuilder.java  |  861 ----
 .../model/endpoint/SjmsEndpointBuilderFactory.java | 1798 +++++++
 .../camel/model/endpoint/SlackEndpointBuilder.java |  623 ---
 ...ilder.java => SlackEndpointBuilderFactory.java} |  841 ++--
 .../camel/model/endpoint/SmppEndpointBuilder.java  |  912 ----
 .../model/endpoint/SmppEndpointBuilderFactory.java | 1846 ++++++++
 .../camel/model/endpoint/SnmpEndpointBuilder.java  |  812 ----
 .../model/endpoint/SnmpEndpointBuilderFactory.java |  386 ++
 ...Builder.java => SnsEndpointBuilderFactory.java} |  254 +-
 ...uilder.java => SolrEndpointBuilderFactory.java} |  246 +-
 .../model/endpoint/SoroushBotEndpointBuilder.java  |  592 ---
 .../endpoint/SoroushBotEndpointBuilderFactory.java | 1420 ++++++
 ...ilder.java => SparkEndpointBuilderFactory.java} |  257 +-
 .../model/endpoint/SplunkEndpointBuilder.java      |  853 ----
 .../endpoint/SplunkEndpointBuilderFactory.java     | 1288 +++++
 ...java => SpringBatchEndpointBuilderFactory.java} |  121 +-
 .../endpoint/SpringIntegrationEndpointBuilder.java |  263 --
 .../SpringIntegrationEndpointBuilderFactory.java   |  459 ++
 ....java => SpringLdapEndpointBuilderFactory.java} |  103 +-
 ...=> SpringWebserviceEndpointBuilderFactory.java} |  704 ++-
 .../camel/model/endpoint/SqlEndpointBuilder.java   | 1066 -----
 .../model/endpoint/SqlEndpointBuilderFactory.java  | 1793 +++++++
 ...r.java => SqlStoredEndpointBuilderFactory.java} |  151 +-
 .../camel/model/endpoint/SqsEndpointBuilder.java   | 1175 -----
 .../model/endpoint/SqsEndpointBuilderFactory.java  | 1889 ++++++++
 .../camel/model/endpoint/SshEndpointBuilder.java   |  739 ---
 .../model/endpoint/SshEndpointBuilderFactory.java  | 1255 +++++
 ...uilder.java => StAXEndpointBuilderFactory.java} |   84 +-
 .../camel/model/endpoint/StompEndpointBuilder.java |  294 --
 .../endpoint/StompEndpointBuilderFactory.java      |  603 +++
 .../model/endpoint/StreamEndpointBuilder.java      |  565 ---
 .../endpoint/StreamEndpointBuilderFactory.java     |  951 ++++
 ...a => StringTemplateEndpointBuilderFactory.java} |  124 +-
 .../camel/model/endpoint/StubEndpointBuilder.java  |  528 ---
 .../model/endpoint/StubEndpointBuilderFactory.java |  773 +++
 ...ilder.java => SwiftEndpointBuilderFactory.java} |  137 +-
 ...er.java => TelegramEndpointBuilderFactory.java} |  801 ++--
 .../model/endpoint/ThriftEndpointBuilder.java      |  422 --
 .../endpoint/ThriftEndpointBuilderFactory.java     |  817 ++++
 ...uilder.java => TikaEndpointBuilderFactory.java} |  127 +-
 ...ilder.java => TimerEndpointBuilderFactory.java} |  252 +-
 .../model/endpoint/TwilioEndpointBuilder.java      |  256 -
 .../endpoint/TwilioEndpointBuilderFactory.java     |  460 ++
 .../TwitterDirectMessageEndpointBuilder.java       |  944 ----
 ...TwitterDirectMessageEndpointBuilderFactory.java | 1320 ++++++
 .../endpoint/TwitterSearchEndpointBuilder.java     |  925 ----
 .../TwitterSearchEndpointBuilderFactory.java       | 1304 ++++++
 .../endpoint/TwitterStreamingEndpointBuilder.java  |  947 ----
 .../TwitterStreamingEndpointBuilderFactory.java    |  252 +
 .../endpoint/TwitterTimelineEndpointBuilder.java   |  963 ----
 .../TwitterTimelineEndpointBuilderFactory.java     | 1389 ++++++
 .../model/endpoint/UndertowEndpointBuilder.java    |  603 ---
 .../endpoint/UndertowEndpointBuilderFactory.java   |  928 ++++
 ...r.java => ValidatorEndpointBuilderFactory.java} |  193 +-
 ...er.java => VelocityEndpointBuilderFactory.java} |  118 +-
 .../camel/model/endpoint/VertxEndpointBuilder.java |  236 -
 .../endpoint/VertxEndpointBuilderFactory.java      |  416 ++
 .../camel/model/endpoint/VmEndpointBuilder.java    |  526 ---
 .../model/endpoint/VmEndpointBuilderFactory.java   |  770 +++
 .../model/endpoint/WeatherEndpointBuilder.java     |  946 ----
 .../endpoint/WeatherEndpointBuilderFactory.java    | 1839 ++++++++
 .../camel/model/endpoint/Web3jEndpointBuilder.java |  716 ---
 .../endpoint/Web3jEndpointBuilderFactory.java      | 1275 +++++
 .../model/endpoint/WebhookEndpointBuilder.java     |  257 -
 .../endpoint/WebhookEndpointBuilderFactory.java    |  188 +
 .../model/endpoint/WebsocketEndpointBuilder.java   |  508 --
 .../endpoint/WebsocketEndpointBuilderFactory.java  | 1136 +++++
 .../model/endpoint/WordpressEndpointBuilder.java   |  342 --
 .../endpoint/WordpressEndpointBuilderFactory.java  |  753 +++
 .../camel/model/endpoint/WsEndpointBuilder.java    |  467 --
 .../model/endpoint/WsEndpointBuilderFactory.java   | 1155 +++++
 ...der.java => XChangeEndpointBuilderFactory.java} |  129 +-
 .../endpoint/XQueryEndpointBuilderFactory.java     | 1462 ++++++
 ...ava => XmlSignatureEndpointBuilderFactory.java} |  549 ++-
 .../camel/model/endpoint/XmppEndpointBuilder.java  |  483 --
 .../model/endpoint/XmppEndpointBuilderFactory.java | 1103 +++++
 ...uilder.java => XsltEndpointBuilderFactory.java} |  274 +-
 .../model/endpoint/YammerEndpointBuilder.java      |  723 ---
 .../endpoint/YammerEndpointBuilderFactory.java     | 1001 ++++
 .../model/endpoint/ZendeskEndpointBuilder.java     |  269 --
 .../endpoint/ZendeskEndpointBuilderFactory.java    |  518 +++
 .../model/endpoint/ZooKeeperEndpointBuilder.java   |  366 --
 .../endpoint/ZooKeeperEndpointBuilderFactory.java  |  649 +++
 .../endpoint/ZooKeeperMasterEndpointBuilder.java   |  207 -
 .../ZooKeeperMasterEndpointBuilderFactory.java     |  131 +
 .../component/file/FileAbsolutePathIssueTest.java  |    4 +-
 .../file/FileBatchConsumerMemoryLeakTest.java      |    4 +-
 .../component/file/FileConsumeCharsetTest.java     |    5 +-
 .../camel/maven/packaging/EndpointDslMojo.java     |  252 +-
 506 files changed, 221608 insertions(+), 131948 deletions(-)

diff --git a/core/camel-core/src/main/java/org/apache/camel/builder/EndpointRouteBuilder.java b/core/camel-core/src/main/java/org/apache/camel/builder/EndpointRouteBuilder.java
index 8bad83f..e436004 100644
--- a/core/camel-core/src/main/java/org/apache/camel/builder/EndpointRouteBuilder.java
+++ b/core/camel-core/src/main/java/org/apache/camel/builder/EndpointRouteBuilder.java
@@ -16,11 +16,11 @@
  */
 package org.apache.camel.builder;
 
-import org.apache.camel.model.endpoint.EndpointBuilder;
+import org.apache.camel.model.endpoint.EndpointBuilderFactory;
 
 /**
  * A route builder which gives access to the endpoint DSL
  */
-public abstract class EndpointRouteBuilder extends RouteBuilder implements EndpointBuilder {
+public abstract class EndpointRouteBuilder extends RouteBuilder implements EndpointBuilderFactory {
 
 }
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/AbstractEndpointBuilder.java b/core/camel-core/src/main/java/org/apache/camel/model/AbstractEndpointBuilder.java
index 05b1601..ea3e810 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/AbstractEndpointBuilder.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/AbstractEndpointBuilder.java
@@ -49,4 +49,7 @@ public class AbstractEndpointBuilder<T extends AbstractEndpointBuilder> {
         return getUri();
     }
 
+    public void setProperty(String key, Object value) {
+        this.properties.put(key, value);
+    }
 }
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/EndpointConsumerBuilder.java b/core/camel-core/src/main/java/org/apache/camel/model/EndpointConsumerBuilder.java
index 42e7c7f..955da34 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/EndpointConsumerBuilder.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/EndpointConsumerBuilder.java
@@ -26,4 +26,6 @@ public interface EndpointConsumerBuilder {
 
     String getUri();
 
+    void setProperty(String name, Object value);
+
 }
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/EndpointProducerBuilder.java b/core/camel-core/src/main/java/org/apache/camel/model/EndpointProducerBuilder.java
index b304ea2..0ff07de 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/EndpointProducerBuilder.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/EndpointProducerBuilder.java
@@ -26,4 +26,6 @@ public interface EndpointProducerBuilder {
 
     String getUri();
 
+    void setProperty(String name, Object value);
+
 }
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/endpoint/AMQPEndpointBuilder.java b/core/camel-core/src/main/java/org/apache/camel/model/endpoint/AMQPEndpointBuilder.java
deleted file mode 100644
index f5889a8..0000000
--- a/core/camel-core/src/main/java/org/apache/camel/model/endpoint/AMQPEndpointBuilder.java
+++ /dev/null
@@ -1,2329 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.model.endpoint;
-
-import javax.annotation.Generated;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.LoggingLevel;
-import org.apache.camel.model.AbstractEndpointBuilder;
-import org.apache.camel.model.EndpointConsumerBuilder;
-import org.apache.camel.model.EndpointProducerBuilder;
-import org.apache.camel.spi.ExceptionHandler;
-import org.apache.camel.spi.HeaderFilterStrategy;
-
-/**
- * Messaging with AMQP protocol using Apache QPid Client.
- * 
- * Generated by camel-package-maven-plugin - do not edit this file!
- */
-@Generated("org.apache.camel.maven.packaging.EndpointDslMojo")
-public interface AMQPEndpointBuilder {
-
-
-    /**
-     * Base class for the AMQP component builders.
-     */
-    public static class AMQPCommonBuilder<T extends AbstractEndpointBuilder>
-            extends
-                AbstractEndpointBuilder<T> {
-        AMQPCommonBuilder(String path) {
-            super("amqp", path);
-        }
-        /**
-         * The kind of destination to use.
-         * The option is a <code>java.lang.String</code> type.
-         * @group common
-         */
-        public T destinationType(String destinationType) {
-            this.properties.put("destinationType", destinationType);
-            return (T) this;
-        }
-        /**
-         * Name of the queue or topic to use as destination.
-         * The option is a <code>java.lang.String</code> type.
-         * @group common
-         */
-        public T destinationName(String destinationName) {
-            this.properties.put("destinationName", destinationName);
-            return (T) this;
-        }
-        /**
-         * Sets the JMS client ID to use. Note that this value, if specified,
-         * must be unique and can only be used by a single JMS connection
-         * instance. It is typically only required for durable topic
-         * subscriptions. If using Apache ActiveMQ you may prefer to use Virtual
-         * Topics instead.
-         * The option is a <code>java.lang.String</code> type.
-         * @group common
-         */
-        public T clientId(String clientId) {
-            this.properties.put("clientId", clientId);
-            return (T) this;
-        }
-        /**
-         * Sets the default connection factory to be used if a connection
-         * factory is not specified for either
-         * setTemplateConnectionFactory(ConnectionFactory) or
-         * setListenerConnectionFactory(ConnectionFactory).
-         * The option is a <code>javax.jms.ConnectionFactory</code> type.
-         * @group common
-         */
-        public T connectionFactory(Object connectionFactory) {
-            this.properties.put("connectionFactory", connectionFactory);
-            return (T) this;
-        }
-        /**
-         * Sets the default connection factory to be used if a connection
-         * factory is not specified for either
-         * setTemplateConnectionFactory(ConnectionFactory) or
-         * setListenerConnectionFactory(ConnectionFactory).
-         * The option will be converted to a
-         * <code>javax.jms.ConnectionFactory</code> type.
-         * @group common
-         */
-        public T connectionFactory(String connectionFactory) {
-            this.properties.put("connectionFactory", connectionFactory);
-            return (T) this;
-        }
-        /**
-         * Specifies whether Camel ignores the JMSReplyTo header in messages. If
-         * true, Camel does not send a reply back to the destination specified
-         * in the JMSReplyTo header. You can use this option if you want Camel
-         * to consume from a route and you do not want Camel to automatically
-         * send back a reply message because another component in your code
-         * handles the reply message. You can also use this option if you want
-         * to use Camel as a proxy between different message brokers and you
-         * want to route message from one system to another.
-         * The option is a <code>boolean</code> type.
-         * @group common
-         */
-        public T disableReplyTo(boolean disableReplyTo) {
-            this.properties.put("disableReplyTo", disableReplyTo);
-            return (T) this;
-        }
-        /**
-         * Specifies whether Camel ignores the JMSReplyTo header in messages. If
-         * true, Camel does not send a reply back to the destination specified
-         * in the JMSReplyTo header. You can use this option if you want Camel
-         * to consume from a route and you do not want Camel to automatically
-         * send back a reply message because another component in your code
-         * handles the reply message. You can also use this option if you want
-         * to use Camel as a proxy between different message brokers and you
-         * want to route message from one system to another.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group common
-         */
-        public T disableReplyTo(String disableReplyTo) {
-            this.properties.put("disableReplyTo", disableReplyTo);
-            return (T) this;
-        }
-        /**
-         * The durable subscriber name for specifying durable topic
-         * subscriptions. The clientId option must be configured as well.
-         * The option is a <code>java.lang.String</code> type.
-         * @group common
-         */
-        public T durableSubscriptionName(String durableSubscriptionName) {
-            this.properties.put("durableSubscriptionName", durableSubscriptionName);
-            return (T) this;
-        }
-        /**
-         * Allows you to force the use of a specific javax.jms.Message
-         * implementation for sending JMS messages. Possible values are: Bytes,
-         * Map, Object, Stream, Text. By default, Camel would determine which
-         * JMS message type to use from the In body type. This option allows you
-         * to specify it.
-         * The option is a
-         * <code>org.apache.camel.component.jms.JmsMessageType</code> type.
-         * @group common
-         */
-        public T jmsMessageType(JmsMessageType jmsMessageType) {
-            this.properties.put("jmsMessageType", jmsMessageType);
-            return (T) this;
-        }
-        /**
-         * Allows you to force the use of a specific javax.jms.Message
-         * implementation for sending JMS messages. Possible values are: Bytes,
-         * Map, Object, Stream, Text. By default, Camel would determine which
-         * JMS message type to use from the In body type. This option allows you
-         * to specify it.
-         * The option will be converted to a
-         * <code>org.apache.camel.component.jms.JmsMessageType</code> type.
-         * @group common
-         */
-        public T jmsMessageType(String jmsMessageType) {
-            this.properties.put("jmsMessageType", jmsMessageType);
-            return (T) this;
-        }
-        /**
-         * Specifies whether to test the connection on startup. This ensures
-         * that when Camel starts that all the JMS consumers have a valid
-         * connection to the JMS broker. If a connection cannot be granted then
-         * Camel throws an exception on startup. This ensures that Camel is not
-         * started with failed connections. The JMS producers is tested as well.
-         * The option is a <code>boolean</code> type.
-         * @group common
-         */
-        public T testConnectionOnStartup(boolean testConnectionOnStartup) {
-            this.properties.put("testConnectionOnStartup", testConnectionOnStartup);
-            return (T) this;
-        }
-        /**
-         * Specifies whether to test the connection on startup. This ensures
-         * that when Camel starts that all the JMS consumers have a valid
-         * connection to the JMS broker. If a connection cannot be granted then
-         * Camel throws an exception on startup. This ensures that Camel is not
-         * started with failed connections. The JMS producers is tested as well.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group common
-         */
-        public T testConnectionOnStartup(String testConnectionOnStartup) {
-            this.properties.put("testConnectionOnStartup", testConnectionOnStartup);
-            return (T) this;
-        }
-        /**
-         * Controls whether or not to include serialized headers. Applies only
-         * when isTransferExchange() is true. This requires that the objects are
-         * serializable. Camel will exclude any non-serializable objects and log
-         * it at WARN level.
-         * The option is a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T allowSerializedHeaders(boolean allowSerializedHeaders) {
-            this.properties.put("allowSerializedHeaders", allowSerializedHeaders);
-            return (T) this;
-        }
-        /**
-         * Controls whether or not to include serialized headers. Applies only
-         * when isTransferExchange() is true. This requires that the objects are
-         * serializable. Camel will exclude any non-serializable objects and log
-         * it at WARN level.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T allowSerializedHeaders(String allowSerializedHeaders) {
-            this.properties.put("allowSerializedHeaders", allowSerializedHeaders);
-            return (T) this;
-        }
-        /**
-         * Whether to startup the JmsConsumer message listener asynchronously,
-         * when starting a route. For example if a JmsConsumer cannot get a
-         * connection to a remote JMS broker, then it may block while retrying
-         * and/or failover. This will cause Camel to block while starting
-         * routes. By setting this option to true, you will let routes startup,
-         * while the JmsConsumer connects to the JMS broker using a dedicated
-         * thread in asynchronous mode. If this option is used, then beware that
-         * if the connection could not be established, then an exception is
-         * logged at WARN level, and the consumer will not be able to receive
-         * messages; You can then restart the route to retry.
-         * The option is a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T asyncStartListener(boolean asyncStartListener) {
-            this.properties.put("asyncStartListener", asyncStartListener);
-            return (T) this;
-        }
-        /**
-         * Whether to startup the JmsConsumer message listener asynchronously,
-         * when starting a route. For example if a JmsConsumer cannot get a
-         * connection to a remote JMS broker, then it may block while retrying
-         * and/or failover. This will cause Camel to block while starting
-         * routes. By setting this option to true, you will let routes startup,
-         * while the JmsConsumer connects to the JMS broker using a dedicated
-         * thread in asynchronous mode. If this option is used, then beware that
-         * if the connection could not be established, then an exception is
-         * logged at WARN level, and the consumer will not be able to receive
-         * messages; You can then restart the route to retry.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T asyncStartListener(String asyncStartListener) {
-            this.properties.put("asyncStartListener", asyncStartListener);
-            return (T) this;
-        }
-        /**
-         * Whether to stop the JmsConsumer message listener asynchronously, when
-         * stopping a route.
-         * The option is a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T asyncStopListener(boolean asyncStopListener) {
-            this.properties.put("asyncStopListener", asyncStopListener);
-            return (T) this;
-        }
-        /**
-         * Whether to stop the JmsConsumer message listener asynchronously, when
-         * stopping a route.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T asyncStopListener(String asyncStopListener) {
-            this.properties.put("asyncStopListener", asyncStopListener);
-            return (T) this;
-        }
-        /**
-         * Whether the endpoint should use basic property binding (Camel 2.x) or
-         * the newer property binding with additional capabilities.
-         * The option is a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T basicPropertyBinding(boolean basicPropertyBinding) {
-            this.properties.put("basicPropertyBinding", basicPropertyBinding);
-            return (T) this;
-        }
-        /**
-         * Whether the endpoint should use basic property binding (Camel 2.x) or
-         * the newer property binding with additional capabilities.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T basicPropertyBinding(String basicPropertyBinding) {
-            this.properties.put("basicPropertyBinding", basicPropertyBinding);
-            return (T) this;
-        }
-        /**
-         * A pluggable
-         * org.springframework.jms.support.destination.DestinationResolver that
-         * allows you to use your own resolver (for example, to lookup the real
-         * destination in a JNDI registry).
-         * The option is a
-         * <code>org.springframework.jms.support.destination.DestinationResolver</code> type.
-         * @group advanced
-         */
-        public T destinationResolver(Object destinationResolver) {
-            this.properties.put("destinationResolver", destinationResolver);
-            return (T) this;
-        }
-        /**
-         * A pluggable
-         * org.springframework.jms.support.destination.DestinationResolver that
-         * allows you to use your own resolver (for example, to lookup the real
-         * destination in a JNDI registry).
-         * The option will be converted to a
-         * <code>org.springframework.jms.support.destination.DestinationResolver</code> type.
-         * @group advanced
-         */
-        public T destinationResolver(String destinationResolver) {
-            this.properties.put("destinationResolver", destinationResolver);
-            return (T) this;
-        }
-        /**
-         * Specifies a org.springframework.util.ErrorHandler to be invoked in
-         * case of any uncaught exceptions thrown while processing a Message. By
-         * default these exceptions will be logged at the WARN level, if no
-         * errorHandler has been configured. You can configure logging level and
-         * whether stack traces should be logged using errorHandlerLoggingLevel
-         * and errorHandlerLogStackTrace options. This makes it much easier to
-         * configure, than having to code a custom errorHandler.
-         * The option is a <code>org.springframework.util.ErrorHandler</code>
-         * type.
-         * @group advanced
-         */
-        public T errorHandler(Object errorHandler) {
-            this.properties.put("errorHandler", errorHandler);
-            return (T) this;
-        }
-        /**
-         * Specifies a org.springframework.util.ErrorHandler to be invoked in
-         * case of any uncaught exceptions thrown while processing a Message. By
-         * default these exceptions will be logged at the WARN level, if no
-         * errorHandler has been configured. You can configure logging level and
-         * whether stack traces should be logged using errorHandlerLoggingLevel
-         * and errorHandlerLogStackTrace options. This makes it much easier to
-         * configure, than having to code a custom errorHandler.
-         * The option will be converted to a
-         * <code>org.springframework.util.ErrorHandler</code> type.
-         * @group advanced
-         */
-        public T errorHandler(String errorHandler) {
-            this.properties.put("errorHandler", errorHandler);
-            return (T) this;
-        }
-        /**
-         * Specifies the JMS Exception Listener that is to be notified of any
-         * underlying JMS exceptions.
-         * The option is a <code>javax.jms.ExceptionListener</code> type.
-         * @group advanced
-         */
-        public T exceptionListener(Object exceptionListener) {
-            this.properties.put("exceptionListener", exceptionListener);
-            return (T) this;
-        }
-        /**
-         * Specifies the JMS Exception Listener that is to be notified of any
-         * underlying JMS exceptions.
-         * The option will be converted to a
-         * <code>javax.jms.ExceptionListener</code> type.
-         * @group advanced
-         */
-        public T exceptionListener(String exceptionListener) {
-            this.properties.put("exceptionListener", exceptionListener);
-            return (T) this;
-        }
-        /**
-         * To use a custom HeaderFilterStrategy to filter header to and from
-         * Camel message.
-         * The option is a
-         * <code>org.apache.camel.spi.HeaderFilterStrategy</code> type.
-         * @group advanced
-         */
-        public T headerFilterStrategy(HeaderFilterStrategy headerFilterStrategy) {
-            this.properties.put("headerFilterStrategy", headerFilterStrategy);
-            return (T) this;
-        }
-        /**
-         * To use a custom HeaderFilterStrategy to filter header to and from
-         * Camel message.
-         * The option will be converted to a
-         * <code>org.apache.camel.spi.HeaderFilterStrategy</code> type.
-         * @group advanced
-         */
-        public T headerFilterStrategy(String headerFilterStrategy) {
-            this.properties.put("headerFilterStrategy", headerFilterStrategy);
-            return (T) this;
-        }
-        /**
-         * Specify the limit for the number of consumers that are allowed to be
-         * idle at any given time.
-         * The option is a <code>int</code> type.
-         * @group advanced
-         */
-        public T idleConsumerLimit(int idleConsumerLimit) {
-            this.properties.put("idleConsumerLimit", idleConsumerLimit);
-            return (T) this;
-        }
-        /**
-         * Specify the limit for the number of consumers that are allowed to be
-         * idle at any given time.
-         * The option will be converted to a <code>int</code> type.
-         * @group advanced
-         */
-        public T idleConsumerLimit(String idleConsumerLimit) {
-            this.properties.put("idleConsumerLimit", idleConsumerLimit);
-            return (T) this;
-        }
-        /**
-         * Specifies the limit for idle executions of a receive task, not having
-         * received any message within its execution. If this limit is reached,
-         * the task will shut down and leave receiving to other executing tasks
-         * (in the case of dynamic scheduling; see the maxConcurrentConsumers
-         * setting). There is additional doc available from Spring.
-         * The option is a <code>int</code> type.
-         * @group advanced
-         */
-        public T idleTaskExecutionLimit(int idleTaskExecutionLimit) {
-            this.properties.put("idleTaskExecutionLimit", idleTaskExecutionLimit);
-            return (T) this;
-        }
-        /**
-         * Specifies the limit for idle executions of a receive task, not having
-         * received any message within its execution. If this limit is reached,
-         * the task will shut down and leave receiving to other executing tasks
-         * (in the case of dynamic scheduling; see the maxConcurrentConsumers
-         * setting). There is additional doc available from Spring.
-         * The option will be converted to a <code>int</code> type.
-         * @group advanced
-         */
-        public T idleTaskExecutionLimit(String idleTaskExecutionLimit) {
-            this.properties.put("idleTaskExecutionLimit", idleTaskExecutionLimit);
-            return (T) this;
-        }
-        /**
-         * Whether to include all JMSXxxx properties when mapping from JMS to
-         * Camel Message. Setting this to true will include properties such as
-         * JMSXAppID, and JMSXUserID etc. Note: If you are using a custom
-         * headerFilterStrategy then this option does not apply.
-         * The option is a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T includeAllJMSXProperties(boolean includeAllJMSXProperties) {
-            this.properties.put("includeAllJMSXProperties", includeAllJMSXProperties);
-            return (T) this;
-        }
-        /**
-         * Whether to include all JMSXxxx properties when mapping from JMS to
-         * Camel Message. Setting this to true will include properties such as
-         * JMSXAppID, and JMSXUserID etc. Note: If you are using a custom
-         * headerFilterStrategy then this option does not apply.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T includeAllJMSXProperties(String includeAllJMSXProperties) {
-            this.properties.put("includeAllJMSXProperties", includeAllJMSXProperties);
-            return (T) this;
-        }
-        /**
-         * Pluggable strategy for encoding and decoding JMS keys so they can be
-         * compliant with the JMS specification. Camel provides two
-         * implementations out of the box: default and passthrough. The default
-         * strategy will safely marshal dots and hyphens (. and -). The
-         * passthrough strategy leaves the key as is. Can be used for JMS
-         * brokers which do not care whether JMS header keys contain illegal
-         * characters. You can provide your own implementation of the
-         * org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it
-         * using the # notation.
-         * The option is a
-         * <code>org.apache.camel.component.jms.JmsKeyFormatStrategy</code>
-         * type.
-         * @group advanced
-         */
-        public T jmsKeyFormatStrategy(Object jmsKeyFormatStrategy) {
-            this.properties.put("jmsKeyFormatStrategy", jmsKeyFormatStrategy);
-            return (T) this;
-        }
-        /**
-         * Pluggable strategy for encoding and decoding JMS keys so they can be
-         * compliant with the JMS specification. Camel provides two
-         * implementations out of the box: default and passthrough. The default
-         * strategy will safely marshal dots and hyphens (. and -). The
-         * passthrough strategy leaves the key as is. Can be used for JMS
-         * brokers which do not care whether JMS header keys contain illegal
-         * characters. You can provide your own implementation of the
-         * org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it
-         * using the # notation.
-         * The option will be converted to a
-         * <code>org.apache.camel.component.jms.JmsKeyFormatStrategy</code>
-         * type.
-         * @group advanced
-         */
-        public T jmsKeyFormatStrategy(String jmsKeyFormatStrategy) {
-            this.properties.put("jmsKeyFormatStrategy", jmsKeyFormatStrategy);
-            return (T) this;
-        }
-        /**
-         * Specifies whether Camel should auto map the received JMS message to a
-         * suited payload type, such as javax.jms.TextMessage to a String etc.
-         * The option is a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T mapJmsMessage(boolean mapJmsMessage) {
-            this.properties.put("mapJmsMessage", mapJmsMessage);
-            return (T) this;
-        }
-        /**
-         * Specifies whether Camel should auto map the received JMS message to a
-         * suited payload type, such as javax.jms.TextMessage to a String etc.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T mapJmsMessage(String mapJmsMessage) {
-            this.properties.put("mapJmsMessage", mapJmsMessage);
-            return (T) this;
-        }
-        /**
-         * The number of messages per task. -1 is unlimited. If you use a range
-         * for concurrent consumers (eg min max), then this option can be used
-         * to set a value to eg 100 to control how fast the consumers will
-         * shrink when less work is required.
-         * The option is a <code>int</code> type.
-         * @group advanced
-         */
-        public T maxMessagesPerTask(int maxMessagesPerTask) {
-            this.properties.put("maxMessagesPerTask", maxMessagesPerTask);
-            return (T) this;
-        }
-        /**
-         * The number of messages per task. -1 is unlimited. If you use a range
-         * for concurrent consumers (eg min max), then this option can be used
-         * to set a value to eg 100 to control how fast the consumers will
-         * shrink when less work is required.
-         * The option will be converted to a <code>int</code> type.
-         * @group advanced
-         */
-        public T maxMessagesPerTask(String maxMessagesPerTask) {
-            this.properties.put("maxMessagesPerTask", maxMessagesPerTask);
-            return (T) this;
-        }
-        /**
-         * To use a custom Spring
-         * org.springframework.jms.support.converter.MessageConverter so you can
-         * be in control how to map to/from a javax.jms.Message.
-         * The option is a
-         * <code>org.springframework.jms.support.converter.MessageConverter</code> type.
-         * @group advanced
-         */
-        public T messageConverter(Object messageConverter) {
-            this.properties.put("messageConverter", messageConverter);
-            return (T) this;
-        }
-        /**
-         * To use a custom Spring
-         * org.springframework.jms.support.converter.MessageConverter so you can
-         * be in control how to map to/from a javax.jms.Message.
-         * The option will be converted to a
-         * <code>org.springframework.jms.support.converter.MessageConverter</code> type.
-         * @group advanced
-         */
-        public T messageConverter(String messageConverter) {
-            this.properties.put("messageConverter", messageConverter);
-            return (T) this;
-        }
-        /**
-         * To use the given MessageCreatedStrategy which are invoked when Camel
-         * creates new instances of javax.jms.Message objects when Camel is
-         * sending a JMS message.
-         * The option is a
-         * <code>org.apache.camel.component.jms.MessageCreatedStrategy</code>
-         * type.
-         * @group advanced
-         */
-        public T messageCreatedStrategy(Object messageCreatedStrategy) {
-            this.properties.put("messageCreatedStrategy", messageCreatedStrategy);
-            return (T) this;
-        }
-        /**
-         * To use the given MessageCreatedStrategy which are invoked when Camel
-         * creates new instances of javax.jms.Message objects when Camel is
-         * sending a JMS message.
-         * The option will be converted to a
-         * <code>org.apache.camel.component.jms.MessageCreatedStrategy</code>
-         * type.
-         * @group advanced
-         */
-        public T messageCreatedStrategy(String messageCreatedStrategy) {
-            this.properties.put("messageCreatedStrategy", messageCreatedStrategy);
-            return (T) this;
-        }
-        /**
-         * When sending, specifies whether message IDs should be added. This is
-         * just an hint to the JMS Broker. If the JMS provider accepts this
-         * hint, these messages must have the message ID set to null; if the
-         * provider ignores the hint, the message ID must be set to its normal
-         * unique value.
-         * The option is a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T messageIdEnabled(boolean messageIdEnabled) {
-            this.properties.put("messageIdEnabled", messageIdEnabled);
-            return (T) this;
-        }
-        /**
-         * When sending, specifies whether message IDs should be added. This is
-         * just an hint to the JMS Broker. If the JMS provider accepts this
-         * hint, these messages must have the message ID set to null; if the
-         * provider ignores the hint, the message ID must be set to its normal
-         * unique value.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T messageIdEnabled(String messageIdEnabled) {
-            this.properties.put("messageIdEnabled", messageIdEnabled);
-            return (T) this;
-        }
-        /**
-         * Registry ID of the MessageListenerContainerFactory used to determine
-         * what
-         * org.springframework.jms.listener.AbstractMessageListenerContainer to
-         * use to consume messages. Setting this will automatically set
-         * consumerType to Custom.
-         * The option is a
-         * <code>org.apache.camel.component.jms.MessageListenerContainerFactory</code> type.
-         * @group advanced
-         */
-        public T messageListenerContainerFactory(
-                Object messageListenerContainerFactory) {
-            this.properties.put("messageListenerContainerFactory", messageListenerContainerFactory);
-            return (T) this;
-        }
-        /**
-         * Registry ID of the MessageListenerContainerFactory used to determine
-         * what
-         * org.springframework.jms.listener.AbstractMessageListenerContainer to
-         * use to consume messages. Setting this will automatically set
-         * consumerType to Custom.
-         * The option will be converted to a
-         * <code>org.apache.camel.component.jms.MessageListenerContainerFactory</code> type.
-         * @group advanced
-         */
-        public T messageListenerContainerFactory(
-                String messageListenerContainerFactory) {
-            this.properties.put("messageListenerContainerFactory", messageListenerContainerFactory);
-            return (T) this;
-        }
-        /**
-         * Specifies whether timestamps should be enabled by default on sending
-         * messages. This is just an hint to the JMS Broker. If the JMS provider
-         * accepts this hint, these messages must have the timestamp set to
-         * zero; if the provider ignores the hint, the timestamp must be set to
-         * its normal value.
-         * The option is a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T messageTimestampEnabled(boolean messageTimestampEnabled) {
-            this.properties.put("messageTimestampEnabled", messageTimestampEnabled);
-            return (T) this;
-        }
-        /**
-         * Specifies whether timestamps should be enabled by default on sending
-         * messages. This is just an hint to the JMS Broker. If the JMS provider
-         * accepts this hint, these messages must have the timestamp set to
-         * zero; if the provider ignores the hint, the timestamp must be set to
-         * its normal value.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T messageTimestampEnabled(String messageTimestampEnabled) {
-            this.properties.put("messageTimestampEnabled", messageTimestampEnabled);
-            return (T) this;
-        }
-        /**
-         * Specifies whether to inhibit the delivery of messages published by
-         * its own connection.
-         * The option is a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T pubSubNoLocal(boolean pubSubNoLocal) {
-            this.properties.put("pubSubNoLocal", pubSubNoLocal);
-            return (T) this;
-        }
-        /**
-         * Specifies whether to inhibit the delivery of messages published by
-         * its own connection.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T pubSubNoLocal(String pubSubNoLocal) {
-            this.properties.put("pubSubNoLocal", pubSubNoLocal);
-            return (T) this;
-        }
-        /**
-         * The timeout for receiving messages (in milliseconds).
-         * The option is a <code>long</code> type.
-         * @group advanced
-         */
-        public T receiveTimeout(long receiveTimeout) {
-            this.properties.put("receiveTimeout", receiveTimeout);
-            return (T) this;
-        }
-        /**
-         * The timeout for receiving messages (in milliseconds).
-         * The option will be converted to a <code>long</code> type.
-         * @group advanced
-         */
-        public T receiveTimeout(String receiveTimeout) {
-            this.properties.put("receiveTimeout", receiveTimeout);
-            return (T) this;
-        }
-        /**
-         * Specifies the interval between recovery attempts, i.e. when a
-         * connection is being refreshed, in milliseconds. The default is 5000
-         * ms, that is, 5 seconds.
-         * The option is a <code>long</code> type.
-         * @group advanced
-         */
-        public T recoveryInterval(long recoveryInterval) {
-            this.properties.put("recoveryInterval", recoveryInterval);
-            return (T) this;
-        }
-        /**
-         * Specifies the interval between recovery attempts, i.e. when a
-         * connection is being refreshed, in milliseconds. The default is 5000
-         * ms, that is, 5 seconds.
-         * The option will be converted to a <code>long</code> type.
-         * @group advanced
-         */
-        public T recoveryInterval(String recoveryInterval) {
-            this.properties.put("recoveryInterval", recoveryInterval);
-            return (T) this;
-        }
-        /**
-         * Configures how often Camel should check for timed out Exchanges when
-         * doing request/reply over JMS. By default Camel checks once per
-         * second. But if you must react faster when a timeout occurs, then you
-         * can lower this interval, to check more frequently. The timeout is
-         * determined by the option requestTimeout.
-         * The option is a <code>long</code> type.
-         * @group advanced
-         */
-        public T requestTimeoutCheckerInterval(
-                long requestTimeoutCheckerInterval) {
-            this.properties.put("requestTimeoutCheckerInterval", requestTimeoutCheckerInterval);
-            return (T) this;
-        }
-        /**
-         * Configures how often Camel should check for timed out Exchanges when
-         * doing request/reply over JMS. By default Camel checks once per
-         * second. But if you must react faster when a timeout occurs, then you
-         * can lower this interval, to check more frequently. The timeout is
-         * determined by the option requestTimeout.
-         * The option will be converted to a <code>long</code> type.
-         * @group advanced
-         */
-        public T requestTimeoutCheckerInterval(
-                String requestTimeoutCheckerInterval) {
-            this.properties.put("requestTimeoutCheckerInterval", requestTimeoutCheckerInterval);
-            return (T) this;
-        }
-        /**
-         * Sets whether synchronous processing should be strictly used, or Camel
-         * is allowed to use asynchronous processing (if supported).
-         * The option is a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T synchronous(boolean synchronous) {
-            this.properties.put("synchronous", synchronous);
-            return (T) this;
-        }
-        /**
-         * Sets whether synchronous processing should be strictly used, or Camel
-         * is allowed to use asynchronous processing (if supported).
-         * The option will be converted to a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T synchronous(String synchronous) {
-            this.properties.put("synchronous", synchronous);
-            return (T) this;
-        }
-        /**
-         * If enabled and you are using Request Reply messaging (InOut) and an
-         * Exchange failed on the consumer side, then the caused Exception will
-         * be send back in response as a javax.jms.ObjectMessage. If the client
-         * is Camel, the returned Exception is rethrown. This allows you to use
-         * Camel JMS as a bridge in your routing - for example, using persistent
-         * queues to enable robust routing. Notice that if you also have
-         * transferExchange enabled, this option takes precedence. The caught
-         * exception is required to be serializable. The original Exception on
-         * the consumer side can be wrapped in an outer exception such as
-         * org.apache.camel.RuntimeCamelException when returned to the producer.
-         * The option is a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T transferException(boolean transferException) {
-            this.properties.put("transferException", transferException);
-            return (T) this;
-        }
-        /**
-         * If enabled and you are using Request Reply messaging (InOut) and an
-         * Exchange failed on the consumer side, then the caused Exception will
-         * be send back in response as a javax.jms.ObjectMessage. If the client
-         * is Camel, the returned Exception is rethrown. This allows you to use
-         * Camel JMS as a bridge in your routing - for example, using persistent
-         * queues to enable robust routing. Notice that if you also have
-         * transferExchange enabled, this option takes precedence. The caught
-         * exception is required to be serializable. The original Exception on
-         * the consumer side can be wrapped in an outer exception such as
-         * org.apache.camel.RuntimeCamelException when returned to the producer.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T transferException(String transferException) {
-            this.properties.put("transferException", transferException);
-            return (T) this;
-        }
-        /**
-         * You can transfer the exchange over the wire instead of just the body
-         * and headers. 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. You must enable this option on both the producer
-         * and consumer side, so Camel knows the payloads is an Exchange and not
-         * a regular payload.
-         * The option is a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T transferExchange(boolean transferExchange) {
-            this.properties.put("transferExchange", transferExchange);
-            return (T) this;
-        }
-        /**
-         * You can transfer the exchange over the wire instead of just the body
-         * and headers. 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. You must enable this option on both the producer
-         * and consumer side, so Camel knows the payloads is an Exchange and not
-         * a regular payload.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T transferExchange(String transferExchange) {
-            this.properties.put("transferExchange", transferExchange);
-            return (T) this;
-        }
-        /**
-         * If enabled and you are using Request Reply messaging (InOut) and an
-         * Exchange failed with a SOAP fault (not exception) on the consumer
-         * side, then the fault flag on org.apache.camel.Message#isFault() will
-         * be send back in the response as a JMS header with the key
-         * JmsConstants#JMS_TRANSFER_FAULT. If the client is Camel, the returned
-         * fault flag will be set on the
-         * org.apache.camel.Message#setFault(boolean). You may want to enable
-         * this when using Camel components that support faults such as SOAP
-         * based such as cxf or spring-ws.
-         * The option is a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T transferFault(boolean transferFault) {
-            this.properties.put("transferFault", transferFault);
-            return (T) this;
-        }
-        /**
-         * If enabled and you are using Request Reply messaging (InOut) and an
-         * Exchange failed with a SOAP fault (not exception) on the consumer
-         * side, then the fault flag on org.apache.camel.Message#isFault() will
-         * be send back in the response as a JMS header with the key
-         * JmsConstants#JMS_TRANSFER_FAULT. If the client is Camel, the returned
-         * fault flag will be set on the
-         * org.apache.camel.Message#setFault(boolean). You may want to enable
-         * this when using Camel components that support faults such as SOAP
-         * based such as cxf or spring-ws.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T transferFault(String transferFault) {
-            this.properties.put("transferFault", transferFault);
-            return (T) this;
-        }
-        /**
-         * Specifies whether JMSMessageID should always be used as
-         * JMSCorrelationID for InOut messages.
-         * The option is a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T useMessageIDAsCorrelationID(boolean useMessageIDAsCorrelationID) {
-            this.properties.put("useMessageIDAsCorrelationID", useMessageIDAsCorrelationID);
-            return (T) this;
-        }
-        /**
-         * Specifies whether JMSMessageID should always be used as
-         * JMSCorrelationID for InOut messages.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T useMessageIDAsCorrelationID(String useMessageIDAsCorrelationID) {
-            this.properties.put("useMessageIDAsCorrelationID", useMessageIDAsCorrelationID);
-            return (T) this;
-        }
-        /**
-         * Number of times to wait for provisional correlation id to be updated
-         * to the actual correlation id when doing request/reply over JMS and
-         * when the option useMessageIDAsCorrelationID is enabled.
-         * The option is a <code>int</code> type.
-         * @group advanced
-         */
-        public T waitForProvisionCorrelationToBeUpdatedCounter(
-                int waitForProvisionCorrelationToBeUpdatedCounter) {
-            this.properties.put("waitForProvisionCorrelationToBeUpdatedCounter", waitForProvisionCorrelationToBeUpdatedCounter);
-            return (T) this;
-        }
-        /**
-         * Number of times to wait for provisional correlation id to be updated
-         * to the actual correlation id when doing request/reply over JMS and
-         * when the option useMessageIDAsCorrelationID is enabled.
-         * The option will be converted to a <code>int</code> type.
-         * @group advanced
-         */
-        public T waitForProvisionCorrelationToBeUpdatedCounter(
-                String waitForProvisionCorrelationToBeUpdatedCounter) {
-            this.properties.put("waitForProvisionCorrelationToBeUpdatedCounter", waitForProvisionCorrelationToBeUpdatedCounter);
-            return (T) this;
-        }
-        /**
-         * Interval in millis to sleep each time while waiting for provisional
-         * correlation id to be updated.
-         * The option is a <code>long</code> type.
-         * @group advanced
-         */
-        public T waitForProvisionCorrelationToBeUpdatedThreadSleepingTime(
-                long waitForProvisionCorrelationToBeUpdatedThreadSleepingTime) {
-            this.properties.put("waitForProvisionCorrelationToBeUpdatedThreadSleepingTime", waitForProvisionCorrelationToBeUpdatedThreadSleepingTime);
-            return (T) this;
-        }
-        /**
-         * Interval in millis to sleep each time while waiting for provisional
-         * correlation id to be updated.
-         * The option will be converted to a <code>long</code> type.
-         * @group advanced
-         */
-        public T waitForProvisionCorrelationToBeUpdatedThreadSleepingTime(
-                String waitForProvisionCorrelationToBeUpdatedThreadSleepingTime) {
-            this.properties.put("waitForProvisionCorrelationToBeUpdatedThreadSleepingTime", waitForProvisionCorrelationToBeUpdatedThreadSleepingTime);
-            return (T) this;
-        }
-        /**
-         * Password to use with the ConnectionFactory. You can also configure
-         * username/password directly on the ConnectionFactory.
-         * The option is a <code>java.lang.String</code> type.
-         * @group security
-         */
-        public T password(String password) {
-            this.properties.put("password", password);
-            return (T) this;
-        }
-        /**
-         * Username to use with the ConnectionFactory. You can also configure
-         * username/password directly on the ConnectionFactory.
-         * The option is a <code>java.lang.String</code> type.
-         * @group security
-         */
-        public T username(String username) {
-            this.properties.put("username", username);
-            return (T) this;
-        }
-        /**
-         * Specifies whether to use transacted mode.
-         * The option is a <code>boolean</code> type.
-         * @group transaction
-         */
-        public T transacted(boolean transacted) {
-            this.properties.put("transacted", transacted);
-            return (T) this;
-        }
-        /**
-         * Specifies whether to use transacted mode.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group transaction
-         */
-        public T transacted(String transacted) {
-            this.properties.put("transacted", transacted);
-            return (T) this;
-        }
-        /**
-         * If true, Camel will create a JmsTransactionManager, if there is no
-         * transactionManager injected when option transacted=true.
-         * The option is a <code>boolean</code> type.
-         * @group transaction (advanced)
-         */
-        public T lazyCreateTransactionManager(
-                boolean lazyCreateTransactionManager) {
-            this.properties.put("lazyCreateTransactionManager", lazyCreateTransactionManager);
-            return (T) this;
-        }
-        /**
-         * If true, Camel will create a JmsTransactionManager, if there is no
-         * transactionManager injected when option transacted=true.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group transaction (advanced)
-         */
-        public T lazyCreateTransactionManager(
-                String lazyCreateTransactionManager) {
-            this.properties.put("lazyCreateTransactionManager", lazyCreateTransactionManager);
-            return (T) this;
-        }
-        /**
-         * The Spring transaction manager to use.
-         * The option is a
-         * <code>org.springframework.transaction.PlatformTransactionManager</code> type.
-         * @group transaction (advanced)
-         */
-        public T transactionManager(Object transactionManager) {
-            this.properties.put("transactionManager", transactionManager);
-            return (T) this;
-        }
-        /**
-         * The Spring transaction manager to use.
-         * The option will be converted to a
-         * <code>org.springframework.transaction.PlatformTransactionManager</code> type.
-         * @group transaction (advanced)
-         */
-        public T transactionManager(String transactionManager) {
-            this.properties.put("transactionManager", transactionManager);
-            return (T) this;
-        }
-        /**
-         * The name of the transaction to use.
-         * The option is a <code>java.lang.String</code> type.
-         * @group transaction (advanced)
-         */
-        public T transactionName(String transactionName) {
-            this.properties.put("transactionName", transactionName);
-            return (T) this;
-        }
-        /**
-         * The timeout value of the transaction (in seconds), if using
-         * transacted mode.
-         * The option is a <code>int</code> type.
-         * @group transaction (advanced)
-         */
-        public T transactionTimeout(int transactionTimeout) {
-            this.properties.put("transactionTimeout", transactionTimeout);
-            return (T) this;
-        }
-        /**
-         * The timeout value of the transaction (in seconds), if using
-         * transacted mode.
-         * The option will be converted to a <code>int</code> type.
-         * @group transaction (advanced)
-         */
-        public T transactionTimeout(String transactionTimeout) {
-            this.properties.put("transactionTimeout", transactionTimeout);
-            return (T) this;
-        }
-    }
-
-    /**
-     * Builder for endpoint consumers for the AMQP component.
-     */
-    public static class AMQPConsumerBuilder
-            extends
-                AMQPCommonBuilder<AMQPConsumerBuilder>
-            implements
-                EndpointConsumerBuilder {
-        public AMQPConsumerBuilder(String path) {
-            super(path);
-        }
-        /**
-         * The JMS acknowledgement name, which is one of: SESSION_TRANSACTED,
-         * CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE.
-         * The option is a <code>java.lang.String</code> type.
-         * @group consumer
-         */
-        public AMQPConsumerBuilder acknowledgementModeName(
-                String acknowledgementModeName) {
-            this.properties.put("acknowledgementModeName", acknowledgementModeName);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Whether the JmsConsumer processes the Exchange asynchronously. If
-         * enabled then the JmsConsumer may pickup the next message from the JMS
-         * queue, while the previous message is being processed asynchronously
-         * (by the Asynchronous Routing Engine). This means that messages may be
-         * processed not 100% strictly in order. If disabled (as default) then
-         * the Exchange is fully processed before the JmsConsumer will pickup
-         * the next message from the JMS queue. Note if transacted has been
-         * enabled, then asyncConsumer=true does not run asynchronously, as
-         * transaction must be executed synchronously (Camel 3.0 may support
-         * async transactions).
-         * The option is a <code>boolean</code> type.
-         * @group consumer
-         */
-        public AMQPConsumerBuilder asyncConsumer(boolean asyncConsumer) {
-            this.properties.put("asyncConsumer", asyncConsumer);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Whether the JmsConsumer processes the Exchange asynchronously. If
-         * enabled then the JmsConsumer may pickup the next message from the JMS
-         * queue, while the previous message is being processed asynchronously
-         * (by the Asynchronous Routing Engine). This means that messages may be
-         * processed not 100% strictly in order. If disabled (as default) then
-         * the Exchange is fully processed before the JmsConsumer will pickup
-         * the next message from the JMS queue. Note if transacted has been
-         * enabled, then asyncConsumer=true does not run asynchronously, as
-         * transaction must be executed synchronously (Camel 3.0 may support
-         * async transactions).
-         * The option will be converted to a <code>boolean</code> type.
-         * @group consumer
-         */
-        public AMQPConsumerBuilder asyncConsumer(String asyncConsumer) {
-            this.properties.put("asyncConsumer", asyncConsumer);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Specifies whether the consumer container should auto-startup.
-         * The option is a <code>boolean</code> type.
-         * @group consumer
-         */
-        public AMQPConsumerBuilder autoStartup(boolean autoStartup) {
-            this.properties.put("autoStartup", autoStartup);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Specifies whether the consumer container should auto-startup.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group consumer
-         */
-        public AMQPConsumerBuilder autoStartup(String autoStartup) {
-            this.properties.put("autoStartup", autoStartup);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Allows for bridging the consumer to the Camel routing Error Handler,
-         * which mean any exceptions occurred while the consumer is trying to
-         * pickup incoming messages, or the likes, will now be processed as a
-         * message and handled by the routing Error Handler. By default the
-         * consumer will use the org.apache.camel.spi.ExceptionHandler to deal
-         * with exceptions, that will be logged at WARN or ERROR level and
-         * ignored.
-         * The option is a <code>boolean</code> type.
-         * @group consumer
-         */
-        public AMQPConsumerBuilder bridgeErrorHandler(boolean bridgeErrorHandler) {
-            this.properties.put("bridgeErrorHandler", bridgeErrorHandler);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Allows for bridging the consumer to the Camel routing Error Handler,
-         * which mean any exceptions occurred while the consumer is trying to
-         * pickup incoming messages, or the likes, will now be processed as a
-         * message and handled by the routing Error Handler. By default the
-         * consumer will use the org.apache.camel.spi.ExceptionHandler to deal
-         * with exceptions, that will be logged at WARN or ERROR level and
-         * ignored.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group consumer
-         */
-        public AMQPConsumerBuilder bridgeErrorHandler(String bridgeErrorHandler) {
-            this.properties.put("bridgeErrorHandler", bridgeErrorHandler);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Sets the cache level by ID for the underlying JMS resources. See
-         * cacheLevelName option for more details.
-         * The option is a <code>int</code> type.
-         * @group consumer
-         */
-        public AMQPConsumerBuilder cacheLevel(int cacheLevel) {
-            this.properties.put("cacheLevel", cacheLevel);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Sets the cache level by ID for the underlying JMS resources. See
-         * cacheLevelName option for more details.
-         * The option will be converted to a <code>int</code> type.
-         * @group consumer
-         */
-        public AMQPConsumerBuilder cacheLevel(String cacheLevel) {
-            this.properties.put("cacheLevel", cacheLevel);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Sets the cache level by name for the underlying JMS resources.
-         * Possible values are: CACHE_AUTO, CACHE_CONNECTION, CACHE_CONSUMER,
-         * CACHE_NONE, and CACHE_SESSION. The default setting is CACHE_AUTO. See
-         * the Spring documentation and Transactions Cache Levels for more
-         * information.
-         * The option is a <code>java.lang.String</code> type.
-         * @group consumer
-         */
-        public AMQPConsumerBuilder cacheLevelName(String cacheLevelName) {
-            this.properties.put("cacheLevelName", cacheLevelName);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Specifies the default number of concurrent consumers when consuming
-         * from JMS (not for request/reply over JMS). See also the
-         * maxMessagesPerTask option to control dynamic scaling up/down of
-         * threads. When doing request/reply over JMS then the option
-         * replyToConcurrentConsumers is used to control number of concurrent
-         * consumers on the reply message listener.
-         * The option is a <code>int</code> type.
-         * @group consumer
-         */
-        public AMQPConsumerBuilder concurrentConsumers(int concurrentConsumers) {
-            this.properties.put("concurrentConsumers", concurrentConsumers);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Specifies the default number of concurrent consumers when consuming
-         * from JMS (not for request/reply over JMS). See also the
-         * maxMessagesPerTask option to control dynamic scaling up/down of
-         * threads. When doing request/reply over JMS then the option
-         * replyToConcurrentConsumers is used to control number of concurrent
-         * consumers on the reply message listener.
-         * The option will be converted to a <code>int</code> type.
-         * @group consumer
-         */
-        public AMQPConsumerBuilder concurrentConsumers(
-                String concurrentConsumers) {
-            this.properties.put("concurrentConsumers", concurrentConsumers);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Specifies the maximum number of concurrent consumers when consuming
-         * from JMS (not for request/reply over JMS). See also the
-         * maxMessagesPerTask option to control dynamic scaling up/down of
-         * threads. When doing request/reply over JMS then the option
-         * replyToMaxConcurrentConsumers is used to control number of concurrent
-         * consumers on the reply message listener.
-         * The option is a <code>int</code> type.
-         * @group consumer
-         */
-        public AMQPConsumerBuilder maxConcurrentConsumers(
-                int maxConcurrentConsumers) {
-            this.properties.put("maxConcurrentConsumers", maxConcurrentConsumers);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Specifies the maximum number of concurrent consumers when consuming
-         * from JMS (not for request/reply over JMS). See also the
-         * maxMessagesPerTask option to control dynamic scaling up/down of
-         * threads. When doing request/reply over JMS then the option
-         * replyToMaxConcurrentConsumers is used to control number of concurrent
-         * consumers on the reply message listener.
-         * The option will be converted to a <code>int</code> type.
-         * @group consumer
-         */
-        public AMQPConsumerBuilder maxConcurrentConsumers(
-                String maxConcurrentConsumers) {
-            this.properties.put("maxConcurrentConsumers", maxConcurrentConsumers);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Provides an explicit ReplyTo destination, which overrides any
-         * incoming value of Message.getJMSReplyTo().
-         * The option is a <code>java.lang.String</code> type.
-         * @group consumer
-         */
-        public AMQPConsumerBuilder replyTo(String replyTo) {
-            this.properties.put("replyTo", replyTo);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Specifies whether to use persistent delivery by default for replies.
-         * The option is a <code>boolean</code> type.
-         * @group consumer
-         */
-        public AMQPConsumerBuilder replyToDeliveryPersistent(
-                boolean replyToDeliveryPersistent) {
-            this.properties.put("replyToDeliveryPersistent", replyToDeliveryPersistent);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Specifies whether to use persistent delivery by default for replies.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group consumer
-         */
-        public AMQPConsumerBuilder replyToDeliveryPersistent(
-                String replyToDeliveryPersistent) {
-            this.properties.put("replyToDeliveryPersistent", replyToDeliveryPersistent);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Sets the JMS selector to use.
-         * The option is a <code>java.lang.String</code> type.
-         * @group consumer
-         */
-        public AMQPConsumerBuilder selector(String selector) {
-            this.properties.put("selector", selector);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Set whether to make the subscription durable. The durable
-         * subscription name to be used can be specified through the
-         * subscriptionName property. Default is false. Set this to true to
-         * register a durable subscription, typically in combination with a
-         * subscriptionName value (unless your message listener class name is
-         * good enough as subscription name). Only makes sense when listening to
-         * a topic (pub-sub domain), therefore this method switches the
-         * pubSubDomain flag as well.
-         * The option is a <code>boolean</code> type.
-         * @group consumer
-         */
-        public AMQPConsumerBuilder subscriptionDurable(
-                boolean subscriptionDurable) {
-            this.properties.put("subscriptionDurable", subscriptionDurable);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Set whether to make the subscription durable. The durable
-         * subscription name to be used can be specified through the
-         * subscriptionName property. Default is false. Set this to true to
-         * register a durable subscription, typically in combination with a
-         * subscriptionName value (unless your message listener class name is
-         * good enough as subscription name). Only makes sense when listening to
-         * a topic (pub-sub domain), therefore this method switches the
-         * pubSubDomain flag as well.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group consumer
-         */
-        public AMQPConsumerBuilder subscriptionDurable(
-                String subscriptionDurable) {
-            this.properties.put("subscriptionDurable", subscriptionDurable);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Set the name of a subscription to create. To be applied in case of a
-         * topic (pub-sub domain) with a shared or durable subscription. The
-         * subscription name needs to be unique within this client's JMS client
-         * id. Default is the class name of the specified message listener.
-         * Note: Only 1 concurrent consumer (which is the default of this
-         * message listener container) is allowed for each subscription, except
-         * for a shared subscription (which requires JMS 2.0).
-         * The option is a <code>java.lang.String</code> type.
-         * @group consumer
-         */
-        public AMQPConsumerBuilder subscriptionName(String subscriptionName) {
-            this.properties.put("subscriptionName", subscriptionName);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Set whether to make the subscription shared. The shared subscription
-         * name to be used can be specified through the subscriptionName
-         * property. Default is false. Set this to true to register a shared
-         * subscription, typically in combination with a subscriptionName value
-         * (unless your message listener class name is good enough as
-         * subscription name). Note that shared subscriptions may also be
-         * durable, so this flag can (and often will) be combined with
-         * subscriptionDurable as well. Only makes sense when listening to a
-         * topic (pub-sub domain), therefore this method switches the
-         * pubSubDomain flag as well. Requires a JMS 2.0 compatible message
-         * broker.
-         * The option is a <code>boolean</code> type.
-         * @group consumer
-         */
-        public AMQPConsumerBuilder subscriptionShared(boolean subscriptionShared) {
-            this.properties.put("subscriptionShared", subscriptionShared);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Set whether to make the subscription shared. The shared subscription
-         * name to be used can be specified through the subscriptionName
-         * property. Default is false. Set this to true to register a shared
-         * subscription, typically in combination with a subscriptionName value
-         * (unless your message listener class name is good enough as
-         * subscription name). Note that shared subscriptions may also be
-         * durable, so this flag can (and often will) be combined with
-         * subscriptionDurable as well. Only makes sense when listening to a
-         * topic (pub-sub domain), therefore this method switches the
-         * pubSubDomain flag as well. Requires a JMS 2.0 compatible message
-         * broker.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group consumer
-         */
-        public AMQPConsumerBuilder subscriptionShared(String subscriptionShared) {
-            this.properties.put("subscriptionShared", subscriptionShared);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Specifies whether the consumer accept messages while it is stopping.
-         * You may consider enabling this option, if you start and stop JMS
-         * routes at runtime, while there are still messages enqueued on the
-         * queue. If this option is false, and you stop the JMS route, then
-         * messages may be rejected, and the JMS broker would have to attempt
-         * redeliveries, which yet again may be rejected, and eventually the
-         * message may be moved at a dead letter queue on the JMS broker. To
-         * avoid this its recommended to enable this option.
-         * The option is a <code>boolean</code> type.
-         * @group consumer (advanced)
-         */
-        public AMQPConsumerBuilder acceptMessagesWhileStopping(
-                boolean acceptMessagesWhileStopping) {
-            this.properties.put("acceptMessagesWhileStopping", acceptMessagesWhileStopping);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Specifies whether the consumer accept messages while it is stopping.
-         * You may consider enabling this option, if you start and stop JMS
-         * routes at runtime, while there are still messages enqueued on the
-         * queue. If this option is false, and you stop the JMS route, then
-         * messages may be rejected, and the JMS broker would have to attempt
-         * redeliveries, which yet again may be rejected, and eventually the
-         * message may be moved at a dead letter queue on the JMS broker. To
-         * avoid this its recommended to enable this option.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group consumer (advanced)
-         */
-        public AMQPConsumerBuilder acceptMessagesWhileStopping(
-                String acceptMessagesWhileStopping) {
-            this.properties.put("acceptMessagesWhileStopping", acceptMessagesWhileStopping);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Whether the DefaultMessageListenerContainer used in the reply
-         * managers for request-reply messaging allow the
-         * DefaultMessageListenerContainer#runningAllowed() flag to quick stop
-         * in case JmsConfiguration#isAcceptMessagesWhileStopping() is enabled,
-         * and org.apache.camel.CamelContext is currently being stopped. This
-         * quick stop ability is enabled by default in the regular JMS consumers
-         * but to enable for reply managers you must enable this flag.
-         * The option is a <code>boolean</code> type.
-         * @group consumer (advanced)
-         */
-        public AMQPConsumerBuilder allowReplyManagerQuickStop(
-                boolean allowReplyManagerQuickStop) {
-            this.properties.put("allowReplyManagerQuickStop", allowReplyManagerQuickStop);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Whether the DefaultMessageListenerContainer used in the reply
-         * managers for request-reply messaging allow the
-         * DefaultMessageListenerContainer#runningAllowed() flag to quick stop
-         * in case JmsConfiguration#isAcceptMessagesWhileStopping() is enabled,
-         * and org.apache.camel.CamelContext is currently being stopped. This
-         * quick stop ability is enabled by default in the regular JMS consumers
-         * but to enable for reply managers you must enable this flag.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group consumer (advanced)
-         */
-        public AMQPConsumerBuilder allowReplyManagerQuickStop(
-                String allowReplyManagerQuickStop) {
-            this.properties.put("allowReplyManagerQuickStop", allowReplyManagerQuickStop);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * The consumer type to use, which can be one of: Simple, Default, or
-         * Custom. The consumer type determines which Spring JMS listener to
-         * use. Default will use
-         * org.springframework.jms.listener.DefaultMessageListenerContainer,
-         * Simple will use
-         * org.springframework.jms.listener.SimpleMessageListenerContainer. When
-         * Custom is specified, the MessageListenerContainerFactory defined by
-         * the messageListenerContainerFactory option will determine what
-         * org.springframework.jms.listener.AbstractMessageListenerContainer to
-         * use.
-         * The option is a
-         * <code>org.apache.camel.component.jms.ConsumerType</code> type.
-         * @group consumer (advanced)
-         */
-        public AMQPConsumerBuilder consumerType(ConsumerType consumerType) {
-            this.properties.put("consumerType", consumerType);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * The consumer type to use, which can be one of: Simple, Default, or
-         * Custom. The consumer type determines which Spring JMS listener to
-         * use. Default will use
-         * org.springframework.jms.listener.DefaultMessageListenerContainer,
-         * Simple will use
-         * org.springframework.jms.listener.SimpleMessageListenerContainer. When
-         * Custom is specified, the MessageListenerContainerFactory defined by
-         * the messageListenerContainerFactory option will determine what
-         * org.springframework.jms.listener.AbstractMessageListenerContainer to
-         * use.
-         * The option will be converted to a
-         * <code>org.apache.camel.component.jms.ConsumerType</code> type.
-         * @group consumer (advanced)
-         */
-        public AMQPConsumerBuilder consumerType(String consumerType) {
-            this.properties.put("consumerType", consumerType);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Specifies what default TaskExecutor type to use in the
-         * DefaultMessageListenerContainer, for both consumer endpoints and the
-         * ReplyTo consumer of producer endpoints. Possible values: SimpleAsync
-         * (uses Spring's SimpleAsyncTaskExecutor) or ThreadPool (uses Spring's
-         * ThreadPoolTaskExecutor with optimal values - cached threadpool-like).
-         * If not set, it defaults to the previous behaviour, which uses a
-         * cached thread pool for consumer endpoints and SimpleAsync for reply
-         * consumers. The use of ThreadPool is recommended to reduce thread
-         * trash in elastic configurations with dynamically increasing and
-         * decreasing concurrent consumers.
-         * The option is a
-         * <code>org.apache.camel.component.jms.DefaultTaskExecutorType</code>
-         * type.
-         * @group consumer (advanced)
-         */
-        public AMQPConsumerBuilder defaultTaskExecutorType(
-                DefaultTaskExecutorType defaultTaskExecutorType) {
-            this.properties.put("defaultTaskExecutorType", defaultTaskExecutorType);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Specifies what default TaskExecutor type to use in the
-         * DefaultMessageListenerContainer, for both consumer endpoints and the
-         * ReplyTo consumer of producer endpoints. Possible values: SimpleAsync
-         * (uses Spring's SimpleAsyncTaskExecutor) or ThreadPool (uses Spring's
-         * ThreadPoolTaskExecutor with optimal values - cached threadpool-like).
-         * If not set, it defaults to the previous behaviour, which uses a
-         * cached thread pool for consumer endpoints and SimpleAsync for reply
-         * consumers. The use of ThreadPool is recommended to reduce thread
-         * trash in elastic configurations with dynamically increasing and
-         * decreasing concurrent consumers.
-         * The option will be converted to a
-         * <code>org.apache.camel.component.jms.DefaultTaskExecutorType</code>
-         * type.
-         * @group consumer (advanced)
-         */
-        public AMQPConsumerBuilder defaultTaskExecutorType(
-                String defaultTaskExecutorType) {
-            this.properties.put("defaultTaskExecutorType", defaultTaskExecutorType);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Enables eager loading of JMS properties and payload as soon as a
-         * message is loaded which generally is inefficient as the JMS
-         * properties may not be required but sometimes can catch early any
-         * issues with the underlying JMS provider and the use of JMS
-         * properties.
-         * The option is a <code>boolean</code> type.
-         * @group consumer (advanced)
-         */
-        public AMQPConsumerBuilder eagerLoadingOfProperties(
-                boolean eagerLoadingOfProperties) {
-            this.properties.put("eagerLoadingOfProperties", eagerLoadingOfProperties);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Enables eager loading of JMS properties and payload as soon as a
-         * message is loaded which generally is inefficient as the JMS
-         * properties may not be required but sometimes can catch early any
-         * issues with the underlying JMS provider and the use of JMS
-         * properties.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group consumer (advanced)
-         */
-        public AMQPConsumerBuilder eagerLoadingOfProperties(
-                String eagerLoadingOfProperties) {
-            this.properties.put("eagerLoadingOfProperties", eagerLoadingOfProperties);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * 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.
-         * The option is a <code>org.apache.camel.spi.ExceptionHandler</code>
-         * type.
-         * @group consumer (advanced)
-         */
-        public AMQPConsumerBuilder exceptionHandler(
-                ExceptionHandler exceptionHandler) {
-            this.properties.put("exceptionHandler", exceptionHandler);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * 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.
-         * The option will be converted to a
-         * <code>org.apache.camel.spi.ExceptionHandler</code> type.
-         * @group consumer (advanced)
-         */
-        public AMQPConsumerBuilder exceptionHandler(String exceptionHandler) {
-            this.properties.put("exceptionHandler", exceptionHandler);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Sets the exchange pattern when the consumer creates an exchange.
-         * The option is a <code>org.apache.camel.ExchangePattern</code> type.
-         * @group consumer (advanced)
-         */
-        public AMQPConsumerBuilder exchangePattern(
-                ExchangePattern exchangePattern) {
-            this.properties.put("exchangePattern", exchangePattern);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Sets the exchange pattern when the consumer creates an exchange.
-         * The option will be converted to a
-         * <code>org.apache.camel.ExchangePattern</code> type.
-         * @group consumer (advanced)
-         */
-        public AMQPConsumerBuilder exchangePattern(String exchangePattern) {
-            this.properties.put("exchangePattern", exchangePattern);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Specifies whether the listener session should be exposed when
-         * consuming messages.
-         * The option is a <code>boolean</code> type.
-         * @group consumer (advanced)
-         */
-        public AMQPConsumerBuilder exposeListenerSession(
-                boolean exposeListenerSession) {
-            this.properties.put("exposeListenerSession", exposeListenerSession);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Specifies whether the listener session should be exposed when
-         * consuming messages.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group consumer (advanced)
-         */
-        public AMQPConsumerBuilder exposeListenerSession(
-                String exposeListenerSession) {
-            this.properties.put("exposeListenerSession", exposeListenerSession);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Whether a JMS consumer is allowed to send a reply message to the same
-         * destination that the consumer is using to consume from. This prevents
-         * an endless loop by consuming and sending back the same message to
-         * itself.
-         * The option is a <code>boolean</code> type.
-         * @group consumer (advanced)
-         */
-        public AMQPConsumerBuilder replyToSameDestinationAllowed(
-                boolean replyToSameDestinationAllowed) {
-            this.properties.put("replyToSameDestinationAllowed", replyToSameDestinationAllowed);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Whether a JMS consumer is allowed to send a reply message to the same
-         * destination that the consumer is using to consume from. This prevents
-         * an endless loop by consuming and sending back the same message to
-         * itself.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group consumer (advanced)
-         */
-        public AMQPConsumerBuilder replyToSameDestinationAllowed(
-                String replyToSameDestinationAllowed) {
-            this.properties.put("replyToSameDestinationAllowed", replyToSameDestinationAllowed);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Allows you to specify a custom task executor for consuming messages.
-         * The option is a
-         * <code>org.springframework.core.task.TaskExecutor</code> type.
-         * @group consumer (advanced)
-         */
-        public AMQPConsumerBuilder taskExecutor(Object taskExecutor) {
-            this.properties.put("taskExecutor", taskExecutor);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Allows you to specify a custom task executor for consuming messages.
-         * The option will be converted to a
-         * <code>org.springframework.core.task.TaskExecutor</code> type.
-         * @group consumer (advanced)
-         */
-        public AMQPConsumerBuilder taskExecutor(String taskExecutor) {
-            this.properties.put("taskExecutor", taskExecutor);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Allows to configure the default errorHandler logging level for
-         * logging uncaught exceptions.
-         * The option is a <code>org.apache.camel.LoggingLevel</code> type.
-         * @group logging
-         */
-        public AMQPConsumerBuilder errorHandlerLoggingLevel(
-                LoggingLevel errorHandlerLoggingLevel) {
-            this.properties.put("errorHandlerLoggingLevel", errorHandlerLoggingLevel);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Allows to configure the default errorHandler logging level for
-         * logging uncaught exceptions.
-         * The option will be converted to a
-         * <code>org.apache.camel.LoggingLevel</code> type.
-         * @group logging
-         */
-        public AMQPConsumerBuilder errorHandlerLoggingLevel(
-                String errorHandlerLoggingLevel) {
-            this.properties.put("errorHandlerLoggingLevel", errorHandlerLoggingLevel);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Allows to control whether stacktraces should be logged or not, by the
-         * default errorHandler.
-         * The option is a <code>boolean</code> type.
-         * @group logging
-         */
-        public AMQPConsumerBuilder errorHandlerLogStackTrace(
-                boolean errorHandlerLogStackTrace) {
-            this.properties.put("errorHandlerLogStackTrace", errorHandlerLogStackTrace);
-            return (AMQPConsumerBuilder) this;
-        }
-        /**
-         * Allows to control whether stacktraces should be logged or not, by the
-         * default errorHandler.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group logging
-         */
-        public AMQPConsumerBuilder errorHandlerLogStackTrace(
-                String errorHandlerLogStackTrace) {
-            this.properties.put("errorHandlerLogStackTrace", errorHandlerLogStackTrace);
-            return (AMQPConsumerBuilder) this;
-        }
-    }
-
-    /**
-     * Builder for endpoint producers for the AMQP component.
-     */
-    public static class AMQPProducerBuilder
-            extends
-                AMQPCommonBuilder<AMQPProducerBuilder>
-            implements
-                EndpointProducerBuilder {
-        public AMQPProducerBuilder(String path) {
-            super(path);
-        }
-        /**
-         * Specifies the delivery mode to be used. Possibles values are those
-         * defined by javax.jms.DeliveryMode. NON_PERSISTENT = 1 and PERSISTENT
-         * = 2.
-         * The option is a <code>java.lang.Integer</code> type.
-         * @group producer
-         */
-        public AMQPProducerBuilder deliveryMode(Integer deliveryMode) {
-            this.properties.put("deliveryMode", deliveryMode);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Specifies the delivery mode to be used. Possibles values are those
-         * defined by javax.jms.DeliveryMode. NON_PERSISTENT = 1 and PERSISTENT
-         * = 2.
-         * The option will be converted to a <code>java.lang.Integer</code>
-         * type.
-         * @group producer
-         */
-        public AMQPProducerBuilder deliveryMode(String deliveryMode) {
-            this.properties.put("deliveryMode", deliveryMode);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Specifies whether persistent delivery is used by default.
-         * The option is a <code>boolean</code> type.
-         * @group producer
-         */
-        public AMQPProducerBuilder deliveryPersistent(boolean deliveryPersistent) {
-            this.properties.put("deliveryPersistent", deliveryPersistent);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Specifies whether persistent delivery is used by default.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group producer
-         */
-        public AMQPProducerBuilder deliveryPersistent(String deliveryPersistent) {
-            this.properties.put("deliveryPersistent", deliveryPersistent);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Set if the deliveryMode, priority or timeToLive qualities of service
-         * should be used when sending messages. This option is based on
-         * Spring's JmsTemplate. The deliveryMode, priority and timeToLive
-         * options are applied to the current endpoint. This contrasts with the
-         * preserveMessageQos option, which operates at message granularity,
-         * reading QoS properties exclusively from the Camel In message headers.
-         * The option is a <code>java.lang.Boolean</code> type.
-         * @group producer
-         */
-        public AMQPProducerBuilder explicitQosEnabled(Boolean explicitQosEnabled) {
-            this.properties.put("explicitQosEnabled", explicitQosEnabled);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Set if the deliveryMode, priority or timeToLive qualities of service
-         * should be used when sending messages. This option is based on
-         * Spring's JmsTemplate. The deliveryMode, priority and timeToLive
-         * options are applied to the current endpoint. This contrasts with the
-         * preserveMessageQos option, which operates at message granularity,
-         * reading QoS properties exclusively from the Camel In message headers.
-         * The option will be converted to a <code>java.lang.Boolean</code>
-         * type.
-         * @group producer
-         */
-        public AMQPProducerBuilder explicitQosEnabled(String explicitQosEnabled) {
-            this.properties.put("explicitQosEnabled", explicitQosEnabled);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Sets whether date headers should be formatted according to the ISO
-         * 8601 standard.
-         * The option is a <code>boolean</code> type.
-         * @group producer
-         */
-        public AMQPProducerBuilder formatDateHeadersToIso8601(
-                boolean formatDateHeadersToIso8601) {
-            this.properties.put("formatDateHeadersToIso8601", formatDateHeadersToIso8601);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Sets whether date headers should be formatted according to the ISO
-         * 8601 standard.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group producer
-         */
-        public AMQPProducerBuilder formatDateHeadersToIso8601(
-                String formatDateHeadersToIso8601) {
-            this.properties.put("formatDateHeadersToIso8601", formatDateHeadersToIso8601);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Set to true, if you want to send message using the QoS settings
-         * specified on the message, instead of the QoS settings on the JMS
-         * endpoint. The following three headers are considered JMSPriority,
-         * JMSDeliveryMode, and JMSExpiration. You can provide all or only some
-         * of them. If not provided, Camel will fall back to use the values from
-         * the endpoint instead. So, when using this option, the headers
-         * override the values from the endpoint. The explicitQosEnabled option,
-         * by contrast, will only use options set on the endpoint, and not
-         * values from the message header.
-         * The option is a <code>boolean</code> type.
-         * @group producer
-         */
-        public AMQPProducerBuilder preserveMessageQos(boolean preserveMessageQos) {
-            this.properties.put("preserveMessageQos", preserveMessageQos);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Set to true, if you want to send message using the QoS settings
-         * specified on the message, instead of the QoS settings on the JMS
-         * endpoint. The following three headers are considered JMSPriority,
-         * JMSDeliveryMode, and JMSExpiration. You can provide all or only some
-         * of them. If not provided, Camel will fall back to use the values from
-         * the endpoint instead. So, when using this option, the headers
-         * override the values from the endpoint. The explicitQosEnabled option,
-         * by contrast, will only use options set on the endpoint, and not
-         * values from the message header.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group producer
-         */
-        public AMQPProducerBuilder preserveMessageQos(String preserveMessageQos) {
-            this.properties.put("preserveMessageQos", preserveMessageQos);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Values greater than 1 specify the message priority when sending
-         * (where 0 is the lowest priority and 9 is the highest). The
-         * explicitQosEnabled option must also be enabled in order for this
-         * option to have any effect.
-         * The option is a <code>int</code> type.
-         * @group producer
-         */
-        public AMQPProducerBuilder priority(int priority) {
-            this.properties.put("priority", priority);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Values greater than 1 specify the message priority when sending
-         * (where 0 is the lowest priority and 9 is the highest). The
-         * explicitQosEnabled option must also be enabled in order for this
-         * option to have any effect.
-         * The option will be converted to a <code>int</code> type.
-         * @group producer
-         */
-        public AMQPProducerBuilder priority(String priority) {
-            this.properties.put("priority", priority);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Specifies the default number of concurrent consumers when doing
-         * request/reply over JMS. See also the maxMessagesPerTask option to
-         * control dynamic scaling up/down of threads.
-         * The option is a <code>int</code> type.
-         * @group producer
-         */
-        public AMQPProducerBuilder replyToConcurrentConsumers(
-                int replyToConcurrentConsumers) {
-            this.properties.put("replyToConcurrentConsumers", replyToConcurrentConsumers);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Specifies the default number of concurrent consumers when doing
-         * request/reply over JMS. See also the maxMessagesPerTask option to
-         * control dynamic scaling up/down of threads.
-         * The option will be converted to a <code>int</code> type.
-         * @group producer
-         */
-        public AMQPProducerBuilder replyToConcurrentConsumers(
-                String replyToConcurrentConsumers) {
-            this.properties.put("replyToConcurrentConsumers", replyToConcurrentConsumers);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Specifies the maximum number of concurrent consumers when using
-         * request/reply over JMS. See also the maxMessagesPerTask option to
-         * control dynamic scaling up/down of threads.
-         * The option is a <code>int</code> type.
-         * @group producer
-         */
-        public AMQPProducerBuilder replyToMaxConcurrentConsumers(
-                int replyToMaxConcurrentConsumers) {
-            this.properties.put("replyToMaxConcurrentConsumers", replyToMaxConcurrentConsumers);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Specifies the maximum number of concurrent consumers when using
-         * request/reply over JMS. See also the maxMessagesPerTask option to
-         * control dynamic scaling up/down of threads.
-         * The option will be converted to a <code>int</code> type.
-         * @group producer
-         */
-        public AMQPProducerBuilder replyToMaxConcurrentConsumers(
-                String replyToMaxConcurrentConsumers) {
-            this.properties.put("replyToMaxConcurrentConsumers", replyToMaxConcurrentConsumers);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Specifies the maximum number of concurrent consumers for continue
-         * routing when timeout occurred when using request/reply over JMS.
-         * The option is a <code>int</code> type.
-         * @group producer
-         */
-        public AMQPProducerBuilder replyToOnTimeoutMaxConcurrentConsumers(
-                int replyToOnTimeoutMaxConcurrentConsumers) {
-            this.properties.put("replyToOnTimeoutMaxConcurrentConsumers", replyToOnTimeoutMaxConcurrentConsumers);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Specifies the maximum number of concurrent consumers for continue
-         * routing when timeout occurred when using request/reply over JMS.
-         * The option will be converted to a <code>int</code> type.
-         * @group producer
-         */
-        public AMQPProducerBuilder replyToOnTimeoutMaxConcurrentConsumers(
-                String replyToOnTimeoutMaxConcurrentConsumers) {
-            this.properties.put("replyToOnTimeoutMaxConcurrentConsumers", replyToOnTimeoutMaxConcurrentConsumers);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Provides an explicit ReplyTo destination in the JMS message, which
-         * overrides the setting of replyTo. It is useful if you want to forward
-         * the message to a remote Queue and receive the reply message from the
-         * ReplyTo destination.
-         * The option is a <code>java.lang.String</code> type.
-         * @group producer
-         */
-        public AMQPProducerBuilder replyToOverride(String replyToOverride) {
-            this.properties.put("replyToOverride", replyToOverride);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Allows for explicitly specifying which kind of strategy to use for
-         * replyTo queues when doing request/reply over JMS. Possible values
-         * are: Temporary, Shared, or Exclusive. By default Camel will use
-         * temporary queues. However if replyTo has been configured, then Shared
-         * is used by default. This option allows you to use exclusive queues
-         * instead of shared ones. See Camel JMS documentation for more details,
-         * and especially the notes about the implications if running in a
-         * clustered environment, and the fact that Shared reply queues has
-         * lower performance than its alternatives Temporary and Exclusive.
-         * The option is a
-         * <code>org.apache.camel.component.jms.ReplyToType</code> type.
-         * @group producer
-         */
-        public AMQPProducerBuilder replyToType(ReplyToType replyToType) {
-            this.properties.put("replyToType", replyToType);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Allows for explicitly specifying which kind of strategy to use for
-         * replyTo queues when doing request/reply over JMS. Possible values
-         * are: Temporary, Shared, or Exclusive. By default Camel will use
-         * temporary queues. However if replyTo has been configured, then Shared
-         * is used by default. This option allows you to use exclusive queues
-         * instead of shared ones. See Camel JMS documentation for more details,
-         * and especially the notes about the implications if running in a
-         * clustered environment, and the fact that Shared reply queues has
-         * lower performance than its alternatives Temporary and Exclusive.
-         * The option will be converted to a
-         * <code>org.apache.camel.component.jms.ReplyToType</code> type.
-         * @group producer
-         */
-        public AMQPProducerBuilder replyToType(String replyToType) {
-            this.properties.put("replyToType", replyToType);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * The timeout for waiting for a reply when using the InOut Exchange
-         * Pattern (in milliseconds). The default is 20 seconds. You can include
-         * the header CamelJmsRequestTimeout to override this endpoint
-         * configured timeout value, and thus have per message individual
-         * timeout values. See also the requestTimeoutCheckerInterval option.
-         * The option is a <code>long</code> type.
-         * @group producer
-         */
-        public AMQPProducerBuilder requestTimeout(long requestTimeout) {
-            this.properties.put("requestTimeout", requestTimeout);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * The timeout for waiting for a reply when using the InOut Exchange
-         * Pattern (in milliseconds). The default is 20 seconds. You can include
-         * the header CamelJmsRequestTimeout to override this endpoint
-         * configured timeout value, and thus have per message individual
-         * timeout values. See also the requestTimeoutCheckerInterval option.
-         * The option will be converted to a <code>long</code> type.
-         * @group producer
-         */
-        public AMQPProducerBuilder requestTimeout(String requestTimeout) {
-            this.properties.put("requestTimeout", requestTimeout);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * When sending messages, specifies the time-to-live of the message (in
-         * milliseconds).
-         * The option is a <code>long</code> type.
-         * @group producer
-         */
-        public AMQPProducerBuilder timeToLive(long timeToLive) {
-            this.properties.put("timeToLive", timeToLive);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * When sending messages, specifies the time-to-live of the message (in
-         * milliseconds).
-         * The option will be converted to a <code>long</code> type.
-         * @group producer
-         */
-        public AMQPProducerBuilder timeToLive(String timeToLive) {
-            this.properties.put("timeToLive", timeToLive);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * This option is used to allow additional headers which may have values
-         * that are invalid according to JMS specification. For example some
-         * message systems such as WMQ do this with header names using prefix
-         * JMS_IBM_MQMD_ containing values with byte array or other invalid
-         * types. You can specify multiple header names separated by comma, and
-         * use as suffix for wildcard matching.
-         * The option is a <code>java.lang.String</code> type.
-         * @group producer (advanced)
-         */
-        public AMQPProducerBuilder allowAdditionalHeaders(
-                String allowAdditionalHeaders) {
-            this.properties.put("allowAdditionalHeaders", allowAdditionalHeaders);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Whether to allow sending messages with no body. If this option is
-         * false and the message body is null, then an JMSException is thrown.
-         * The option is a <code>boolean</code> type.
-         * @group producer (advanced)
-         */
-        public AMQPProducerBuilder allowNullBody(boolean allowNullBody) {
-            this.properties.put("allowNullBody", allowNullBody);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Whether to allow sending messages with no body. If this option is
-         * false and the message body is null, then an JMSException is thrown.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group producer (advanced)
-         */
-        public AMQPProducerBuilder allowNullBody(String allowNullBody) {
-            this.properties.put("allowNullBody", allowNullBody);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * If true, Camel will always make a JMS message copy of the message
-         * when it is passed to the producer for sending. Copying the message is
-         * needed in some situations, such as when a
-         * replyToDestinationSelectorName is set (incidentally, Camel will set
-         * the alwaysCopyMessage option to true, if a
-         * replyToDestinationSelectorName is set).
-         * The option is a <code>boolean</code> type.
-         * @group producer (advanced)
-         */
-        public AMQPProducerBuilder alwaysCopyMessage(boolean alwaysCopyMessage) {
-            this.properties.put("alwaysCopyMessage", alwaysCopyMessage);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * If true, Camel will always make a JMS message copy of the message
-         * when it is passed to the producer for sending. Copying the message is
-         * needed in some situations, such as when a
-         * replyToDestinationSelectorName is set (incidentally, Camel will set
-         * the alwaysCopyMessage option to true, if a
-         * replyToDestinationSelectorName is set).
-         * The option will be converted to a <code>boolean</code> type.
-         * @group producer (advanced)
-         */
-        public AMQPProducerBuilder alwaysCopyMessage(String alwaysCopyMessage) {
-            this.properties.put("alwaysCopyMessage", alwaysCopyMessage);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Use this JMS property to correlate messages in InOut exchange pattern
-         * (request-reply) instead of JMSCorrelationID property. This allows you
-         * to exchange messages with systems that do not correlate messages
-         * using JMSCorrelationID JMS property. If used JMSCorrelationID will
-         * not be used or set by Camel. The value of here named property will be
-         * generated if not supplied in the header of the message under the same
-         * name.
-         * The option is a <code>java.lang.String</code> type.
-         * @group producer (advanced)
-         */
-        public AMQPProducerBuilder correlationProperty(
-                String correlationProperty) {
-            this.properties.put("correlationProperty", correlationProperty);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Use this option to force disabling time to live. For example when you
-         * do request/reply over JMS, then Camel will by default use the
-         * requestTimeout value as time to live on the message being sent. The
-         * problem is that the sender and receiver systems have to have their
-         * clocks synchronized, so they are in sync. This is not always so easy
-         * to archive. So you can use disableTimeToLive=true to not set a time
-         * to live value on the sent message. Then the message will not expire
-         * on the receiver system. See below in section About time to live for
-         * more details.
-         * The option is a <code>boolean</code> type.
-         * @group producer (advanced)
-         */
-        public AMQPProducerBuilder disableTimeToLive(boolean disableTimeToLive) {
-            this.properties.put("disableTimeToLive", disableTimeToLive);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Use this option to force disabling time to live. For example when you
-         * do request/reply over JMS, then Camel will by default use the
-         * requestTimeout value as time to live on the message being sent. The
-         * problem is that the sender and receiver systems have to have their
-         * clocks synchronized, so they are in sync. This is not always so easy
-         * to archive. So you can use disableTimeToLive=true to not set a time
-         * to live value on the sent message. Then the message will not expire
-         * on the receiver system. See below in section About time to live for
-         * more details.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group producer (advanced)
-         */
-        public AMQPProducerBuilder disableTimeToLive(String disableTimeToLive) {
-            this.properties.put("disableTimeToLive", disableTimeToLive);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * When using mapJmsMessage=false Camel will create a new JMS message to
-         * send to a new JMS destination if you touch the headers (get or set)
-         * during the route. Set this option to true to force Camel to send the
-         * original JMS message that was received.
-         * The option is a <code>boolean</code> type.
-         * @group producer (advanced)
-         */
-        public AMQPProducerBuilder forceSendOriginalMessage(
-                boolean forceSendOriginalMessage) {
-            this.properties.put("forceSendOriginalMessage", forceSendOriginalMessage);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * When using mapJmsMessage=false Camel will create a new JMS message to
-         * send to a new JMS destination if you touch the headers (get or set)
-         * during the route. Set this option to true to force Camel to send the
-         * original JMS message that was received.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group producer (advanced)
-         */
-        public AMQPProducerBuilder forceSendOriginalMessage(
-                String forceSendOriginalMessage) {
-            this.properties.put("forceSendOriginalMessage", forceSendOriginalMessage);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Only applicable when sending to JMS destination using InOnly (eg fire
-         * and forget). Enabling this option will enrich the Camel Exchange with
-         * the actual JMSMessageID that was used by the JMS client when the
-         * message was sent to the JMS destination.
-         * The option is a <code>boolean</code> type.
-         * @group producer (advanced)
-         */
-        public AMQPProducerBuilder includeSentJMSMessageID(
-                boolean includeSentJMSMessageID) {
-            this.properties.put("includeSentJMSMessageID", includeSentJMSMessageID);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Only applicable when sending to JMS destination using InOnly (eg fire
-         * and forget). Enabling this option will enrich the Camel Exchange with
-         * the actual JMSMessageID that was used by the JMS client when the
-         * message was sent to the JMS destination.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group producer (advanced)
-         */
-        public AMQPProducerBuilder includeSentJMSMessageID(
-                String includeSentJMSMessageID) {
-            this.properties.put("includeSentJMSMessageID", includeSentJMSMessageID);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Sets the cache level by name for the reply consumer when doing
-         * request/reply over JMS. This option only applies when using fixed
-         * reply queues (not temporary). Camel will by default use:
-         * CACHE_CONSUMER for exclusive or shared w/ replyToSelectorName. And
-         * CACHE_SESSION for shared without replyToSelectorName. Some JMS
-         * brokers such as IBM WebSphere may require to set the
-         * replyToCacheLevelName=CACHE_NONE to work. Note: If using temporary
-         * queues then CACHE_NONE is not allowed, and you must use a higher
-         * value such as CACHE_CONSUMER or CACHE_SESSION.
-         * The option is a <code>java.lang.String</code> type.
-         * @group producer (advanced)
-         */
-        public AMQPProducerBuilder replyToCacheLevelName(
-                String replyToCacheLevelName) {
-            this.properties.put("replyToCacheLevelName", replyToCacheLevelName);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Sets the JMS Selector using the fixed name to be used so you can
-         * filter out your own replies from the others when using a shared queue
-         * (that is, if you are not using a temporary reply queue).
-         * The option is a <code>java.lang.String</code> type.
-         * @group producer (advanced)
-         */
-        public AMQPProducerBuilder replyToDestinationSelectorName(
-                String replyToDestinationSelectorName) {
-            this.properties.put("replyToDestinationSelectorName", replyToDestinationSelectorName);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Sets whether StreamMessage type is enabled or not. Message payloads
-         * of streaming kind such as files, InputStream, etc will either by sent
-         * as BytesMessage or StreamMessage. This option controls which kind
-         * will be used. By default BytesMessage is used which enforces the
-         * entire message payload to be read into memory. By enabling this
-         * option the message payload is read into memory in chunks and each
-         * chunk is then written to the StreamMessage until no more data.
-         * The option is a <code>boolean</code> type.
-         * @group producer (advanced)
-         */
-        public AMQPProducerBuilder streamMessageTypeEnabled(
-                boolean streamMessageTypeEnabled) {
-            this.properties.put("streamMessageTypeEnabled", streamMessageTypeEnabled);
-            return (AMQPProducerBuilder) this;
-        }
-        /**
-         * Sets whether StreamMessage type is enabled or not. Message payloads
-         * of streaming kind such as files, InputStream, etc will either by sent
-         * as BytesMessage or StreamMessage. This option controls which kind
-         * will be used. By default BytesMessage is used which enforces the
-         * entire message payload to be read into memory. By enabling this
-         * option the message payload is read into memory in chunks and each
-         * chunk is then written to the StreamMessage until no more data.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group producer (advanced)
-         */
-        public AMQPProducerBuilder streamMessageTypeEnabled(
-                String streamMessageTypeEnabled) {
-            this.properties.put("streamMessageTypeEnabled", streamMessageTypeEnabled);
-            return (AMQPProducerBuilder) this;
-        }
-    }
-
-    /**
-     * Proxy enum for <code>org.apache.camel.component.jms.JmsMessageType</code>
-     * enum.
-     */
-    public static enum JmsMessageType {
-        Bytes, Map, Object, Stream, Text, Blob;
-    }
-
-    /**
-     * Proxy enum for <code>org.apache.camel.component.jms.ConsumerType</code>
-     * enum.
-     */
-    public static enum ConsumerType {
-        Simple, Default, Custom;
-    }
-
-    /**
-     * Proxy enum for
-     * <code>org.apache.camel.component.jms.DefaultTaskExecutorType</code> enum.
-     */
-    public static enum DefaultTaskExecutorType {
-        ThreadPool, SimpleAsync;
-    }
-
-    /**
-     * Proxy enum for <code>org.apache.camel.component.jms.ReplyToType</code>
-     * enum.
-     */
-    public static enum ReplyToType {
-        Temporary, Shared, Exclusive;
-    }
-    /**
-     * Messaging with AMQP protocol using Apache QPid Client. Creates a builder
-     * to build a consumer endpoint for the AMQP component.
-     */
-    public default AMQPConsumerBuilder fromAMQP(String path) {
-        return new AMQPConsumerBuilder(path);
-    }
-    /**
-     * Messaging with AMQP protocol using Apache QPid Client. Creates a builder
-     * to build a producer endpoint for the AMQP component.
-     */
-    public default AMQPProducerBuilder toAMQP(String path) {
-        return new AMQPProducerBuilder(path);
-    }
-}
\ No newline at end of file
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/endpoint/AMQPEndpointBuilderFactory.java b/core/camel-core/src/main/java/org/apache/camel/model/endpoint/AMQPEndpointBuilderFactory.java
new file mode 100644
index 0000000..621fb3b
--- /dev/null
+++ b/core/camel-core/src/main/java/org/apache/camel/model/endpoint/AMQPEndpointBuilderFactory.java
@@ -0,0 +1,4637 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.model.endpoint;
+
+import javax.annotation.Generated;
+import org.apache.camel.ExchangePattern;
+import org.apache.camel.LoggingLevel;
+import org.apache.camel.model.AbstractEndpointBuilder;
+import org.apache.camel.model.EndpointConsumerBuilder;
+import org.apache.camel.model.EndpointProducerBuilder;
+import org.apache.camel.spi.ExceptionHandler;
+import org.apache.camel.spi.HeaderFilterStrategy;
+
+/**
+ * Messaging with AMQP protocol using Apache QPid Client.
+ * 
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.EndpointDslMojo")
+public interface AMQPEndpointBuilderFactory {
+
+
+    /**
+     * Builder for endpoint consumers for the AMQP component.
+     */
+    public interface AMQPEndpointConsumerBuilder
+            extends
+                EndpointConsumerBuilder {
+        public default AdvancedAMQPEndpointConsumerBuilder advanced() {
+            return (AdvancedAMQPEndpointConsumerBuilder) this;
+        }
+        /**
+         * The kind of destination to use.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AMQPEndpointConsumerBuilder destinationType(
+                String destinationType) {
+            setProperty("destinationType", destinationType);
+            return this;
+        }
+        /**
+         * Name of the queue or topic to use as destination.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AMQPEndpointConsumerBuilder destinationName(
+                String destinationName) {
+            setProperty("destinationName", destinationName);
+            return this;
+        }
+        /**
+         * Sets the JMS client ID to use. Note that this value, if specified,
+         * must be unique and can only be used by a single JMS connection
+         * instance. It is typically only required for durable topic
+         * subscriptions. If using Apache ActiveMQ you may prefer to use Virtual
+         * Topics instead.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AMQPEndpointConsumerBuilder clientId(String clientId) {
+            setProperty("clientId", clientId);
+            return this;
+        }
+        /**
+         * Sets the default connection factory to be used if a connection
+         * factory is not specified for either
+         * setTemplateConnectionFactory(ConnectionFactory) or
+         * setListenerConnectionFactory(ConnectionFactory).
+         * The option is a <code>javax.jms.ConnectionFactory</code> type.
+         * @group common
+         */
+        public default AMQPEndpointConsumerBuilder connectionFactory(
+                Object connectionFactory) {
+            setProperty("connectionFactory", connectionFactory);
+            return this;
+        }
+        /**
+         * Sets the default connection factory to be used if a connection
+         * factory is not specified for either
+         * setTemplateConnectionFactory(ConnectionFactory) or
+         * setListenerConnectionFactory(ConnectionFactory).
+         * The option will be converted to a
+         * <code>javax.jms.ConnectionFactory</code> type.
+         * @group common
+         */
+        public default AMQPEndpointConsumerBuilder connectionFactory(
+                String connectionFactory) {
+            setProperty("connectionFactory", connectionFactory);
+            return this;
+        }
+        /**
+         * Specifies whether Camel ignores the JMSReplyTo header in messages. If
+         * true, Camel does not send a reply back to the destination specified
+         * in the JMSReplyTo header. You can use this option if you want Camel
+         * to consume from a route and you do not want Camel to automatically
+         * send back a reply message because another component in your code
+         * handles the reply message. You can also use this option if you want
+         * to use Camel as a proxy between different message brokers and you
+         * want to route message from one system to another.
+         * The option is a <code>boolean</code> type.
+         * @group common
+         */
+        public default AMQPEndpointConsumerBuilder disableReplyTo(
+                boolean disableReplyTo) {
+            setProperty("disableReplyTo", disableReplyTo);
+            return this;
+        }
+        /**
+         * Specifies whether Camel ignores the JMSReplyTo header in messages. If
+         * true, Camel does not send a reply back to the destination specified
+         * in the JMSReplyTo header. You can use this option if you want Camel
+         * to consume from a route and you do not want Camel to automatically
+         * send back a reply message because another component in your code
+         * handles the reply message. You can also use this option if you want
+         * to use Camel as a proxy between different message brokers and you
+         * want to route message from one system to another.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group common
+         */
+        public default AMQPEndpointConsumerBuilder disableReplyTo(
+                String disableReplyTo) {
+            setProperty("disableReplyTo", disableReplyTo);
+            return this;
+        }
+        /**
+         * The durable subscriber name for specifying durable topic
+         * subscriptions. The clientId option must be configured as well.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AMQPEndpointConsumerBuilder durableSubscriptionName(
+                String durableSubscriptionName) {
+            setProperty("durableSubscriptionName", durableSubscriptionName);
+            return this;
+        }
+        /**
+         * Allows you to force the use of a specific javax.jms.Message
+         * implementation for sending JMS messages. Possible values are: Bytes,
+         * Map, Object, Stream, Text. By default, Camel would determine which
+         * JMS message type to use from the In body type. This option allows you
+         * to specify it.
+         * The option is a
+         * <code>org.apache.camel.component.jms.JmsMessageType</code> type.
+         * @group common
+         */
+        public default AMQPEndpointConsumerBuilder jmsMessageType(
+                JmsMessageType jmsMessageType) {
+            setProperty("jmsMessageType", jmsMessageType);
+            return this;
+        }
+        /**
+         * Allows you to force the use of a specific javax.jms.Message
+         * implementation for sending JMS messages. Possible values are: Bytes,
+         * Map, Object, Stream, Text. By default, Camel would determine which
+         * JMS message type to use from the In body type. This option allows you
+         * to specify it.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.jms.JmsMessageType</code> type.
+         * @group common
+         */
+        public default AMQPEndpointConsumerBuilder jmsMessageType(
+                String jmsMessageType) {
+            setProperty("jmsMessageType", jmsMessageType);
+            return this;
+        }
+        /**
+         * Specifies whether to test the connection on startup. This ensures
+         * that when Camel starts that all the JMS consumers have a valid
+         * connection to the JMS broker. If a connection cannot be granted then
+         * Camel throws an exception on startup. This ensures that Camel is not
+         * started with failed connections. The JMS producers is tested as well.
+         * The option is a <code>boolean</code> type.
+         * @group common
+         */
+        public default AMQPEndpointConsumerBuilder testConnectionOnStartup(
+                boolean testConnectionOnStartup) {
+            setProperty("testConnectionOnStartup", testConnectionOnStartup);
+            return this;
+        }
+        /**
+         * Specifies whether to test the connection on startup. This ensures
+         * that when Camel starts that all the JMS consumers have a valid
+         * connection to the JMS broker. If a connection cannot be granted then
+         * Camel throws an exception on startup. This ensures that Camel is not
+         * started with failed connections. The JMS producers is tested as well.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group common
+         */
+        public default AMQPEndpointConsumerBuilder testConnectionOnStartup(
+                String testConnectionOnStartup) {
+            setProperty("testConnectionOnStartup", testConnectionOnStartup);
+            return this;
+        }
+        /**
+         * The JMS acknowledgement name, which is one of: SESSION_TRANSACTED,
+         * CLIENT_ACKNOWLEDGE, AUTO_ACKNOWLEDGE, DUPS_OK_ACKNOWLEDGE.
+         * The option is a <code>java.lang.String</code> type.
+         * @group consumer
+         */
+        public default AMQPEndpointConsumerBuilder acknowledgementModeName(
+                String acknowledgementModeName) {
+            setProperty("acknowledgementModeName", acknowledgementModeName);
+            return this;
+        }
+        /**
+         * Whether the JmsConsumer processes the Exchange asynchronously. If
+         * enabled then the JmsConsumer may pickup the next message from the JMS
+         * queue, while the previous message is being processed asynchronously
+         * (by the Asynchronous Routing Engine). This means that messages may be
+         * processed not 100% strictly in order. If disabled (as default) then
+         * the Exchange is fully processed before the JmsConsumer will pickup
+         * the next message from the JMS queue. Note if transacted has been
+         * enabled, then asyncConsumer=true does not run asynchronously, as
+         * transaction must be executed synchronously (Camel 3.0 may support
+         * async transactions).
+         * The option is a <code>boolean</code> type.
+         * @group consumer
+         */
+        public default AMQPEndpointConsumerBuilder asyncConsumer(
+                boolean asyncConsumer) {
+            setProperty("asyncConsumer", asyncConsumer);
+            return this;
+        }
+        /**
+         * Whether the JmsConsumer processes the Exchange asynchronously. If
+         * enabled then the JmsConsumer may pickup the next message from the JMS
+         * queue, while the previous message is being processed asynchronously
+         * (by the Asynchronous Routing Engine). This means that messages may be
+         * processed not 100% strictly in order. If disabled (as default) then
+         * the Exchange is fully processed before the JmsConsumer will pickup
+         * the next message from the JMS queue. Note if transacted has been
+         * enabled, then asyncConsumer=true does not run asynchronously, as
+         * transaction must be executed synchronously (Camel 3.0 may support
+         * async transactions).
+         * The option will be converted to a <code>boolean</code> type.
+         * @group consumer
+         */
+        public default AMQPEndpointConsumerBuilder asyncConsumer(
+                String asyncConsumer) {
+            setProperty("asyncConsumer", asyncConsumer);
+            return this;
+        }
+        /**
+         * Specifies whether the consumer container should auto-startup.
+         * The option is a <code>boolean</code> type.
+         * @group consumer
+         */
+        public default AMQPEndpointConsumerBuilder autoStartup(
+                boolean autoStartup) {
+            setProperty("autoStartup", autoStartup);
+            return this;
+        }
+        /**
+         * Specifies whether the consumer container should auto-startup.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group consumer
+         */
+        public default AMQPEndpointConsumerBuilder autoStartup(
+                String autoStartup) {
+            setProperty("autoStartup", autoStartup);
+            return this;
+        }
+        /**
+         * Allows for bridging the consumer to the Camel routing Error Handler,
+         * which mean any exceptions occurred while the consumer is trying to
+         * pickup incoming messages, or the likes, will now be processed as a
+         * message and handled by the routing Error Handler. By default the
+         * consumer will use the org.apache.camel.spi.ExceptionHandler to deal
+         * with exceptions, that will be logged at WARN or ERROR level and
+         * ignored.
+         * The option is a <code>boolean</code> type.
+         * @group consumer
+         */
+        public default AMQPEndpointConsumerBuilder bridgeErrorHandler(
+                boolean bridgeErrorHandler) {
+            setProperty("bridgeErrorHandler", bridgeErrorHandler);
+            return this;
+        }
+        /**
+         * Allows for bridging the consumer to the Camel routing Error Handler,
+         * which mean any exceptions occurred while the consumer is trying to
+         * pickup incoming messages, or the likes, will now be processed as a
+         * message and handled by the routing Error Handler. By default the
+         * consumer will use the org.apache.camel.spi.ExceptionHandler to deal
+         * with exceptions, that will be logged at WARN or ERROR level and
+         * ignored.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group consumer
+         */
+        public default AMQPEndpointConsumerBuilder bridgeErrorHandler(
+                String bridgeErrorHandler) {
+            setProperty("bridgeErrorHandler", bridgeErrorHandler);
+            return this;
+        }
+        /**
+         * Sets the cache level by ID for the underlying JMS resources. See
+         * cacheLevelName option for more details.
+         * The option is a <code>int</code> type.
+         * @group consumer
+         */
+        public default AMQPEndpointConsumerBuilder cacheLevel(int cacheLevel) {
+            setProperty("cacheLevel", cacheLevel);
+            return this;
+        }
+        /**
+         * Sets the cache level by ID for the underlying JMS resources. See
+         * cacheLevelName option for more details.
+         * The option will be converted to a <code>int</code> type.
+         * @group consumer
+         */
+        public default AMQPEndpointConsumerBuilder cacheLevel(String cacheLevel) {
+            setProperty("cacheLevel", cacheLevel);
+            return this;
+        }
+        /**
+         * Sets the cache level by name for the underlying JMS resources.
+         * Possible values are: CACHE_AUTO, CACHE_CONNECTION, CACHE_CONSUMER,
+         * CACHE_NONE, and CACHE_SESSION. The default setting is CACHE_AUTO. See
+         * the Spring documentation and Transactions Cache Levels for more
+         * information.
+         * The option is a <code>java.lang.String</code> type.
+         * @group consumer
+         */
+        public default AMQPEndpointConsumerBuilder cacheLevelName(
+                String cacheLevelName) {
+            setProperty("cacheLevelName", cacheLevelName);
+            return this;
+        }
+        /**
+         * Specifies the default number of concurrent consumers when consuming
+         * from JMS (not for request/reply over JMS). See also the
+         * maxMessagesPerTask option to control dynamic scaling up/down of
+         * threads. When doing request/reply over JMS then the option
+         * replyToConcurrentConsumers is used to control number of concurrent
+         * consumers on the reply message listener.
+         * The option is a <code>int</code> type.
+         * @group consumer
+         */
+        public default AMQPEndpointConsumerBuilder concurrentConsumers(
+                int concurrentConsumers) {
+            setProperty("concurrentConsumers", concurrentConsumers);
+            return this;
+        }
+        /**
+         * Specifies the default number of concurrent consumers when consuming
+         * from JMS (not for request/reply over JMS). See also the
+         * maxMessagesPerTask option to control dynamic scaling up/down of
+         * threads. When doing request/reply over JMS then the option
+         * replyToConcurrentConsumers is used to control number of concurrent
+         * consumers on the reply message listener.
+         * The option will be converted to a <code>int</code> type.
+         * @group consumer
+         */
+        public default AMQPEndpointConsumerBuilder concurrentConsumers(
+                String concurrentConsumers) {
+            setProperty("concurrentConsumers", concurrentConsumers);
+            return this;
+        }
+        /**
+         * Specifies the maximum number of concurrent consumers when consuming
+         * from JMS (not for request/reply over JMS). See also the
+         * maxMessagesPerTask option to control dynamic scaling up/down of
+         * threads. When doing request/reply over JMS then the option
+         * replyToMaxConcurrentConsumers is used to control number of concurrent
+         * consumers on the reply message listener.
+         * The option is a <code>int</code> type.
+         * @group consumer
+         */
+        public default AMQPEndpointConsumerBuilder maxConcurrentConsumers(
+                int maxConcurrentConsumers) {
+            setProperty("maxConcurrentConsumers", maxConcurrentConsumers);
+            return this;
+        }
+        /**
+         * Specifies the maximum number of concurrent consumers when consuming
+         * from JMS (not for request/reply over JMS). See also the
+         * maxMessagesPerTask option to control dynamic scaling up/down of
+         * threads. When doing request/reply over JMS then the option
+         * replyToMaxConcurrentConsumers is used to control number of concurrent
+         * consumers on the reply message listener.
+         * The option will be converted to a <code>int</code> type.
+         * @group consumer
+         */
+        public default AMQPEndpointConsumerBuilder maxConcurrentConsumers(
+                String maxConcurrentConsumers) {
+            setProperty("maxConcurrentConsumers", maxConcurrentConsumers);
+            return this;
+        }
+        /**
+         * Provides an explicit ReplyTo destination, which overrides any
+         * incoming value of Message.getJMSReplyTo().
+         * The option is a <code>java.lang.String</code> type.
+         * @group consumer
+         */
+        public default AMQPEndpointConsumerBuilder replyTo(String replyTo) {
+            setProperty("replyTo", replyTo);
+            return this;
+        }
+        /**
+         * Specifies whether to use persistent delivery by default for replies.
+         * The option is a <code>boolean</code> type.
+         * @group consumer
+         */
+        public default AMQPEndpointConsumerBuilder replyToDeliveryPersistent(
+                boolean replyToDeliveryPersistent) {
+            setProperty("replyToDeliveryPersistent", replyToDeliveryPersistent);
+            return this;
+        }
+        /**
+         * Specifies whether to use persistent delivery by default for replies.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group consumer
+         */
+        public default AMQPEndpointConsumerBuilder replyToDeliveryPersistent(
+                String replyToDeliveryPersistent) {
+            setProperty("replyToDeliveryPersistent", replyToDeliveryPersistent);
+            return this;
+        }
+        /**
+         * Sets the JMS selector to use.
+         * The option is a <code>java.lang.String</code> type.
+         * @group consumer
+         */
+        public default AMQPEndpointConsumerBuilder selector(String selector) {
+            setProperty("selector", selector);
+            return this;
+        }
+        /**
+         * Set whether to make the subscription durable. The durable
+         * subscription name to be used can be specified through the
+         * subscriptionName property. Default is false. Set this to true to
+         * register a durable subscription, typically in combination with a
+         * subscriptionName value (unless your message listener class name is
+         * good enough as subscription name). Only makes sense when listening to
+         * a topic (pub-sub domain), therefore this method switches the
+         * pubSubDomain flag as well.
+         * The option is a <code>boolean</code> type.
+         * @group consumer
+         */
+        public default AMQPEndpointConsumerBuilder subscriptionDurable(
+                boolean subscriptionDurable) {
+            setProperty("subscriptionDurable", subscriptionDurable);
+            return this;
+        }
+        /**
+         * Set whether to make the subscription durable. The durable
+         * subscription name to be used can be specified through the
+         * subscriptionName property. Default is false. Set this to true to
+         * register a durable subscription, typically in combination with a
+         * subscriptionName value (unless your message listener class name is
+         * good enough as subscription name). Only makes sense when listening to
+         * a topic (pub-sub domain), therefore this method switches the
+         * pubSubDomain flag as well.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group consumer
+         */
+        public default AMQPEndpointConsumerBuilder subscriptionDurable(
+                String subscriptionDurable) {
+            setProperty("subscriptionDurable", subscriptionDurable);
+            return this;
+        }
+        /**
+         * Set the name of a subscription to create. To be applied in case of a
+         * topic (pub-sub domain) with a shared or durable subscription. The
+         * subscription name needs to be unique within this client's JMS client
+         * id. Default is the class name of the specified message listener.
+         * Note: Only 1 concurrent consumer (which is the default of this
+         * message listener container) is allowed for each subscription, except
+         * for a shared subscription (which requires JMS 2.0).
+         * The option is a <code>java.lang.String</code> type.
+         * @group consumer
+         */
+        public default AMQPEndpointConsumerBuilder subscriptionName(
+                String subscriptionName) {
+            setProperty("subscriptionName", subscriptionName);
+            return this;
+        }
+        /**
+         * Set whether to make the subscription shared. The shared subscription
+         * name to be used can be specified through the subscriptionName
+         * property. Default is false. Set this to true to register a shared
+         * subscription, typically in combination with a subscriptionName value
+         * (unless your message listener class name is good enough as
+         * subscription name). Note that shared subscriptions may also be
+         * durable, so this flag can (and often will) be combined with
+         * subscriptionDurable as well. Only makes sense when listening to a
+         * topic (pub-sub domain), therefore this method switches the
+         * pubSubDomain flag as well. Requires a JMS 2.0 compatible message
+         * broker.
+         * The option is a <code>boolean</code> type.
+         * @group consumer
+         */
+        public default AMQPEndpointConsumerBuilder subscriptionShared(
+                boolean subscriptionShared) {
+            setProperty("subscriptionShared", subscriptionShared);
+            return this;
+        }
+        /**
+         * Set whether to make the subscription shared. The shared subscription
+         * name to be used can be specified through the subscriptionName
+         * property. Default is false. Set this to true to register a shared
+         * subscription, typically in combination with a subscriptionName value
+         * (unless your message listener class name is good enough as
+         * subscription name). Note that shared subscriptions may also be
+         * durable, so this flag can (and often will) be combined with
+         * subscriptionDurable as well. Only makes sense when listening to a
+         * topic (pub-sub domain), therefore this method switches the
+         * pubSubDomain flag as well. Requires a JMS 2.0 compatible message
+         * broker.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group consumer
+         */
+        public default AMQPEndpointConsumerBuilder subscriptionShared(
+                String subscriptionShared) {
+            setProperty("subscriptionShared", subscriptionShared);
+            return this;
+        }
+        /**
+         * Allows to configure the default errorHandler logging level for
+         * logging uncaught exceptions.
+         * The option is a <code>org.apache.camel.LoggingLevel</code> type.
+         * @group logging
+         */
+        public default AMQPEndpointConsumerBuilder errorHandlerLoggingLevel(
+                LoggingLevel errorHandlerLoggingLevel) {
+            setProperty("errorHandlerLoggingLevel", errorHandlerLoggingLevel);
+            return this;
+        }
+        /**
+         * Allows to configure the default errorHandler logging level for
+         * logging uncaught exceptions.
+         * The option will be converted to a
+         * <code>org.apache.camel.LoggingLevel</code> type.
+         * @group logging
+         */
+        public default AMQPEndpointConsumerBuilder errorHandlerLoggingLevel(
+                String errorHandlerLoggingLevel) {
+            setProperty("errorHandlerLoggingLevel", errorHandlerLoggingLevel);
+            return this;
+        }
+        /**
+         * Allows to control whether stacktraces should be logged or not, by the
+         * default errorHandler.
+         * The option is a <code>boolean</code> type.
+         * @group logging
+         */
+        public default AMQPEndpointConsumerBuilder errorHandlerLogStackTrace(
+                boolean errorHandlerLogStackTrace) {
+            setProperty("errorHandlerLogStackTrace", errorHandlerLogStackTrace);
+            return this;
+        }
+        /**
+         * Allows to control whether stacktraces should be logged or not, by the
+         * default errorHandler.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group logging
+         */
+        public default AMQPEndpointConsumerBuilder errorHandlerLogStackTrace(
+                String errorHandlerLogStackTrace) {
+            setProperty("errorHandlerLogStackTrace", errorHandlerLogStackTrace);
+            return this;
+        }
+        /**
+         * Password to use with the ConnectionFactory. You can also configure
+         * username/password directly on the ConnectionFactory.
+         * The option is a <code>java.lang.String</code> type.
+         * @group security
+         */
+        public default AMQPEndpointConsumerBuilder password(String password) {
+            setProperty("password", password);
+            return this;
+        }
+        /**
+         * Username to use with the ConnectionFactory. You can also configure
+         * username/password directly on the ConnectionFactory.
+         * The option is a <code>java.lang.String</code> type.
+         * @group security
+         */
+        public default AMQPEndpointConsumerBuilder username(String username) {
+            setProperty("username", username);
+            return this;
+        }
+        /**
+         * Specifies whether to use transacted mode.
+         * The option is a <code>boolean</code> type.
+         * @group transaction
+         */
+        public default AMQPEndpointConsumerBuilder transacted(boolean transacted) {
+            setProperty("transacted", transacted);
+            return this;
+        }
+        /**
+         * Specifies whether to use transacted mode.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group transaction
+         */
+        public default AMQPEndpointConsumerBuilder transacted(String transacted) {
+            setProperty("transacted", transacted);
+            return this;
+        }
+    }
+
+    /**
+     * Advanced builder for endpoint consumers for the AMQP component.
+     */
+    public interface AdvancedAMQPEndpointConsumerBuilder
+            extends
+                EndpointConsumerBuilder {
+        public default AMQPEndpointConsumerBuilder basic() {
+            return (AMQPEndpointConsumerBuilder) this;
+        }
+        /**
+         * Specifies whether the consumer accept messages while it is stopping.
+         * You may consider enabling this option, if you start and stop JMS
+         * routes at runtime, while there are still messages enqueued on the
+         * queue. If this option is false, and you stop the JMS route, then
+         * messages may be rejected, and the JMS broker would have to attempt
+         * redeliveries, which yet again may be rejected, and eventually the
+         * message may be moved at a dead letter queue on the JMS broker. To
+         * avoid this its recommended to enable this option.
+         * The option is a <code>boolean</code> type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder acceptMessagesWhileStopping(
+                boolean acceptMessagesWhileStopping) {
+            setProperty("acceptMessagesWhileStopping", acceptMessagesWhileStopping);
+            return this;
+        }
+        /**
+         * Specifies whether the consumer accept messages while it is stopping.
+         * You may consider enabling this option, if you start and stop JMS
+         * routes at runtime, while there are still messages enqueued on the
+         * queue. If this option is false, and you stop the JMS route, then
+         * messages may be rejected, and the JMS broker would have to attempt
+         * redeliveries, which yet again may be rejected, and eventually the
+         * message may be moved at a dead letter queue on the JMS broker. To
+         * avoid this its recommended to enable this option.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder acceptMessagesWhileStopping(
+                String acceptMessagesWhileStopping) {
+            setProperty("acceptMessagesWhileStopping", acceptMessagesWhileStopping);
+            return this;
+        }
+        /**
+         * Whether the DefaultMessageListenerContainer used in the reply
+         * managers for request-reply messaging allow the
+         * DefaultMessageListenerContainer#runningAllowed() flag to quick stop
+         * in case JmsConfiguration#isAcceptMessagesWhileStopping() is enabled,
+         * and org.apache.camel.CamelContext is currently being stopped. This
+         * quick stop ability is enabled by default in the regular JMS consumers
+         * but to enable for reply managers you must enable this flag.
+         * The option is a <code>boolean</code> type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder allowReplyManagerQuickStop(
+                boolean allowReplyManagerQuickStop) {
+            setProperty("allowReplyManagerQuickStop", allowReplyManagerQuickStop);
+            return this;
+        }
+        /**
+         * Whether the DefaultMessageListenerContainer used in the reply
+         * managers for request-reply messaging allow the
+         * DefaultMessageListenerContainer#runningAllowed() flag to quick stop
+         * in case JmsConfiguration#isAcceptMessagesWhileStopping() is enabled,
+         * and org.apache.camel.CamelContext is currently being stopped. This
+         * quick stop ability is enabled by default in the regular JMS consumers
+         * but to enable for reply managers you must enable this flag.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder allowReplyManagerQuickStop(
+                String allowReplyManagerQuickStop) {
+            setProperty("allowReplyManagerQuickStop", allowReplyManagerQuickStop);
+            return this;
+        }
+        /**
+         * The consumer type to use, which can be one of: Simple, Default, or
+         * Custom. The consumer type determines which Spring JMS listener to
+         * use. Default will use
+         * org.springframework.jms.listener.DefaultMessageListenerContainer,
+         * Simple will use
+         * org.springframework.jms.listener.SimpleMessageListenerContainer. When
+         * Custom is specified, the MessageListenerContainerFactory defined by
+         * the messageListenerContainerFactory option will determine what
+         * org.springframework.jms.listener.AbstractMessageListenerContainer to
+         * use.
+         * The option is a
+         * <code>org.apache.camel.component.jms.ConsumerType</code> type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder consumerType(
+                ConsumerType consumerType) {
+            setProperty("consumerType", consumerType);
+            return this;
+        }
+        /**
+         * The consumer type to use, which can be one of: Simple, Default, or
+         * Custom. The consumer type determines which Spring JMS listener to
+         * use. Default will use
+         * org.springframework.jms.listener.DefaultMessageListenerContainer,
+         * Simple will use
+         * org.springframework.jms.listener.SimpleMessageListenerContainer. When
+         * Custom is specified, the MessageListenerContainerFactory defined by
+         * the messageListenerContainerFactory option will determine what
+         * org.springframework.jms.listener.AbstractMessageListenerContainer to
+         * use.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.jms.ConsumerType</code> type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder consumerType(
+                String consumerType) {
+            setProperty("consumerType", consumerType);
+            return this;
+        }
+        /**
+         * Specifies what default TaskExecutor type to use in the
+         * DefaultMessageListenerContainer, for both consumer endpoints and the
+         * ReplyTo consumer of producer endpoints. Possible values: SimpleAsync
+         * (uses Spring's SimpleAsyncTaskExecutor) or ThreadPool (uses Spring's
+         * ThreadPoolTaskExecutor with optimal values - cached threadpool-like).
+         * If not set, it defaults to the previous behaviour, which uses a
+         * cached thread pool for consumer endpoints and SimpleAsync for reply
+         * consumers. The use of ThreadPool is recommended to reduce thread
+         * trash in elastic configurations with dynamically increasing and
+         * decreasing concurrent consumers.
+         * The option is a
+         * <code>org.apache.camel.component.jms.DefaultTaskExecutorType</code>
+         * type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder defaultTaskExecutorType(
+                DefaultTaskExecutorType defaultTaskExecutorType) {
+            setProperty("defaultTaskExecutorType", defaultTaskExecutorType);
+            return this;
+        }
+        /**
+         * Specifies what default TaskExecutor type to use in the
+         * DefaultMessageListenerContainer, for both consumer endpoints and the
+         * ReplyTo consumer of producer endpoints. Possible values: SimpleAsync
+         * (uses Spring's SimpleAsyncTaskExecutor) or ThreadPool (uses Spring's
+         * ThreadPoolTaskExecutor with optimal values - cached threadpool-like).
+         * If not set, it defaults to the previous behaviour, which uses a
+         * cached thread pool for consumer endpoints and SimpleAsync for reply
+         * consumers. The use of ThreadPool is recommended to reduce thread
+         * trash in elastic configurations with dynamically increasing and
+         * decreasing concurrent consumers.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.jms.DefaultTaskExecutorType</code>
+         * type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder defaultTaskExecutorType(
+                String defaultTaskExecutorType) {
+            setProperty("defaultTaskExecutorType", defaultTaskExecutorType);
+            return this;
+        }
+        /**
+         * Enables eager loading of JMS properties and payload as soon as a
+         * message is loaded which generally is inefficient as the JMS
+         * properties may not be required but sometimes can catch early any
+         * issues with the underlying JMS provider and the use of JMS
+         * properties.
+         * The option is a <code>boolean</code> type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder eagerLoadingOfProperties(
+                boolean eagerLoadingOfProperties) {
+            setProperty("eagerLoadingOfProperties", eagerLoadingOfProperties);
+            return this;
+        }
+        /**
+         * Enables eager loading of JMS properties and payload as soon as a
+         * message is loaded which generally is inefficient as the JMS
+         * properties may not be required but sometimes can catch early any
+         * issues with the underlying JMS provider and the use of JMS
+         * properties.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder eagerLoadingOfProperties(
+                String eagerLoadingOfProperties) {
+            setProperty("eagerLoadingOfProperties", eagerLoadingOfProperties);
+            return this;
+        }
+        /**
+         * 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.
+         * The option is a <code>org.apache.camel.spi.ExceptionHandler</code>
+         * type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder exceptionHandler(
+                ExceptionHandler exceptionHandler) {
+            setProperty("exceptionHandler", exceptionHandler);
+            return this;
+        }
+        /**
+         * 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.
+         * The option will be converted to a
+         * <code>org.apache.camel.spi.ExceptionHandler</code> type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder exceptionHandler(
+                String exceptionHandler) {
+            setProperty("exceptionHandler", exceptionHandler);
+            return this;
+        }
+        /**
+         * Sets the exchange pattern when the consumer creates an exchange.
+         * The option is a <code>org.apache.camel.ExchangePattern</code> type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder exchangePattern(
+                ExchangePattern exchangePattern) {
+            setProperty("exchangePattern", exchangePattern);
+            return this;
+        }
+        /**
+         * Sets the exchange pattern when the consumer creates an exchange.
+         * The option will be converted to a
+         * <code>org.apache.camel.ExchangePattern</code> type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder exchangePattern(
+                String exchangePattern) {
+            setProperty("exchangePattern", exchangePattern);
+            return this;
+        }
+        /**
+         * Specifies whether the listener session should be exposed when
+         * consuming messages.
+         * The option is a <code>boolean</code> type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder exposeListenerSession(
+                boolean exposeListenerSession) {
+            setProperty("exposeListenerSession", exposeListenerSession);
+            return this;
+        }
+        /**
+         * Specifies whether the listener session should be exposed when
+         * consuming messages.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder exposeListenerSession(
+                String exposeListenerSession) {
+            setProperty("exposeListenerSession", exposeListenerSession);
+            return this;
+        }
+        /**
+         * Whether a JMS consumer is allowed to send a reply message to the same
+         * destination that the consumer is using to consume from. This prevents
+         * an endless loop by consuming and sending back the same message to
+         * itself.
+         * The option is a <code>boolean</code> type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder replyToSameDestinationAllowed(
+                boolean replyToSameDestinationAllowed) {
+            setProperty("replyToSameDestinationAllowed", replyToSameDestinationAllowed);
+            return this;
+        }
+        /**
+         * Whether a JMS consumer is allowed to send a reply message to the same
+         * destination that the consumer is using to consume from. This prevents
+         * an endless loop by consuming and sending back the same message to
+         * itself.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder replyToSameDestinationAllowed(
+                String replyToSameDestinationAllowed) {
+            setProperty("replyToSameDestinationAllowed", replyToSameDestinationAllowed);
+            return this;
+        }
+        /**
+         * Allows you to specify a custom task executor for consuming messages.
+         * The option is a
+         * <code>org.springframework.core.task.TaskExecutor</code> type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder taskExecutor(
+                Object taskExecutor) {
+            setProperty("taskExecutor", taskExecutor);
+            return this;
+        }
+        /**
+         * Allows you to specify a custom task executor for consuming messages.
+         * The option will be converted to a
+         * <code>org.springframework.core.task.TaskExecutor</code> type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder taskExecutor(
+                String taskExecutor) {
+            setProperty("taskExecutor", taskExecutor);
+            return this;
+        }
+        /**
+         * Controls whether or not to include serialized headers. Applies only
+         * when isTransferExchange() is true. This requires that the objects are
+         * serializable. Camel will exclude any non-serializable objects and log
+         * it at WARN level.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder allowSerializedHeaders(
+                boolean allowSerializedHeaders) {
+            setProperty("allowSerializedHeaders", allowSerializedHeaders);
+            return this;
+        }
+        /**
+         * Controls whether or not to include serialized headers. Applies only
+         * when isTransferExchange() is true. This requires that the objects are
+         * serializable. Camel will exclude any non-serializable objects and log
+         * it at WARN level.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder allowSerializedHeaders(
+                String allowSerializedHeaders) {
+            setProperty("allowSerializedHeaders", allowSerializedHeaders);
+            return this;
+        }
+        /**
+         * Whether to startup the JmsConsumer message listener asynchronously,
+         * when starting a route. For example if a JmsConsumer cannot get a
+         * connection to a remote JMS broker, then it may block while retrying
+         * and/or failover. This will cause Camel to block while starting
+         * routes. By setting this option to true, you will let routes startup,
+         * while the JmsConsumer connects to the JMS broker using a dedicated
+         * thread in asynchronous mode. If this option is used, then beware that
+         * if the connection could not be established, then an exception is
+         * logged at WARN level, and the consumer will not be able to receive
+         * messages; You can then restart the route to retry.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder asyncStartListener(
+                boolean asyncStartListener) {
+            setProperty("asyncStartListener", asyncStartListener);
+            return this;
+        }
+        /**
+         * Whether to startup the JmsConsumer message listener asynchronously,
+         * when starting a route. For example if a JmsConsumer cannot get a
+         * connection to a remote JMS broker, then it may block while retrying
+         * and/or failover. This will cause Camel to block while starting
+         * routes. By setting this option to true, you will let routes startup,
+         * while the JmsConsumer connects to the JMS broker using a dedicated
+         * thread in asynchronous mode. If this option is used, then beware that
+         * if the connection could not be established, then an exception is
+         * logged at WARN level, and the consumer will not be able to receive
+         * messages; You can then restart the route to retry.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder asyncStartListener(
+                String asyncStartListener) {
+            setProperty("asyncStartListener", asyncStartListener);
+            return this;
+        }
+        /**
+         * Whether to stop the JmsConsumer message listener asynchronously, when
+         * stopping a route.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder asyncStopListener(
+                boolean asyncStopListener) {
+            setProperty("asyncStopListener", asyncStopListener);
+            return this;
+        }
+        /**
+         * Whether to stop the JmsConsumer message listener asynchronously, when
+         * stopping a route.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder asyncStopListener(
+                String asyncStopListener) {
+            setProperty("asyncStopListener", asyncStopListener);
+            return this;
+        }
+        /**
+         * Whether the endpoint should use basic property binding (Camel 2.x) or
+         * the newer property binding with additional capabilities.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder basicPropertyBinding(
+                boolean basicPropertyBinding) {
+            setProperty("basicPropertyBinding", basicPropertyBinding);
+            return this;
+        }
+        /**
+         * Whether the endpoint should use basic property binding (Camel 2.x) or
+         * the newer property binding with additional capabilities.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder basicPropertyBinding(
+                String basicPropertyBinding) {
+            setProperty("basicPropertyBinding", basicPropertyBinding);
+            return this;
+        }
+        /**
+         * A pluggable
+         * org.springframework.jms.support.destination.DestinationResolver that
+         * allows you to use your own resolver (for example, to lookup the real
+         * destination in a JNDI registry).
+         * The option is a
+         * <code>org.springframework.jms.support.destination.DestinationResolver</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder destinationResolver(
+                Object destinationResolver) {
+            setProperty("destinationResolver", destinationResolver);
+            return this;
+        }
+        /**
+         * A pluggable
+         * org.springframework.jms.support.destination.DestinationResolver that
+         * allows you to use your own resolver (for example, to lookup the real
+         * destination in a JNDI registry).
+         * The option will be converted to a
+         * <code>org.springframework.jms.support.destination.DestinationResolver</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder destinationResolver(
+                String destinationResolver) {
+            setProperty("destinationResolver", destinationResolver);
+            return this;
+        }
+        /**
+         * Specifies a org.springframework.util.ErrorHandler to be invoked in
+         * case of any uncaught exceptions thrown while processing a Message. By
+         * default these exceptions will be logged at the WARN level, if no
+         * errorHandler has been configured. You can configure logging level and
+         * whether stack traces should be logged using errorHandlerLoggingLevel
+         * and errorHandlerLogStackTrace options. This makes it much easier to
+         * configure, than having to code a custom errorHandler.
+         * The option is a <code>org.springframework.util.ErrorHandler</code>
+         * type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder errorHandler(
+                Object errorHandler) {
+            setProperty("errorHandler", errorHandler);
+            return this;
+        }
+        /**
+         * Specifies a org.springframework.util.ErrorHandler to be invoked in
+         * case of any uncaught exceptions thrown while processing a Message. By
+         * default these exceptions will be logged at the WARN level, if no
+         * errorHandler has been configured. You can configure logging level and
+         * whether stack traces should be logged using errorHandlerLoggingLevel
+         * and errorHandlerLogStackTrace options. This makes it much easier to
+         * configure, than having to code a custom errorHandler.
+         * The option will be converted to a
+         * <code>org.springframework.util.ErrorHandler</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder errorHandler(
+                String errorHandler) {
+            setProperty("errorHandler", errorHandler);
+            return this;
+        }
+        /**
+         * Specifies the JMS Exception Listener that is to be notified of any
+         * underlying JMS exceptions.
+         * The option is a <code>javax.jms.ExceptionListener</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder exceptionListener(
+                Object exceptionListener) {
+            setProperty("exceptionListener", exceptionListener);
+            return this;
+        }
+        /**
+         * Specifies the JMS Exception Listener that is to be notified of any
+         * underlying JMS exceptions.
+         * The option will be converted to a
+         * <code>javax.jms.ExceptionListener</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder exceptionListener(
+                String exceptionListener) {
+            setProperty("exceptionListener", exceptionListener);
+            return this;
+        }
+        /**
+         * To use a custom HeaderFilterStrategy to filter header to and from
+         * Camel message.
+         * The option is a
+         * <code>org.apache.camel.spi.HeaderFilterStrategy</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder headerFilterStrategy(
+                HeaderFilterStrategy headerFilterStrategy) {
+            setProperty("headerFilterStrategy", headerFilterStrategy);
+            return this;
+        }
+        /**
+         * To use a custom HeaderFilterStrategy to filter header to and from
+         * Camel message.
+         * The option will be converted to a
+         * <code>org.apache.camel.spi.HeaderFilterStrategy</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder headerFilterStrategy(
+                String headerFilterStrategy) {
+            setProperty("headerFilterStrategy", headerFilterStrategy);
+            return this;
+        }
+        /**
+         * Specify the limit for the number of consumers that are allowed to be
+         * idle at any given time.
+         * The option is a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder idleConsumerLimit(
+                int idleConsumerLimit) {
+            setProperty("idleConsumerLimit", idleConsumerLimit);
+            return this;
+        }
+        /**
+         * Specify the limit for the number of consumers that are allowed to be
+         * idle at any given time.
+         * The option will be converted to a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder idleConsumerLimit(
+                String idleConsumerLimit) {
+            setProperty("idleConsumerLimit", idleConsumerLimit);
+            return this;
+        }
+        /**
+         * Specifies the limit for idle executions of a receive task, not having
+         * received any message within its execution. If this limit is reached,
+         * the task will shut down and leave receiving to other executing tasks
+         * (in the case of dynamic scheduling; see the maxConcurrentConsumers
+         * setting). There is additional doc available from Spring.
+         * The option is a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder idleTaskExecutionLimit(
+                int idleTaskExecutionLimit) {
+            setProperty("idleTaskExecutionLimit", idleTaskExecutionLimit);
+            return this;
+        }
+        /**
+         * Specifies the limit for idle executions of a receive task, not having
+         * received any message within its execution. If this limit is reached,
+         * the task will shut down and leave receiving to other executing tasks
+         * (in the case of dynamic scheduling; see the maxConcurrentConsumers
+         * setting). There is additional doc available from Spring.
+         * The option will be converted to a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder idleTaskExecutionLimit(
+                String idleTaskExecutionLimit) {
+            setProperty("idleTaskExecutionLimit", idleTaskExecutionLimit);
+            return this;
+        }
+        /**
+         * Whether to include all JMSXxxx properties when mapping from JMS to
+         * Camel Message. Setting this to true will include properties such as
+         * JMSXAppID, and JMSXUserID etc. Note: If you are using a custom
+         * headerFilterStrategy then this option does not apply.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder includeAllJMSXProperties(
+                boolean includeAllJMSXProperties) {
+            setProperty("includeAllJMSXProperties", includeAllJMSXProperties);
+            return this;
+        }
+        /**
+         * Whether to include all JMSXxxx properties when mapping from JMS to
+         * Camel Message. Setting this to true will include properties such as
+         * JMSXAppID, and JMSXUserID etc. Note: If you are using a custom
+         * headerFilterStrategy then this option does not apply.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder includeAllJMSXProperties(
+                String includeAllJMSXProperties) {
+            setProperty("includeAllJMSXProperties", includeAllJMSXProperties);
+            return this;
+        }
+        /**
+         * Pluggable strategy for encoding and decoding JMS keys so they can be
+         * compliant with the JMS specification. Camel provides two
+         * implementations out of the box: default and passthrough. The default
+         * strategy will safely marshal dots and hyphens (. and -). The
+         * passthrough strategy leaves the key as is. Can be used for JMS
+         * brokers which do not care whether JMS header keys contain illegal
+         * characters. You can provide your own implementation of the
+         * org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it
+         * using the # notation.
+         * The option is a
+         * <code>org.apache.camel.component.jms.JmsKeyFormatStrategy</code>
+         * type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder jmsKeyFormatStrategy(
+                Object jmsKeyFormatStrategy) {
+            setProperty("jmsKeyFormatStrategy", jmsKeyFormatStrategy);
+            return this;
+        }
+        /**
+         * Pluggable strategy for encoding and decoding JMS keys so they can be
+         * compliant with the JMS specification. Camel provides two
+         * implementations out of the box: default and passthrough. The default
+         * strategy will safely marshal dots and hyphens (. and -). The
+         * passthrough strategy leaves the key as is. Can be used for JMS
+         * brokers which do not care whether JMS header keys contain illegal
+         * characters. You can provide your own implementation of the
+         * org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it
+         * using the # notation.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.jms.JmsKeyFormatStrategy</code>
+         * type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder jmsKeyFormatStrategy(
+                String jmsKeyFormatStrategy) {
+            setProperty("jmsKeyFormatStrategy", jmsKeyFormatStrategy);
+            return this;
+        }
+        /**
+         * Specifies whether Camel should auto map the received JMS message to a
+         * suited payload type, such as javax.jms.TextMessage to a String etc.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder mapJmsMessage(
+                boolean mapJmsMessage) {
+            setProperty("mapJmsMessage", mapJmsMessage);
+            return this;
+        }
+        /**
+         * Specifies whether Camel should auto map the received JMS message to a
+         * suited payload type, such as javax.jms.TextMessage to a String etc.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder mapJmsMessage(
+                String mapJmsMessage) {
+            setProperty("mapJmsMessage", mapJmsMessage);
+            return this;
+        }
+        /**
+         * The number of messages per task. -1 is unlimited. If you use a range
+         * for concurrent consumers (eg min max), then this option can be used
+         * to set a value to eg 100 to control how fast the consumers will
+         * shrink when less work is required.
+         * The option is a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder maxMessagesPerTask(
+                int maxMessagesPerTask) {
+            setProperty("maxMessagesPerTask", maxMessagesPerTask);
+            return this;
+        }
+        /**
+         * The number of messages per task. -1 is unlimited. If you use a range
+         * for concurrent consumers (eg min max), then this option can be used
+         * to set a value to eg 100 to control how fast the consumers will
+         * shrink when less work is required.
+         * The option will be converted to a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder maxMessagesPerTask(
+                String maxMessagesPerTask) {
+            setProperty("maxMessagesPerTask", maxMessagesPerTask);
+            return this;
+        }
+        /**
+         * To use a custom Spring
+         * org.springframework.jms.support.converter.MessageConverter so you can
+         * be in control how to map to/from a javax.jms.Message.
+         * The option is a
+         * <code>org.springframework.jms.support.converter.MessageConverter</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder messageConverter(
+                Object messageConverter) {
+            setProperty("messageConverter", messageConverter);
+            return this;
+        }
+        /**
+         * To use a custom Spring
+         * org.springframework.jms.support.converter.MessageConverter so you can
+         * be in control how to map to/from a javax.jms.Message.
+         * The option will be converted to a
+         * <code>org.springframework.jms.support.converter.MessageConverter</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder messageConverter(
+                String messageConverter) {
+            setProperty("messageConverter", messageConverter);
+            return this;
+        }
+        /**
+         * To use the given MessageCreatedStrategy which are invoked when Camel
+         * creates new instances of javax.jms.Message objects when Camel is
+         * sending a JMS message.
+         * The option is a
+         * <code>org.apache.camel.component.jms.MessageCreatedStrategy</code>
+         * type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder messageCreatedStrategy(
+                Object messageCreatedStrategy) {
+            setProperty("messageCreatedStrategy", messageCreatedStrategy);
+            return this;
+        }
+        /**
+         * To use the given MessageCreatedStrategy which are invoked when Camel
+         * creates new instances of javax.jms.Message objects when Camel is
+         * sending a JMS message.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.jms.MessageCreatedStrategy</code>
+         * type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder messageCreatedStrategy(
+                String messageCreatedStrategy) {
+            setProperty("messageCreatedStrategy", messageCreatedStrategy);
+            return this;
+        }
+        /**
+         * When sending, specifies whether message IDs should be added. This is
+         * just an hint to the JMS Broker. If the JMS provider accepts this
+         * hint, these messages must have the message ID set to null; if the
+         * provider ignores the hint, the message ID must be set to its normal
+         * unique value.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder messageIdEnabled(
+                boolean messageIdEnabled) {
+            setProperty("messageIdEnabled", messageIdEnabled);
+            return this;
+        }
+        /**
+         * When sending, specifies whether message IDs should be added. This is
+         * just an hint to the JMS Broker. If the JMS provider accepts this
+         * hint, these messages must have the message ID set to null; if the
+         * provider ignores the hint, the message ID must be set to its normal
+         * unique value.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder messageIdEnabled(
+                String messageIdEnabled) {
+            setProperty("messageIdEnabled", messageIdEnabled);
+            return this;
+        }
+        /**
+         * Registry ID of the MessageListenerContainerFactory used to determine
+         * what
+         * org.springframework.jms.listener.AbstractMessageListenerContainer to
+         * use to consume messages. Setting this will automatically set
+         * consumerType to Custom.
+         * The option is a
+         * <code>org.apache.camel.component.jms.MessageListenerContainerFactory</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder messageListenerContainerFactory(
+                Object messageListenerContainerFactory) {
+            setProperty("messageListenerContainerFactory", messageListenerContainerFactory);
+            return this;
+        }
+        /**
+         * Registry ID of the MessageListenerContainerFactory used to determine
+         * what
+         * org.springframework.jms.listener.AbstractMessageListenerContainer to
+         * use to consume messages. Setting this will automatically set
+         * consumerType to Custom.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.jms.MessageListenerContainerFactory</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder messageListenerContainerFactory(
+                String messageListenerContainerFactory) {
+            setProperty("messageListenerContainerFactory", messageListenerContainerFactory);
+            return this;
+        }
+        /**
+         * Specifies whether timestamps should be enabled by default on sending
+         * messages. This is just an hint to the JMS Broker. If the JMS provider
+         * accepts this hint, these messages must have the timestamp set to
+         * zero; if the provider ignores the hint, the timestamp must be set to
+         * its normal value.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder messageTimestampEnabled(
+                boolean messageTimestampEnabled) {
+            setProperty("messageTimestampEnabled", messageTimestampEnabled);
+            return this;
+        }
+        /**
+         * Specifies whether timestamps should be enabled by default on sending
+         * messages. This is just an hint to the JMS Broker. If the JMS provider
+         * accepts this hint, these messages must have the timestamp set to
+         * zero; if the provider ignores the hint, the timestamp must be set to
+         * its normal value.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder messageTimestampEnabled(
+                String messageTimestampEnabled) {
+            setProperty("messageTimestampEnabled", messageTimestampEnabled);
+            return this;
+        }
+        /**
+         * Specifies whether to inhibit the delivery of messages published by
+         * its own connection.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder pubSubNoLocal(
+                boolean pubSubNoLocal) {
+            setProperty("pubSubNoLocal", pubSubNoLocal);
+            return this;
+        }
+        /**
+         * Specifies whether to inhibit the delivery of messages published by
+         * its own connection.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder pubSubNoLocal(
+                String pubSubNoLocal) {
+            setProperty("pubSubNoLocal", pubSubNoLocal);
+            return this;
+        }
+        /**
+         * The timeout for receiving messages (in milliseconds).
+         * The option is a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder receiveTimeout(
+                long receiveTimeout) {
+            setProperty("receiveTimeout", receiveTimeout);
+            return this;
+        }
+        /**
+         * The timeout for receiving messages (in milliseconds).
+         * The option will be converted to a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder receiveTimeout(
+                String receiveTimeout) {
+            setProperty("receiveTimeout", receiveTimeout);
+            return this;
+        }
+        /**
+         * Specifies the interval between recovery attempts, i.e. when a
+         * connection is being refreshed, in milliseconds. The default is 5000
+         * ms, that is, 5 seconds.
+         * The option is a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder recoveryInterval(
+                long recoveryInterval) {
+            setProperty("recoveryInterval", recoveryInterval);
+            return this;
+        }
+        /**
+         * Specifies the interval between recovery attempts, i.e. when a
+         * connection is being refreshed, in milliseconds. The default is 5000
+         * ms, that is, 5 seconds.
+         * The option will be converted to a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder recoveryInterval(
+                String recoveryInterval) {
+            setProperty("recoveryInterval", recoveryInterval);
+            return this;
+        }
+        /**
+         * Configures how often Camel should check for timed out Exchanges when
+         * doing request/reply over JMS. By default Camel checks once per
+         * second. But if you must react faster when a timeout occurs, then you
+         * can lower this interval, to check more frequently. The timeout is
+         * determined by the option requestTimeout.
+         * The option is a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder requestTimeoutCheckerInterval(
+                long requestTimeoutCheckerInterval) {
+            setProperty("requestTimeoutCheckerInterval", requestTimeoutCheckerInterval);
+            return this;
+        }
+        /**
+         * Configures how often Camel should check for timed out Exchanges when
+         * doing request/reply over JMS. By default Camel checks once per
+         * second. But if you must react faster when a timeout occurs, then you
+         * can lower this interval, to check more frequently. The timeout is
+         * determined by the option requestTimeout.
+         * The option will be converted to a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder requestTimeoutCheckerInterval(
+                String requestTimeoutCheckerInterval) {
+            setProperty("requestTimeoutCheckerInterval", requestTimeoutCheckerInterval);
+            return this;
+        }
+        /**
+         * Sets whether synchronous processing should be strictly used, or Camel
+         * is allowed to use asynchronous processing (if supported).
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder synchronous(
+                boolean synchronous) {
+            setProperty("synchronous", synchronous);
+            return this;
+        }
+        /**
+         * Sets whether synchronous processing should be strictly used, or Camel
+         * is allowed to use asynchronous processing (if supported).
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder synchronous(
+                String synchronous) {
+            setProperty("synchronous", synchronous);
+            return this;
+        }
+        /**
+         * If enabled and you are using Request Reply messaging (InOut) and an
+         * Exchange failed on the consumer side, then the caused Exception will
+         * be send back in response as a javax.jms.ObjectMessage. If the client
+         * is Camel, the returned Exception is rethrown. This allows you to use
+         * Camel JMS as a bridge in your routing - for example, using persistent
+         * queues to enable robust routing. Notice that if you also have
+         * transferExchange enabled, this option takes precedence. The caught
+         * exception is required to be serializable. The original Exception on
+         * the consumer side can be wrapped in an outer exception such as
+         * org.apache.camel.RuntimeCamelException when returned to the producer.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder transferException(
+                boolean transferException) {
+            setProperty("transferException", transferException);
+            return this;
+        }
+        /**
+         * If enabled and you are using Request Reply messaging (InOut) and an
+         * Exchange failed on the consumer side, then the caused Exception will
+         * be send back in response as a javax.jms.ObjectMessage. If the client
+         * is Camel, the returned Exception is rethrown. This allows you to use
+         * Camel JMS as a bridge in your routing - for example, using persistent
+         * queues to enable robust routing. Notice that if you also have
+         * transferExchange enabled, this option takes precedence. The caught
+         * exception is required to be serializable. The original Exception on
+         * the consumer side can be wrapped in an outer exception such as
+         * org.apache.camel.RuntimeCamelException when returned to the producer.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder transferException(
+                String transferException) {
+            setProperty("transferException", transferException);
+            return this;
+        }
+        /**
+         * You can transfer the exchange over the wire instead of just the body
+         * and headers. 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. You must enable this option on both the producer
+         * and consumer side, so Camel knows the payloads is an Exchange and not
+         * a regular payload.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder transferExchange(
+                boolean transferExchange) {
+            setProperty("transferExchange", transferExchange);
+            return this;
+        }
+        /**
+         * You can transfer the exchange over the wire instead of just the body
+         * and headers. 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. You must enable this option on both the producer
+         * and consumer side, so Camel knows the payloads is an Exchange and not
+         * a regular payload.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder transferExchange(
+                String transferExchange) {
+            setProperty("transferExchange", transferExchange);
+            return this;
+        }
+        /**
+         * If enabled and you are using Request Reply messaging (InOut) and an
+         * Exchange failed with a SOAP fault (not exception) on the consumer
+         * side, then the fault flag on org.apache.camel.Message#isFault() will
+         * be send back in the response as a JMS header with the key
+         * JmsConstants#JMS_TRANSFER_FAULT. If the client is Camel, the returned
+         * fault flag will be set on the
+         * org.apache.camel.Message#setFault(boolean). You may want to enable
+         * this when using Camel components that support faults such as SOAP
+         * based such as cxf or spring-ws.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder transferFault(
+                boolean transferFault) {
+            setProperty("transferFault", transferFault);
+            return this;
+        }
+        /**
+         * If enabled and you are using Request Reply messaging (InOut) and an
+         * Exchange failed with a SOAP fault (not exception) on the consumer
+         * side, then the fault flag on org.apache.camel.Message#isFault() will
+         * be send back in the response as a JMS header with the key
+         * JmsConstants#JMS_TRANSFER_FAULT. If the client is Camel, the returned
+         * fault flag will be set on the
+         * org.apache.camel.Message#setFault(boolean). You may want to enable
+         * this when using Camel components that support faults such as SOAP
+         * based such as cxf or spring-ws.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder transferFault(
+                String transferFault) {
+            setProperty("transferFault", transferFault);
+            return this;
+        }
+        /**
+         * Specifies whether JMSMessageID should always be used as
+         * JMSCorrelationID for InOut messages.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder useMessageIDAsCorrelationID(
+                boolean useMessageIDAsCorrelationID) {
+            setProperty("useMessageIDAsCorrelationID", useMessageIDAsCorrelationID);
+            return this;
+        }
+        /**
+         * Specifies whether JMSMessageID should always be used as
+         * JMSCorrelationID for InOut messages.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder useMessageIDAsCorrelationID(
+                String useMessageIDAsCorrelationID) {
+            setProperty("useMessageIDAsCorrelationID", useMessageIDAsCorrelationID);
+            return this;
+        }
+        /**
+         * Number of times to wait for provisional correlation id to be updated
+         * to the actual correlation id when doing request/reply over JMS and
+         * when the option useMessageIDAsCorrelationID is enabled.
+         * The option is a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder waitForProvisionCorrelationToBeUpdatedCounter(
+                int waitForProvisionCorrelationToBeUpdatedCounter) {
+            setProperty("waitForProvisionCorrelationToBeUpdatedCounter", waitForProvisionCorrelationToBeUpdatedCounter);
+            return this;
+        }
+        /**
+         * Number of times to wait for provisional correlation id to be updated
+         * to the actual correlation id when doing request/reply over JMS and
+         * when the option useMessageIDAsCorrelationID is enabled.
+         * The option will be converted to a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder waitForProvisionCorrelationToBeUpdatedCounter(
+                String waitForProvisionCorrelationToBeUpdatedCounter) {
+            setProperty("waitForProvisionCorrelationToBeUpdatedCounter", waitForProvisionCorrelationToBeUpdatedCounter);
+            return this;
+        }
+        /**
+         * Interval in millis to sleep each time while waiting for provisional
+         * correlation id to be updated.
+         * The option is a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder waitForProvisionCorrelationToBeUpdatedThreadSleepingTime(
+                long waitForProvisionCorrelationToBeUpdatedThreadSleepingTime) {
+            setProperty("waitForProvisionCorrelationToBeUpdatedThreadSleepingTime", waitForProvisionCorrelationToBeUpdatedThreadSleepingTime);
+            return this;
+        }
+        /**
+         * Interval in millis to sleep each time while waiting for provisional
+         * correlation id to be updated.
+         * The option will be converted to a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder waitForProvisionCorrelationToBeUpdatedThreadSleepingTime(
+                String waitForProvisionCorrelationToBeUpdatedThreadSleepingTime) {
+            setProperty("waitForProvisionCorrelationToBeUpdatedThreadSleepingTime", waitForProvisionCorrelationToBeUpdatedThreadSleepingTime);
+            return this;
+        }
+        /**
+         * If true, Camel will create a JmsTransactionManager, if there is no
+         * transactionManager injected when option transacted=true.
+         * The option is a <code>boolean</code> type.
+         * @group transaction (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder lazyCreateTransactionManager(
+                boolean lazyCreateTransactionManager) {
+            setProperty("lazyCreateTransactionManager", lazyCreateTransactionManager);
+            return this;
+        }
+        /**
+         * If true, Camel will create a JmsTransactionManager, if there is no
+         * transactionManager injected when option transacted=true.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group transaction (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder lazyCreateTransactionManager(
+                String lazyCreateTransactionManager) {
+            setProperty("lazyCreateTransactionManager", lazyCreateTransactionManager);
+            return this;
+        }
+        /**
+         * The Spring transaction manager to use.
+         * The option is a
+         * <code>org.springframework.transaction.PlatformTransactionManager</code> type.
+         * @group transaction (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder transactionManager(
+                Object transactionManager) {
+            setProperty("transactionManager", transactionManager);
+            return this;
+        }
+        /**
+         * The Spring transaction manager to use.
+         * The option will be converted to a
+         * <code>org.springframework.transaction.PlatformTransactionManager</code> type.
+         * @group transaction (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder transactionManager(
+                String transactionManager) {
+            setProperty("transactionManager", transactionManager);
+            return this;
+        }
+        /**
+         * The name of the transaction to use.
+         * The option is a <code>java.lang.String</code> type.
+         * @group transaction (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder transactionName(
+                String transactionName) {
+            setProperty("transactionName", transactionName);
+            return this;
+        }
+        /**
+         * The timeout value of the transaction (in seconds), if using
+         * transacted mode.
+         * The option is a <code>int</code> type.
+         * @group transaction (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder transactionTimeout(
+                int transactionTimeout) {
+            setProperty("transactionTimeout", transactionTimeout);
+            return this;
+        }
+        /**
+         * The timeout value of the transaction (in seconds), if using
+         * transacted mode.
+         * The option will be converted to a <code>int</code> type.
+         * @group transaction (advanced)
+         */
+        public default AdvancedAMQPEndpointConsumerBuilder transactionTimeout(
+                String transactionTimeout) {
+            setProperty("transactionTimeout", transactionTimeout);
+            return this;
+        }
+    }
+
+    /**
+     * Builder for endpoint producers for the AMQP component.
+     */
+    public static interface AMQPEndpointProducerBuilder
+            extends
+                EndpointProducerBuilder {
+        public default AdvancedAMQPEndpointProducerBuilder advanced() {
+            return (AdvancedAMQPEndpointProducerBuilder) this;
+        }
+        /**
+         * The kind of destination to use.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AMQPEndpointProducerBuilder destinationType(
+                String destinationType) {
+            setProperty("destinationType", destinationType);
+            return this;
+        }
+        /**
+         * Name of the queue or topic to use as destination.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AMQPEndpointProducerBuilder destinationName(
+                String destinationName) {
+            setProperty("destinationName", destinationName);
+            return this;
+        }
+        /**
+         * Sets the JMS client ID to use. Note that this value, if specified,
+         * must be unique and can only be used by a single JMS connection
+         * instance. It is typically only required for durable topic
+         * subscriptions. If using Apache ActiveMQ you may prefer to use Virtual
+         * Topics instead.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AMQPEndpointProducerBuilder clientId(String clientId) {
+            setProperty("clientId", clientId);
+            return this;
+        }
+        /**
+         * Sets the default connection factory to be used if a connection
+         * factory is not specified for either
+         * setTemplateConnectionFactory(ConnectionFactory) or
+         * setListenerConnectionFactory(ConnectionFactory).
+         * The option is a <code>javax.jms.ConnectionFactory</code> type.
+         * @group common
+         */
+        public default AMQPEndpointProducerBuilder connectionFactory(
+                Object connectionFactory) {
+            setProperty("connectionFactory", connectionFactory);
+            return this;
+        }
+        /**
+         * Sets the default connection factory to be used if a connection
+         * factory is not specified for either
+         * setTemplateConnectionFactory(ConnectionFactory) or
+         * setListenerConnectionFactory(ConnectionFactory).
+         * The option will be converted to a
+         * <code>javax.jms.ConnectionFactory</code> type.
+         * @group common
+         */
+        public default AMQPEndpointProducerBuilder connectionFactory(
+                String connectionFactory) {
+            setProperty("connectionFactory", connectionFactory);
+            return this;
+        }
+        /**
+         * Specifies whether Camel ignores the JMSReplyTo header in messages. If
+         * true, Camel does not send a reply back to the destination specified
+         * in the JMSReplyTo header. You can use this option if you want Camel
+         * to consume from a route and you do not want Camel to automatically
+         * send back a reply message because another component in your code
+         * handles the reply message. You can also use this option if you want
+         * to use Camel as a proxy between different message brokers and you
+         * want to route message from one system to another.
+         * The option is a <code>boolean</code> type.
+         * @group common
+         */
+        public default AMQPEndpointProducerBuilder disableReplyTo(
+                boolean disableReplyTo) {
+            setProperty("disableReplyTo", disableReplyTo);
+            return this;
+        }
+        /**
+         * Specifies whether Camel ignores the JMSReplyTo header in messages. If
+         * true, Camel does not send a reply back to the destination specified
+         * in the JMSReplyTo header. You can use this option if you want Camel
+         * to consume from a route and you do not want Camel to automatically
+         * send back a reply message because another component in your code
+         * handles the reply message. You can also use this option if you want
+         * to use Camel as a proxy between different message brokers and you
+         * want to route message from one system to another.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group common
+         */
+        public default AMQPEndpointProducerBuilder disableReplyTo(
+                String disableReplyTo) {
+            setProperty("disableReplyTo", disableReplyTo);
+            return this;
+        }
+        /**
+         * The durable subscriber name for specifying durable topic
+         * subscriptions. The clientId option must be configured as well.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AMQPEndpointProducerBuilder durableSubscriptionName(
+                String durableSubscriptionName) {
+            setProperty("durableSubscriptionName", durableSubscriptionName);
+            return this;
+        }
+        /**
+         * Allows you to force the use of a specific javax.jms.Message
+         * implementation for sending JMS messages. Possible values are: Bytes,
+         * Map, Object, Stream, Text. By default, Camel would determine which
+         * JMS message type to use from the In body type. This option allows you
+         * to specify it.
+         * The option is a
+         * <code>org.apache.camel.component.jms.JmsMessageType</code> type.
+         * @group common
+         */
+        public default AMQPEndpointProducerBuilder jmsMessageType(
+                JmsMessageType jmsMessageType) {
+            setProperty("jmsMessageType", jmsMessageType);
+            return this;
+        }
+        /**
+         * Allows you to force the use of a specific javax.jms.Message
+         * implementation for sending JMS messages. Possible values are: Bytes,
+         * Map, Object, Stream, Text. By default, Camel would determine which
+         * JMS message type to use from the In body type. This option allows you
+         * to specify it.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.jms.JmsMessageType</code> type.
+         * @group common
+         */
+        public default AMQPEndpointProducerBuilder jmsMessageType(
+                String jmsMessageType) {
+            setProperty("jmsMessageType", jmsMessageType);
+            return this;
+        }
+        /**
+         * Specifies whether to test the connection on startup. This ensures
+         * that when Camel starts that all the JMS consumers have a valid
+         * connection to the JMS broker. If a connection cannot be granted then
+         * Camel throws an exception on startup. This ensures that Camel is not
+         * started with failed connections. The JMS producers is tested as well.
+         * The option is a <code>boolean</code> type.
+         * @group common
+         */
+        public default AMQPEndpointProducerBuilder testConnectionOnStartup(
+                boolean testConnectionOnStartup) {
+            setProperty("testConnectionOnStartup", testConnectionOnStartup);
+            return this;
+        }
+        /**
+         * Specifies whether to test the connection on startup. This ensures
+         * that when Camel starts that all the JMS consumers have a valid
+         * connection to the JMS broker. If a connection cannot be granted then
+         * Camel throws an exception on startup. This ensures that Camel is not
+         * started with failed connections. The JMS producers is tested as well.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group common
+         */
+        public default AMQPEndpointProducerBuilder testConnectionOnStartup(
+                String testConnectionOnStartup) {
+            setProperty("testConnectionOnStartup", testConnectionOnStartup);
+            return this;
+        }
+        /**
+         * Specifies the delivery mode to be used. Possibles values are those
+         * defined by javax.jms.DeliveryMode. NON_PERSISTENT = 1 and PERSISTENT
+         * = 2.
+         * The option is a <code>java.lang.Integer</code> type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder deliveryMode(
+                Integer deliveryMode) {
+            setProperty("deliveryMode", deliveryMode);
+            return this;
+        }
+        /**
+         * Specifies the delivery mode to be used. Possibles values are those
+         * defined by javax.jms.DeliveryMode. NON_PERSISTENT = 1 and PERSISTENT
+         * = 2.
+         * The option will be converted to a <code>java.lang.Integer</code>
+         * type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder deliveryMode(
+                String deliveryMode) {
+            setProperty("deliveryMode", deliveryMode);
+            return this;
+        }
+        /**
+         * Specifies whether persistent delivery is used by default.
+         * The option is a <code>boolean</code> type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder deliveryPersistent(
+                boolean deliveryPersistent) {
+            setProperty("deliveryPersistent", deliveryPersistent);
+            return this;
+        }
+        /**
+         * Specifies whether persistent delivery is used by default.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder deliveryPersistent(
+                String deliveryPersistent) {
+            setProperty("deliveryPersistent", deliveryPersistent);
+            return this;
+        }
+        /**
+         * Set if the deliveryMode, priority or timeToLive qualities of service
+         * should be used when sending messages. This option is based on
+         * Spring's JmsTemplate. The deliveryMode, priority and timeToLive
+         * options are applied to the current endpoint. This contrasts with the
+         * preserveMessageQos option, which operates at message granularity,
+         * reading QoS properties exclusively from the Camel In message headers.
+         * The option is a <code>java.lang.Boolean</code> type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder explicitQosEnabled(
+                Boolean explicitQosEnabled) {
+            setProperty("explicitQosEnabled", explicitQosEnabled);
+            return this;
+        }
+        /**
+         * Set if the deliveryMode, priority or timeToLive qualities of service
+         * should be used when sending messages. This option is based on
+         * Spring's JmsTemplate. The deliveryMode, priority and timeToLive
+         * options are applied to the current endpoint. This contrasts with the
+         * preserveMessageQos option, which operates at message granularity,
+         * reading QoS properties exclusively from the Camel In message headers.
+         * The option will be converted to a <code>java.lang.Boolean</code>
+         * type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder explicitQosEnabled(
+                String explicitQosEnabled) {
+            setProperty("explicitQosEnabled", explicitQosEnabled);
+            return this;
+        }
+        /**
+         * Sets whether date headers should be formatted according to the ISO
+         * 8601 standard.
+         * The option is a <code>boolean</code> type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder formatDateHeadersToIso8601(
+                boolean formatDateHeadersToIso8601) {
+            setProperty("formatDateHeadersToIso8601", formatDateHeadersToIso8601);
+            return this;
+        }
+        /**
+         * Sets whether date headers should be formatted according to the ISO
+         * 8601 standard.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder formatDateHeadersToIso8601(
+                String formatDateHeadersToIso8601) {
+            setProperty("formatDateHeadersToIso8601", formatDateHeadersToIso8601);
+            return this;
+        }
+        /**
+         * Set to true, if you want to send message using the QoS settings
+         * specified on the message, instead of the QoS settings on the JMS
+         * endpoint. The following three headers are considered JMSPriority,
+         * JMSDeliveryMode, and JMSExpiration. You can provide all or only some
+         * of them. If not provided, Camel will fall back to use the values from
+         * the endpoint instead. So, when using this option, the headers
+         * override the values from the endpoint. The explicitQosEnabled option,
+         * by contrast, will only use options set on the endpoint, and not
+         * values from the message header.
+         * The option is a <code>boolean</code> type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder preserveMessageQos(
+                boolean preserveMessageQos) {
+            setProperty("preserveMessageQos", preserveMessageQos);
+            return this;
+        }
+        /**
+         * Set to true, if you want to send message using the QoS settings
+         * specified on the message, instead of the QoS settings on the JMS
+         * endpoint. The following three headers are considered JMSPriority,
+         * JMSDeliveryMode, and JMSExpiration. You can provide all or only some
+         * of them. If not provided, Camel will fall back to use the values from
+         * the endpoint instead. So, when using this option, the headers
+         * override the values from the endpoint. The explicitQosEnabled option,
+         * by contrast, will only use options set on the endpoint, and not
+         * values from the message header.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder preserveMessageQos(
+                String preserveMessageQos) {
+            setProperty("preserveMessageQos", preserveMessageQos);
+            return this;
+        }
+        /**
+         * Values greater than 1 specify the message priority when sending
+         * (where 0 is the lowest priority and 9 is the highest). The
+         * explicitQosEnabled option must also be enabled in order for this
+         * option to have any effect.
+         * The option is a <code>int</code> type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder priority(int priority) {
+            setProperty("priority", priority);
+            return this;
+        }
+        /**
+         * Values greater than 1 specify the message priority when sending
+         * (where 0 is the lowest priority and 9 is the highest). The
+         * explicitQosEnabled option must also be enabled in order for this
+         * option to have any effect.
+         * The option will be converted to a <code>int</code> type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder priority(String priority) {
+            setProperty("priority", priority);
+            return this;
+        }
+        /**
+         * Specifies the default number of concurrent consumers when doing
+         * request/reply over JMS. See also the maxMessagesPerTask option to
+         * control dynamic scaling up/down of threads.
+         * The option is a <code>int</code> type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder replyToConcurrentConsumers(
+                int replyToConcurrentConsumers) {
+            setProperty("replyToConcurrentConsumers", replyToConcurrentConsumers);
+            return this;
+        }
+        /**
+         * Specifies the default number of concurrent consumers when doing
+         * request/reply over JMS. See also the maxMessagesPerTask option to
+         * control dynamic scaling up/down of threads.
+         * The option will be converted to a <code>int</code> type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder replyToConcurrentConsumers(
+                String replyToConcurrentConsumers) {
+            setProperty("replyToConcurrentConsumers", replyToConcurrentConsumers);
+            return this;
+        }
+        /**
+         * Specifies the maximum number of concurrent consumers when using
+         * request/reply over JMS. See also the maxMessagesPerTask option to
+         * control dynamic scaling up/down of threads.
+         * The option is a <code>int</code> type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder replyToMaxConcurrentConsumers(
+                int replyToMaxConcurrentConsumers) {
+            setProperty("replyToMaxConcurrentConsumers", replyToMaxConcurrentConsumers);
+            return this;
+        }
+        /**
+         * Specifies the maximum number of concurrent consumers when using
+         * request/reply over JMS. See also the maxMessagesPerTask option to
+         * control dynamic scaling up/down of threads.
+         * The option will be converted to a <code>int</code> type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder replyToMaxConcurrentConsumers(
+                String replyToMaxConcurrentConsumers) {
+            setProperty("replyToMaxConcurrentConsumers", replyToMaxConcurrentConsumers);
+            return this;
+        }
+        /**
+         * Specifies the maximum number of concurrent consumers for continue
+         * routing when timeout occurred when using request/reply over JMS.
+         * The option is a <code>int</code> type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder replyToOnTimeoutMaxConcurrentConsumers(
+                int replyToOnTimeoutMaxConcurrentConsumers) {
+            setProperty("replyToOnTimeoutMaxConcurrentConsumers", replyToOnTimeoutMaxConcurrentConsumers);
+            return this;
+        }
+        /**
+         * Specifies the maximum number of concurrent consumers for continue
+         * routing when timeout occurred when using request/reply over JMS.
+         * The option will be converted to a <code>int</code> type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder replyToOnTimeoutMaxConcurrentConsumers(
+                String replyToOnTimeoutMaxConcurrentConsumers) {
+            setProperty("replyToOnTimeoutMaxConcurrentConsumers", replyToOnTimeoutMaxConcurrentConsumers);
+            return this;
+        }
+        /**
+         * Provides an explicit ReplyTo destination in the JMS message, which
+         * overrides the setting of replyTo. It is useful if you want to forward
+         * the message to a remote Queue and receive the reply message from the
+         * ReplyTo destination.
+         * The option is a <code>java.lang.String</code> type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder replyToOverride(
+                String replyToOverride) {
+            setProperty("replyToOverride", replyToOverride);
+            return this;
+        }
+        /**
+         * Allows for explicitly specifying which kind of strategy to use for
+         * replyTo queues when doing request/reply over JMS. Possible values
+         * are: Temporary, Shared, or Exclusive. By default Camel will use
+         * temporary queues. However if replyTo has been configured, then Shared
+         * is used by default. This option allows you to use exclusive queues
+         * instead of shared ones. See Camel JMS documentation for more details,
+         * and especially the notes about the implications if running in a
+         * clustered environment, and the fact that Shared reply queues has
+         * lower performance than its alternatives Temporary and Exclusive.
+         * The option is a
+         * <code>org.apache.camel.component.jms.ReplyToType</code> type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder replyToType(
+                ReplyToType replyToType) {
+            setProperty("replyToType", replyToType);
+            return this;
+        }
+        /**
+         * Allows for explicitly specifying which kind of strategy to use for
+         * replyTo queues when doing request/reply over JMS. Possible values
+         * are: Temporary, Shared, or Exclusive. By default Camel will use
+         * temporary queues. However if replyTo has been configured, then Shared
+         * is used by default. This option allows you to use exclusive queues
+         * instead of shared ones. See Camel JMS documentation for more details,
+         * and especially the notes about the implications if running in a
+         * clustered environment, and the fact that Shared reply queues has
+         * lower performance than its alternatives Temporary and Exclusive.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.jms.ReplyToType</code> type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder replyToType(
+                String replyToType) {
+            setProperty("replyToType", replyToType);
+            return this;
+        }
+        /**
+         * The timeout for waiting for a reply when using the InOut Exchange
+         * Pattern (in milliseconds). The default is 20 seconds. You can include
+         * the header CamelJmsRequestTimeout to override this endpoint
+         * configured timeout value, and thus have per message individual
+         * timeout values. See also the requestTimeoutCheckerInterval option.
+         * The option is a <code>long</code> type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder requestTimeout(
+                long requestTimeout) {
+            setProperty("requestTimeout", requestTimeout);
+            return this;
+        }
+        /**
+         * The timeout for waiting for a reply when using the InOut Exchange
+         * Pattern (in milliseconds). The default is 20 seconds. You can include
+         * the header CamelJmsRequestTimeout to override this endpoint
+         * configured timeout value, and thus have per message individual
+         * timeout values. See also the requestTimeoutCheckerInterval option.
+         * The option will be converted to a <code>long</code> type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder requestTimeout(
+                String requestTimeout) {
+            setProperty("requestTimeout", requestTimeout);
+            return this;
+        }
+        /**
+         * When sending messages, specifies the time-to-live of the message (in
+         * milliseconds).
+         * The option is a <code>long</code> type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder timeToLive(long timeToLive) {
+            setProperty("timeToLive", timeToLive);
+            return this;
+        }
+        /**
+         * When sending messages, specifies the time-to-live of the message (in
+         * milliseconds).
+         * The option will be converted to a <code>long</code> type.
+         * @group producer
+         */
+        public default AMQPEndpointProducerBuilder timeToLive(String timeToLive) {
+            setProperty("timeToLive", timeToLive);
+            return this;
+        }
+        /**
+         * Password to use with the ConnectionFactory. You can also configure
+         * username/password directly on the ConnectionFactory.
+         * The option is a <code>java.lang.String</code> type.
+         * @group security
+         */
+        public default AMQPEndpointProducerBuilder password(String password) {
+            setProperty("password", password);
+            return this;
+        }
+        /**
+         * Username to use with the ConnectionFactory. You can also configure
+         * username/password directly on the ConnectionFactory.
+         * The option is a <code>java.lang.String</code> type.
+         * @group security
+         */
+        public default AMQPEndpointProducerBuilder username(String username) {
+            setProperty("username", username);
+            return this;
+        }
+        /**
+         * Specifies whether to use transacted mode.
+         * The option is a <code>boolean</code> type.
+         * @group transaction
+         */
+        public default AMQPEndpointProducerBuilder transacted(boolean transacted) {
+            setProperty("transacted", transacted);
+            return this;
+        }
+        /**
+         * Specifies whether to use transacted mode.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group transaction
+         */
+        public default AMQPEndpointProducerBuilder transacted(String transacted) {
+            setProperty("transacted", transacted);
+            return this;
+        }
+    }
+
+    /**
+     * Advanced builder for endpoint producers for the AMQP component.
+     */
+    public interface AdvancedAMQPEndpointProducerBuilder
+            extends
+                EndpointProducerBuilder {
+        public default AMQPEndpointProducerBuilder basic() {
+            return (AMQPEndpointProducerBuilder) this;
+        }
+        /**
+         * This option is used to allow additional headers which may have values
+         * that are invalid according to JMS specification. For example some
+         * message systems such as WMQ do this with header names using prefix
+         * JMS_IBM_MQMD_ containing values with byte array or other invalid
+         * types. You can specify multiple header names separated by comma, and
+         * use as suffix for wildcard matching.
+         * The option is a <code>java.lang.String</code> type.
+         * @group producer (advanced)
+         */
+        public default AdvancedAMQPEndpointProducerBuilder allowAdditionalHeaders(
+                String allowAdditionalHeaders) {
+            setProperty("allowAdditionalHeaders", allowAdditionalHeaders);
+            return this;
+        }
+        /**
+         * Whether to allow sending messages with no body. If this option is
+         * false and the message body is null, then an JMSException is thrown.
+         * The option is a <code>boolean</code> type.
+         * @group producer (advanced)
+         */
+        public default AdvancedAMQPEndpointProducerBuilder allowNullBody(
+                boolean allowNullBody) {
+            setProperty("allowNullBody", allowNullBody);
+            return this;
+        }
+        /**
+         * Whether to allow sending messages with no body. If this option is
+         * false and the message body is null, then an JMSException is thrown.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group producer (advanced)
+         */
+        public default AdvancedAMQPEndpointProducerBuilder allowNullBody(
+                String allowNullBody) {
+            setProperty("allowNullBody", allowNullBody);
+            return this;
+        }
+        /**
+         * If true, Camel will always make a JMS message copy of the message
+         * when it is passed to the producer for sending. Copying the message is
+         * needed in some situations, such as when a
+         * replyToDestinationSelectorName is set (incidentally, Camel will set
+         * the alwaysCopyMessage option to true, if a
+         * replyToDestinationSelectorName is set).
+         * The option is a <code>boolean</code> type.
+         * @group producer (advanced)
+         */
+        public default AdvancedAMQPEndpointProducerBuilder alwaysCopyMessage(
+                boolean alwaysCopyMessage) {
+            setProperty("alwaysCopyMessage", alwaysCopyMessage);
+            return this;
+        }
+        /**
+         * If true, Camel will always make a JMS message copy of the message
+         * when it is passed to the producer for sending. Copying the message is
+         * needed in some situations, such as when a
+         * replyToDestinationSelectorName is set (incidentally, Camel will set
+         * the alwaysCopyMessage option to true, if a
+         * replyToDestinationSelectorName is set).
+         * The option will be converted to a <code>boolean</code> type.
+         * @group producer (advanced)
+         */
+        public default AdvancedAMQPEndpointProducerBuilder alwaysCopyMessage(
+                String alwaysCopyMessage) {
+            setProperty("alwaysCopyMessage", alwaysCopyMessage);
+            return this;
+        }
+        /**
+         * Use this JMS property to correlate messages in InOut exchange pattern
+         * (request-reply) instead of JMSCorrelationID property. This allows you
+         * to exchange messages with systems that do not correlate messages
+         * using JMSCorrelationID JMS property. If used JMSCorrelationID will
+         * not be used or set by Camel. The value of here named property will be
+         * generated if not supplied in the header of the message under the same
+         * name.
+         * The option is a <code>java.lang.String</code> type.
+         * @group producer (advanced)
+         */
+        public default AdvancedAMQPEndpointProducerBuilder correlationProperty(
+                String correlationProperty) {
+            setProperty("correlationProperty", correlationProperty);
+            return this;
+        }
+        /**
+         * Use this option to force disabling time to live. For example when you
+         * do request/reply over JMS, then Camel will by default use the
+         * requestTimeout value as time to live on the message being sent. The
+         * problem is that the sender and receiver systems have to have their
+         * clocks synchronized, so they are in sync. This is not always so easy
+         * to archive. So you can use disableTimeToLive=true to not set a time
+         * to live value on the sent message. Then the message will not expire
+         * on the receiver system. See below in section About time to live for
+         * more details.
+         * The option is a <code>boolean</code> type.
+         * @group producer (advanced)
+         */
+        public default AdvancedAMQPEndpointProducerBuilder disableTimeToLive(
+                boolean disableTimeToLive) {
+            setProperty("disableTimeToLive", disableTimeToLive);
+            return this;
+        }
+        /**
+         * Use this option to force disabling time to live. For example when you
+         * do request/reply over JMS, then Camel will by default use the
+         * requestTimeout value as time to live on the message being sent. The
+         * problem is that the sender and receiver systems have to have their
+         * clocks synchronized, so they are in sync. This is not always so easy
+         * to archive. So you can use disableTimeToLive=true to not set a time
+         * to live value on the sent message. Then the message will not expire
+         * on the receiver system. See below in section About time to live for
+         * more details.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group producer (advanced)
+         */
+        public default AdvancedAMQPEndpointProducerBuilder disableTimeToLive(
+                String disableTimeToLive) {
+            setProperty("disableTimeToLive", disableTimeToLive);
+            return this;
+        }
+        /**
+         * When using mapJmsMessage=false Camel will create a new JMS message to
+         * send to a new JMS destination if you touch the headers (get or set)
+         * during the route. Set this option to true to force Camel to send the
+         * original JMS message that was received.
+         * The option is a <code>boolean</code> type.
+         * @group producer (advanced)
+         */
+        public default AdvancedAMQPEndpointProducerBuilder forceSendOriginalMessage(
+                boolean forceSendOriginalMessage) {
+            setProperty("forceSendOriginalMessage", forceSendOriginalMessage);
+            return this;
+        }
+        /**
+         * When using mapJmsMessage=false Camel will create a new JMS message to
+         * send to a new JMS destination if you touch the headers (get or set)
+         * during the route. Set this option to true to force Camel to send the
+         * original JMS message that was received.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group producer (advanced)
+         */
+        public default AdvancedAMQPEndpointProducerBuilder forceSendOriginalMessage(
+                String forceSendOriginalMessage) {
+            setProperty("forceSendOriginalMessage", forceSendOriginalMessage);
+            return this;
+        }
+        /**
+         * Only applicable when sending to JMS destination using InOnly (eg fire
+         * and forget). Enabling this option will enrich the Camel Exchange with
+         * the actual JMSMessageID that was used by the JMS client when the
+         * message was sent to the JMS destination.
+         * The option is a <code>boolean</code> type.
+         * @group producer (advanced)
+         */
+        public default AdvancedAMQPEndpointProducerBuilder includeSentJMSMessageID(
+                boolean includeSentJMSMessageID) {
+            setProperty("includeSentJMSMessageID", includeSentJMSMessageID);
+            return this;
+        }
+        /**
+         * Only applicable when sending to JMS destination using InOnly (eg fire
+         * and forget). Enabling this option will enrich the Camel Exchange with
+         * the actual JMSMessageID that was used by the JMS client when the
+         * message was sent to the JMS destination.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group producer (advanced)
+         */
+        public default AdvancedAMQPEndpointProducerBuilder includeSentJMSMessageID(
+                String includeSentJMSMessageID) {
+            setProperty("includeSentJMSMessageID", includeSentJMSMessageID);
+            return this;
+        }
+        /**
+         * Sets the cache level by name for the reply consumer when doing
+         * request/reply over JMS. This option only applies when using fixed
+         * reply queues (not temporary). Camel will by default use:
+         * CACHE_CONSUMER for exclusive or shared w/ replyToSelectorName. And
+         * CACHE_SESSION for shared without replyToSelectorName. Some JMS
+         * brokers such as IBM WebSphere may require to set the
+         * replyToCacheLevelName=CACHE_NONE to work. Note: If using temporary
+         * queues then CACHE_NONE is not allowed, and you must use a higher
+         * value such as CACHE_CONSUMER or CACHE_SESSION.
+         * The option is a <code>java.lang.String</code> type.
+         * @group producer (advanced)
+         */
+        public default AdvancedAMQPEndpointProducerBuilder replyToCacheLevelName(
+                String replyToCacheLevelName) {
+            setProperty("replyToCacheLevelName", replyToCacheLevelName);
+            return this;
+        }
+        /**
+         * Sets the JMS Selector using the fixed name to be used so you can
+         * filter out your own replies from the others when using a shared queue
+         * (that is, if you are not using a temporary reply queue).
+         * The option is a <code>java.lang.String</code> type.
+         * @group producer (advanced)
+         */
+        public default AdvancedAMQPEndpointProducerBuilder replyToDestinationSelectorName(
+                String replyToDestinationSelectorName) {
+            setProperty("replyToDestinationSelectorName", replyToDestinationSelectorName);
+            return this;
+        }
+        /**
+         * Sets whether StreamMessage type is enabled or not. Message payloads
+         * of streaming kind such as files, InputStream, etc will either by sent
+         * as BytesMessage or StreamMessage. This option controls which kind
+         * will be used. By default BytesMessage is used which enforces the
+         * entire message payload to be read into memory. By enabling this
+         * option the message payload is read into memory in chunks and each
+         * chunk is then written to the StreamMessage until no more data.
+         * The option is a <code>boolean</code> type.
+         * @group producer (advanced)
+         */
+        public default AdvancedAMQPEndpointProducerBuilder streamMessageTypeEnabled(
+                boolean streamMessageTypeEnabled) {
+            setProperty("streamMessageTypeEnabled", streamMessageTypeEnabled);
+            return this;
+        }
+        /**
+         * Sets whether StreamMessage type is enabled or not. Message payloads
+         * of streaming kind such as files, InputStream, etc will either by sent
+         * as BytesMessage or StreamMessage. This option controls which kind
+         * will be used. By default BytesMessage is used which enforces the
+         * entire message payload to be read into memory. By enabling this
+         * option the message payload is read into memory in chunks and each
+         * chunk is then written to the StreamMessage until no more data.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group producer (advanced)
+         */
+        public default AdvancedAMQPEndpointProducerBuilder streamMessageTypeEnabled(
+                String streamMessageTypeEnabled) {
+            setProperty("streamMessageTypeEnabled", streamMessageTypeEnabled);
+            return this;
+        }
+        /**
+         * Controls whether or not to include serialized headers. Applies only
+         * when isTransferExchange() is true. This requires that the objects are
+         * serializable. Camel will exclude any non-serializable objects and log
+         * it at WARN level.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder allowSerializedHeaders(
+                boolean allowSerializedHeaders) {
+            setProperty("allowSerializedHeaders", allowSerializedHeaders);
+            return this;
+        }
+        /**
+         * Controls whether or not to include serialized headers. Applies only
+         * when isTransferExchange() is true. This requires that the objects are
+         * serializable. Camel will exclude any non-serializable objects and log
+         * it at WARN level.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder allowSerializedHeaders(
+                String allowSerializedHeaders) {
+            setProperty("allowSerializedHeaders", allowSerializedHeaders);
+            return this;
+        }
+        /**
+         * Whether to startup the JmsConsumer message listener asynchronously,
+         * when starting a route. For example if a JmsConsumer cannot get a
+         * connection to a remote JMS broker, then it may block while retrying
+         * and/or failover. This will cause Camel to block while starting
+         * routes. By setting this option to true, you will let routes startup,
+         * while the JmsConsumer connects to the JMS broker using a dedicated
+         * thread in asynchronous mode. If this option is used, then beware that
+         * if the connection could not be established, then an exception is
+         * logged at WARN level, and the consumer will not be able to receive
+         * messages; You can then restart the route to retry.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder asyncStartListener(
+                boolean asyncStartListener) {
+            setProperty("asyncStartListener", asyncStartListener);
+            return this;
+        }
+        /**
+         * Whether to startup the JmsConsumer message listener asynchronously,
+         * when starting a route. For example if a JmsConsumer cannot get a
+         * connection to a remote JMS broker, then it may block while retrying
+         * and/or failover. This will cause Camel to block while starting
+         * routes. By setting this option to true, you will let routes startup,
+         * while the JmsConsumer connects to the JMS broker using a dedicated
+         * thread in asynchronous mode. If this option is used, then beware that
+         * if the connection could not be established, then an exception is
+         * logged at WARN level, and the consumer will not be able to receive
+         * messages; You can then restart the route to retry.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder asyncStartListener(
+                String asyncStartListener) {
+            setProperty("asyncStartListener", asyncStartListener);
+            return this;
+        }
+        /**
+         * Whether to stop the JmsConsumer message listener asynchronously, when
+         * stopping a route.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder asyncStopListener(
+                boolean asyncStopListener) {
+            setProperty("asyncStopListener", asyncStopListener);
+            return this;
+        }
+        /**
+         * Whether to stop the JmsConsumer message listener asynchronously, when
+         * stopping a route.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder asyncStopListener(
+                String asyncStopListener) {
+            setProperty("asyncStopListener", asyncStopListener);
+            return this;
+        }
+        /**
+         * Whether the endpoint should use basic property binding (Camel 2.x) or
+         * the newer property binding with additional capabilities.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder basicPropertyBinding(
+                boolean basicPropertyBinding) {
+            setProperty("basicPropertyBinding", basicPropertyBinding);
+            return this;
+        }
+        /**
+         * Whether the endpoint should use basic property binding (Camel 2.x) or
+         * the newer property binding with additional capabilities.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder basicPropertyBinding(
+                String basicPropertyBinding) {
+            setProperty("basicPropertyBinding", basicPropertyBinding);
+            return this;
+        }
+        /**
+         * A pluggable
+         * org.springframework.jms.support.destination.DestinationResolver that
+         * allows you to use your own resolver (for example, to lookup the real
+         * destination in a JNDI registry).
+         * The option is a
+         * <code>org.springframework.jms.support.destination.DestinationResolver</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder destinationResolver(
+                Object destinationResolver) {
+            setProperty("destinationResolver", destinationResolver);
+            return this;
+        }
+        /**
+         * A pluggable
+         * org.springframework.jms.support.destination.DestinationResolver that
+         * allows you to use your own resolver (for example, to lookup the real
+         * destination in a JNDI registry).
+         * The option will be converted to a
+         * <code>org.springframework.jms.support.destination.DestinationResolver</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder destinationResolver(
+                String destinationResolver) {
+            setProperty("destinationResolver", destinationResolver);
+            return this;
+        }
+        /**
+         * Specifies a org.springframework.util.ErrorHandler to be invoked in
+         * case of any uncaught exceptions thrown while processing a Message. By
+         * default these exceptions will be logged at the WARN level, if no
+         * errorHandler has been configured. You can configure logging level and
+         * whether stack traces should be logged using errorHandlerLoggingLevel
+         * and errorHandlerLogStackTrace options. This makes it much easier to
+         * configure, than having to code a custom errorHandler.
+         * The option is a <code>org.springframework.util.ErrorHandler</code>
+         * type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder errorHandler(
+                Object errorHandler) {
+            setProperty("errorHandler", errorHandler);
+            return this;
+        }
+        /**
+         * Specifies a org.springframework.util.ErrorHandler to be invoked in
+         * case of any uncaught exceptions thrown while processing a Message. By
+         * default these exceptions will be logged at the WARN level, if no
+         * errorHandler has been configured. You can configure logging level and
+         * whether stack traces should be logged using errorHandlerLoggingLevel
+         * and errorHandlerLogStackTrace options. This makes it much easier to
+         * configure, than having to code a custom errorHandler.
+         * The option will be converted to a
+         * <code>org.springframework.util.ErrorHandler</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder errorHandler(
+                String errorHandler) {
+            setProperty("errorHandler", errorHandler);
+            return this;
+        }
+        /**
+         * Specifies the JMS Exception Listener that is to be notified of any
+         * underlying JMS exceptions.
+         * The option is a <code>javax.jms.ExceptionListener</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder exceptionListener(
+                Object exceptionListener) {
+            setProperty("exceptionListener", exceptionListener);
+            return this;
+        }
+        /**
+         * Specifies the JMS Exception Listener that is to be notified of any
+         * underlying JMS exceptions.
+         * The option will be converted to a
+         * <code>javax.jms.ExceptionListener</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder exceptionListener(
+                String exceptionListener) {
+            setProperty("exceptionListener", exceptionListener);
+            return this;
+        }
+        /**
+         * To use a custom HeaderFilterStrategy to filter header to and from
+         * Camel message.
+         * The option is a
+         * <code>org.apache.camel.spi.HeaderFilterStrategy</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder headerFilterStrategy(
+                HeaderFilterStrategy headerFilterStrategy) {
+            setProperty("headerFilterStrategy", headerFilterStrategy);
+            return this;
+        }
+        /**
+         * To use a custom HeaderFilterStrategy to filter header to and from
+         * Camel message.
+         * The option will be converted to a
+         * <code>org.apache.camel.spi.HeaderFilterStrategy</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder headerFilterStrategy(
+                String headerFilterStrategy) {
+            setProperty("headerFilterStrategy", headerFilterStrategy);
+            return this;
+        }
+        /**
+         * Specify the limit for the number of consumers that are allowed to be
+         * idle at any given time.
+         * The option is a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder idleConsumerLimit(
+                int idleConsumerLimit) {
+            setProperty("idleConsumerLimit", idleConsumerLimit);
+            return this;
+        }
+        /**
+         * Specify the limit for the number of consumers that are allowed to be
+         * idle at any given time.
+         * The option will be converted to a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder idleConsumerLimit(
+                String idleConsumerLimit) {
+            setProperty("idleConsumerLimit", idleConsumerLimit);
+            return this;
+        }
+        /**
+         * Specifies the limit for idle executions of a receive task, not having
+         * received any message within its execution. If this limit is reached,
+         * the task will shut down and leave receiving to other executing tasks
+         * (in the case of dynamic scheduling; see the maxConcurrentConsumers
+         * setting). There is additional doc available from Spring.
+         * The option is a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder idleTaskExecutionLimit(
+                int idleTaskExecutionLimit) {
+            setProperty("idleTaskExecutionLimit", idleTaskExecutionLimit);
+            return this;
+        }
+        /**
+         * Specifies the limit for idle executions of a receive task, not having
+         * received any message within its execution. If this limit is reached,
+         * the task will shut down and leave receiving to other executing tasks
+         * (in the case of dynamic scheduling; see the maxConcurrentConsumers
+         * setting). There is additional doc available from Spring.
+         * The option will be converted to a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder idleTaskExecutionLimit(
+                String idleTaskExecutionLimit) {
+            setProperty("idleTaskExecutionLimit", idleTaskExecutionLimit);
+            return this;
+        }
+        /**
+         * Whether to include all JMSXxxx properties when mapping from JMS to
+         * Camel Message. Setting this to true will include properties such as
+         * JMSXAppID, and JMSXUserID etc. Note: If you are using a custom
+         * headerFilterStrategy then this option does not apply.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder includeAllJMSXProperties(
+                boolean includeAllJMSXProperties) {
+            setProperty("includeAllJMSXProperties", includeAllJMSXProperties);
+            return this;
+        }
+        /**
+         * Whether to include all JMSXxxx properties when mapping from JMS to
+         * Camel Message. Setting this to true will include properties such as
+         * JMSXAppID, and JMSXUserID etc. Note: If you are using a custom
+         * headerFilterStrategy then this option does not apply.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder includeAllJMSXProperties(
+                String includeAllJMSXProperties) {
+            setProperty("includeAllJMSXProperties", includeAllJMSXProperties);
+            return this;
+        }
+        /**
+         * Pluggable strategy for encoding and decoding JMS keys so they can be
+         * compliant with the JMS specification. Camel provides two
+         * implementations out of the box: default and passthrough. The default
+         * strategy will safely marshal dots and hyphens (. and -). The
+         * passthrough strategy leaves the key as is. Can be used for JMS
+         * brokers which do not care whether JMS header keys contain illegal
+         * characters. You can provide your own implementation of the
+         * org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it
+         * using the # notation.
+         * The option is a
+         * <code>org.apache.camel.component.jms.JmsKeyFormatStrategy</code>
+         * type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder jmsKeyFormatStrategy(
+                Object jmsKeyFormatStrategy) {
+            setProperty("jmsKeyFormatStrategy", jmsKeyFormatStrategy);
+            return this;
+        }
+        /**
+         * Pluggable strategy for encoding and decoding JMS keys so they can be
+         * compliant with the JMS specification. Camel provides two
+         * implementations out of the box: default and passthrough. The default
+         * strategy will safely marshal dots and hyphens (. and -). The
+         * passthrough strategy leaves the key as is. Can be used for JMS
+         * brokers which do not care whether JMS header keys contain illegal
+         * characters. You can provide your own implementation of the
+         * org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it
+         * using the # notation.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.jms.JmsKeyFormatStrategy</code>
+         * type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder jmsKeyFormatStrategy(
+                String jmsKeyFormatStrategy) {
+            setProperty("jmsKeyFormatStrategy", jmsKeyFormatStrategy);
+            return this;
+        }
+        /**
+         * Specifies whether Camel should auto map the received JMS message to a
+         * suited payload type, such as javax.jms.TextMessage to a String etc.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder mapJmsMessage(
+                boolean mapJmsMessage) {
+            setProperty("mapJmsMessage", mapJmsMessage);
+            return this;
+        }
+        /**
+         * Specifies whether Camel should auto map the received JMS message to a
+         * suited payload type, such as javax.jms.TextMessage to a String etc.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder mapJmsMessage(
+                String mapJmsMessage) {
+            setProperty("mapJmsMessage", mapJmsMessage);
+            return this;
+        }
+        /**
+         * The number of messages per task. -1 is unlimited. If you use a range
+         * for concurrent consumers (eg min max), then this option can be used
+         * to set a value to eg 100 to control how fast the consumers will
+         * shrink when less work is required.
+         * The option is a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder maxMessagesPerTask(
+                int maxMessagesPerTask) {
+            setProperty("maxMessagesPerTask", maxMessagesPerTask);
+            return this;
+        }
+        /**
+         * The number of messages per task. -1 is unlimited. If you use a range
+         * for concurrent consumers (eg min max), then this option can be used
+         * to set a value to eg 100 to control how fast the consumers will
+         * shrink when less work is required.
+         * The option will be converted to a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder maxMessagesPerTask(
+                String maxMessagesPerTask) {
+            setProperty("maxMessagesPerTask", maxMessagesPerTask);
+            return this;
+        }
+        /**
+         * To use a custom Spring
+         * org.springframework.jms.support.converter.MessageConverter so you can
+         * be in control how to map to/from a javax.jms.Message.
+         * The option is a
+         * <code>org.springframework.jms.support.converter.MessageConverter</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder messageConverter(
+                Object messageConverter) {
+            setProperty("messageConverter", messageConverter);
+            return this;
+        }
+        /**
+         * To use a custom Spring
+         * org.springframework.jms.support.converter.MessageConverter so you can
+         * be in control how to map to/from a javax.jms.Message.
+         * The option will be converted to a
+         * <code>org.springframework.jms.support.converter.MessageConverter</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder messageConverter(
+                String messageConverter) {
+            setProperty("messageConverter", messageConverter);
+            return this;
+        }
+        /**
+         * To use the given MessageCreatedStrategy which are invoked when Camel
+         * creates new instances of javax.jms.Message objects when Camel is
+         * sending a JMS message.
+         * The option is a
+         * <code>org.apache.camel.component.jms.MessageCreatedStrategy</code>
+         * type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder messageCreatedStrategy(
+                Object messageCreatedStrategy) {
+            setProperty("messageCreatedStrategy", messageCreatedStrategy);
+            return this;
+        }
+        /**
+         * To use the given MessageCreatedStrategy which are invoked when Camel
+         * creates new instances of javax.jms.Message objects when Camel is
+         * sending a JMS message.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.jms.MessageCreatedStrategy</code>
+         * type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder messageCreatedStrategy(
+                String messageCreatedStrategy) {
+            setProperty("messageCreatedStrategy", messageCreatedStrategy);
+            return this;
+        }
+        /**
+         * When sending, specifies whether message IDs should be added. This is
+         * just an hint to the JMS Broker. If the JMS provider accepts this
+         * hint, these messages must have the message ID set to null; if the
+         * provider ignores the hint, the message ID must be set to its normal
+         * unique value.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder messageIdEnabled(
+                boolean messageIdEnabled) {
+            setProperty("messageIdEnabled", messageIdEnabled);
+            return this;
+        }
+        /**
+         * When sending, specifies whether message IDs should be added. This is
+         * just an hint to the JMS Broker. If the JMS provider accepts this
+         * hint, these messages must have the message ID set to null; if the
+         * provider ignores the hint, the message ID must be set to its normal
+         * unique value.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder messageIdEnabled(
+                String messageIdEnabled) {
+            setProperty("messageIdEnabled", messageIdEnabled);
+            return this;
+        }
+        /**
+         * Registry ID of the MessageListenerContainerFactory used to determine
+         * what
+         * org.springframework.jms.listener.AbstractMessageListenerContainer to
+         * use to consume messages. Setting this will automatically set
+         * consumerType to Custom.
+         * The option is a
+         * <code>org.apache.camel.component.jms.MessageListenerContainerFactory</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder messageListenerContainerFactory(
+                Object messageListenerContainerFactory) {
+            setProperty("messageListenerContainerFactory", messageListenerContainerFactory);
+            return this;
+        }
+        /**
+         * Registry ID of the MessageListenerContainerFactory used to determine
+         * what
+         * org.springframework.jms.listener.AbstractMessageListenerContainer to
+         * use to consume messages. Setting this will automatically set
+         * consumerType to Custom.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.jms.MessageListenerContainerFactory</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder messageListenerContainerFactory(
+                String messageListenerContainerFactory) {
+            setProperty("messageListenerContainerFactory", messageListenerContainerFactory);
+            return this;
+        }
+        /**
+         * Specifies whether timestamps should be enabled by default on sending
+         * messages. This is just an hint to the JMS Broker. If the JMS provider
+         * accepts this hint, these messages must have the timestamp set to
+         * zero; if the provider ignores the hint, the timestamp must be set to
+         * its normal value.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder messageTimestampEnabled(
+                boolean messageTimestampEnabled) {
+            setProperty("messageTimestampEnabled", messageTimestampEnabled);
+            return this;
+        }
+        /**
+         * Specifies whether timestamps should be enabled by default on sending
+         * messages. This is just an hint to the JMS Broker. If the JMS provider
+         * accepts this hint, these messages must have the timestamp set to
+         * zero; if the provider ignores the hint, the timestamp must be set to
+         * its normal value.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder messageTimestampEnabled(
+                String messageTimestampEnabled) {
+            setProperty("messageTimestampEnabled", messageTimestampEnabled);
+            return this;
+        }
+        /**
+         * Specifies whether to inhibit the delivery of messages published by
+         * its own connection.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder pubSubNoLocal(
+                boolean pubSubNoLocal) {
+            setProperty("pubSubNoLocal", pubSubNoLocal);
+            return this;
+        }
+        /**
+         * Specifies whether to inhibit the delivery of messages published by
+         * its own connection.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder pubSubNoLocal(
+                String pubSubNoLocal) {
+            setProperty("pubSubNoLocal", pubSubNoLocal);
+            return this;
+        }
+        /**
+         * The timeout for receiving messages (in milliseconds).
+         * The option is a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder receiveTimeout(
+                long receiveTimeout) {
+            setProperty("receiveTimeout", receiveTimeout);
+            return this;
+        }
+        /**
+         * The timeout for receiving messages (in milliseconds).
+         * The option will be converted to a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder receiveTimeout(
+                String receiveTimeout) {
+            setProperty("receiveTimeout", receiveTimeout);
+            return this;
+        }
+        /**
+         * Specifies the interval between recovery attempts, i.e. when a
+         * connection is being refreshed, in milliseconds. The default is 5000
+         * ms, that is, 5 seconds.
+         * The option is a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder recoveryInterval(
+                long recoveryInterval) {
+            setProperty("recoveryInterval", recoveryInterval);
+            return this;
+        }
+        /**
+         * Specifies the interval between recovery attempts, i.e. when a
+         * connection is being refreshed, in milliseconds. The default is 5000
+         * ms, that is, 5 seconds.
+         * The option will be converted to a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder recoveryInterval(
+                String recoveryInterval) {
+            setProperty("recoveryInterval", recoveryInterval);
+            return this;
+        }
+        /**
+         * Configures how often Camel should check for timed out Exchanges when
+         * doing request/reply over JMS. By default Camel checks once per
+         * second. But if you must react faster when a timeout occurs, then you
+         * can lower this interval, to check more frequently. The timeout is
+         * determined by the option requestTimeout.
+         * The option is a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder requestTimeoutCheckerInterval(
+                long requestTimeoutCheckerInterval) {
+            setProperty("requestTimeoutCheckerInterval", requestTimeoutCheckerInterval);
+            return this;
+        }
+        /**
+         * Configures how often Camel should check for timed out Exchanges when
+         * doing request/reply over JMS. By default Camel checks once per
+         * second. But if you must react faster when a timeout occurs, then you
+         * can lower this interval, to check more frequently. The timeout is
+         * determined by the option requestTimeout.
+         * The option will be converted to a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder requestTimeoutCheckerInterval(
+                String requestTimeoutCheckerInterval) {
+            setProperty("requestTimeoutCheckerInterval", requestTimeoutCheckerInterval);
+            return this;
+        }
+        /**
+         * Sets whether synchronous processing should be strictly used, or Camel
+         * is allowed to use asynchronous processing (if supported).
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder synchronous(
+                boolean synchronous) {
+            setProperty("synchronous", synchronous);
+            return this;
+        }
+        /**
+         * Sets whether synchronous processing should be strictly used, or Camel
+         * is allowed to use asynchronous processing (if supported).
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder synchronous(
+                String synchronous) {
+            setProperty("synchronous", synchronous);
+            return this;
+        }
+        /**
+         * If enabled and you are using Request Reply messaging (InOut) and an
+         * Exchange failed on the consumer side, then the caused Exception will
+         * be send back in response as a javax.jms.ObjectMessage. If the client
+         * is Camel, the returned Exception is rethrown. This allows you to use
+         * Camel JMS as a bridge in your routing - for example, using persistent
+         * queues to enable robust routing. Notice that if you also have
+         * transferExchange enabled, this option takes precedence. The caught
+         * exception is required to be serializable. The original Exception on
+         * the consumer side can be wrapped in an outer exception such as
+         * org.apache.camel.RuntimeCamelException when returned to the producer.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder transferException(
+                boolean transferException) {
+            setProperty("transferException", transferException);
+            return this;
+        }
+        /**
+         * If enabled and you are using Request Reply messaging (InOut) and an
+         * Exchange failed on the consumer side, then the caused Exception will
+         * be send back in response as a javax.jms.ObjectMessage. If the client
+         * is Camel, the returned Exception is rethrown. This allows you to use
+         * Camel JMS as a bridge in your routing - for example, using persistent
+         * queues to enable robust routing. Notice that if you also have
+         * transferExchange enabled, this option takes precedence. The caught
+         * exception is required to be serializable. The original Exception on
+         * the consumer side can be wrapped in an outer exception such as
+         * org.apache.camel.RuntimeCamelException when returned to the producer.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder transferException(
+                String transferException) {
+            setProperty("transferException", transferException);
+            return this;
+        }
+        /**
+         * You can transfer the exchange over the wire instead of just the body
+         * and headers. 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. You must enable this option on both the producer
+         * and consumer side, so Camel knows the payloads is an Exchange and not
+         * a regular payload.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder transferExchange(
+                boolean transferExchange) {
+            setProperty("transferExchange", transferExchange);
+            return this;
+        }
+        /**
+         * You can transfer the exchange over the wire instead of just the body
+         * and headers. 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. You must enable this option on both the producer
+         * and consumer side, so Camel knows the payloads is an Exchange and not
+         * a regular payload.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder transferExchange(
+                String transferExchange) {
+            setProperty("transferExchange", transferExchange);
+            return this;
+        }
+        /**
+         * If enabled and you are using Request Reply messaging (InOut) and an
+         * Exchange failed with a SOAP fault (not exception) on the consumer
+         * side, then the fault flag on org.apache.camel.Message#isFault() will
+         * be send back in the response as a JMS header with the key
+         * JmsConstants#JMS_TRANSFER_FAULT. If the client is Camel, the returned
+         * fault flag will be set on the
+         * org.apache.camel.Message#setFault(boolean). You may want to enable
+         * this when using Camel components that support faults such as SOAP
+         * based such as cxf or spring-ws.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder transferFault(
+                boolean transferFault) {
+            setProperty("transferFault", transferFault);
+            return this;
+        }
+        /**
+         * If enabled and you are using Request Reply messaging (InOut) and an
+         * Exchange failed with a SOAP fault (not exception) on the consumer
+         * side, then the fault flag on org.apache.camel.Message#isFault() will
+         * be send back in the response as a JMS header with the key
+         * JmsConstants#JMS_TRANSFER_FAULT. If the client is Camel, the returned
+         * fault flag will be set on the
+         * org.apache.camel.Message#setFault(boolean). You may want to enable
+         * this when using Camel components that support faults such as SOAP
+         * based such as cxf or spring-ws.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder transferFault(
+                String transferFault) {
+            setProperty("transferFault", transferFault);
+            return this;
+        }
+        /**
+         * Specifies whether JMSMessageID should always be used as
+         * JMSCorrelationID for InOut messages.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder useMessageIDAsCorrelationID(
+                boolean useMessageIDAsCorrelationID) {
+            setProperty("useMessageIDAsCorrelationID", useMessageIDAsCorrelationID);
+            return this;
+        }
+        /**
+         * Specifies whether JMSMessageID should always be used as
+         * JMSCorrelationID for InOut messages.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder useMessageIDAsCorrelationID(
+                String useMessageIDAsCorrelationID) {
+            setProperty("useMessageIDAsCorrelationID", useMessageIDAsCorrelationID);
+            return this;
+        }
+        /**
+         * Number of times to wait for provisional correlation id to be updated
+         * to the actual correlation id when doing request/reply over JMS and
+         * when the option useMessageIDAsCorrelationID is enabled.
+         * The option is a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder waitForProvisionCorrelationToBeUpdatedCounter(
+                int waitForProvisionCorrelationToBeUpdatedCounter) {
+            setProperty("waitForProvisionCorrelationToBeUpdatedCounter", waitForProvisionCorrelationToBeUpdatedCounter);
+            return this;
+        }
+        /**
+         * Number of times to wait for provisional correlation id to be updated
+         * to the actual correlation id when doing request/reply over JMS and
+         * when the option useMessageIDAsCorrelationID is enabled.
+         * The option will be converted to a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder waitForProvisionCorrelationToBeUpdatedCounter(
+                String waitForProvisionCorrelationToBeUpdatedCounter) {
+            setProperty("waitForProvisionCorrelationToBeUpdatedCounter", waitForProvisionCorrelationToBeUpdatedCounter);
+            return this;
+        }
+        /**
+         * Interval in millis to sleep each time while waiting for provisional
+         * correlation id to be updated.
+         * The option is a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder waitForProvisionCorrelationToBeUpdatedThreadSleepingTime(
+                long waitForProvisionCorrelationToBeUpdatedThreadSleepingTime) {
+            setProperty("waitForProvisionCorrelationToBeUpdatedThreadSleepingTime", waitForProvisionCorrelationToBeUpdatedThreadSleepingTime);
+            return this;
+        }
+        /**
+         * Interval in millis to sleep each time while waiting for provisional
+         * correlation id to be updated.
+         * The option will be converted to a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointProducerBuilder waitForProvisionCorrelationToBeUpdatedThreadSleepingTime(
+                String waitForProvisionCorrelationToBeUpdatedThreadSleepingTime) {
+            setProperty("waitForProvisionCorrelationToBeUpdatedThreadSleepingTime", waitForProvisionCorrelationToBeUpdatedThreadSleepingTime);
+            return this;
+        }
+        /**
+         * If true, Camel will create a JmsTransactionManager, if there is no
+         * transactionManager injected when option transacted=true.
+         * The option is a <code>boolean</code> type.
+         * @group transaction (advanced)
+         */
+        public default AdvancedAMQPEndpointProducerBuilder lazyCreateTransactionManager(
+                boolean lazyCreateTransactionManager) {
+            setProperty("lazyCreateTransactionManager", lazyCreateTransactionManager);
+            return this;
+        }
+        /**
+         * If true, Camel will create a JmsTransactionManager, if there is no
+         * transactionManager injected when option transacted=true.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group transaction (advanced)
+         */
+        public default AdvancedAMQPEndpointProducerBuilder lazyCreateTransactionManager(
+                String lazyCreateTransactionManager) {
+            setProperty("lazyCreateTransactionManager", lazyCreateTransactionManager);
+            return this;
+        }
+        /**
+         * The Spring transaction manager to use.
+         * The option is a
+         * <code>org.springframework.transaction.PlatformTransactionManager</code> type.
+         * @group transaction (advanced)
+         */
+        public default AdvancedAMQPEndpointProducerBuilder transactionManager(
+                Object transactionManager) {
+            setProperty("transactionManager", transactionManager);
+            return this;
+        }
+        /**
+         * The Spring transaction manager to use.
+         * The option will be converted to a
+         * <code>org.springframework.transaction.PlatformTransactionManager</code> type.
+         * @group transaction (advanced)
+         */
+        public default AdvancedAMQPEndpointProducerBuilder transactionManager(
+                String transactionManager) {
+            setProperty("transactionManager", transactionManager);
+            return this;
+        }
+        /**
+         * The name of the transaction to use.
+         * The option is a <code>java.lang.String</code> type.
+         * @group transaction (advanced)
+         */
+        public default AdvancedAMQPEndpointProducerBuilder transactionName(
+                String transactionName) {
+            setProperty("transactionName", transactionName);
+            return this;
+        }
+        /**
+         * The timeout value of the transaction (in seconds), if using
+         * transacted mode.
+         * The option is a <code>int</code> type.
+         * @group transaction (advanced)
+         */
+        public default AdvancedAMQPEndpointProducerBuilder transactionTimeout(
+                int transactionTimeout) {
+            setProperty("transactionTimeout", transactionTimeout);
+            return this;
+        }
+        /**
+         * The timeout value of the transaction (in seconds), if using
+         * transacted mode.
+         * The option will be converted to a <code>int</code> type.
+         * @group transaction (advanced)
+         */
+        public default AdvancedAMQPEndpointProducerBuilder transactionTimeout(
+                String transactionTimeout) {
+            setProperty("transactionTimeout", transactionTimeout);
+            return this;
+        }
+    }
+
+    /**
+     * Builder for endpoint for the AMQP component.
+     */
+    public static interface AMQPEndpointBuilder
+            extends
+                AMQPEndpointConsumerBuilder, AMQPEndpointProducerBuilder {
+        public default AdvancedAMQPEndpointBuilder advanced() {
+            return (AdvancedAMQPEndpointBuilder) this;
+        }
+        /**
+         * The kind of destination to use.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AMQPEndpointBuilder destinationType(
+                String destinationType) {
+            setProperty("destinationType", destinationType);
+            return this;
+        }
+        /**
+         * Name of the queue or topic to use as destination.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AMQPEndpointBuilder destinationName(
+                String destinationName) {
+            setProperty("destinationName", destinationName);
+            return this;
+        }
+        /**
+         * Sets the JMS client ID to use. Note that this value, if specified,
+         * must be unique and can only be used by a single JMS connection
+         * instance. It is typically only required for durable topic
+         * subscriptions. If using Apache ActiveMQ you may prefer to use Virtual
+         * Topics instead.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AMQPEndpointBuilder clientId(String clientId) {
+            setProperty("clientId", clientId);
+            return this;
+        }
+        /**
+         * Sets the default connection factory to be used if a connection
+         * factory is not specified for either
+         * setTemplateConnectionFactory(ConnectionFactory) or
+         * setListenerConnectionFactory(ConnectionFactory).
+         * The option is a <code>javax.jms.ConnectionFactory</code> type.
+         * @group common
+         */
+        public default AMQPEndpointBuilder connectionFactory(
+                Object connectionFactory) {
+            setProperty("connectionFactory", connectionFactory);
+            return this;
+        }
+        /**
+         * Sets the default connection factory to be used if a connection
+         * factory is not specified for either
+         * setTemplateConnectionFactory(ConnectionFactory) or
+         * setListenerConnectionFactory(ConnectionFactory).
+         * The option will be converted to a
+         * <code>javax.jms.ConnectionFactory</code> type.
+         * @group common
+         */
+        public default AMQPEndpointBuilder connectionFactory(
+                String connectionFactory) {
+            setProperty("connectionFactory", connectionFactory);
+            return this;
+        }
+        /**
+         * Specifies whether Camel ignores the JMSReplyTo header in messages. If
+         * true, Camel does not send a reply back to the destination specified
+         * in the JMSReplyTo header. You can use this option if you want Camel
+         * to consume from a route and you do not want Camel to automatically
+         * send back a reply message because another component in your code
+         * handles the reply message. You can also use this option if you want
+         * to use Camel as a proxy between different message brokers and you
+         * want to route message from one system to another.
+         * The option is a <code>boolean</code> type.
+         * @group common
+         */
+        public default AMQPEndpointBuilder disableReplyTo(boolean disableReplyTo) {
+            setProperty("disableReplyTo", disableReplyTo);
+            return this;
+        }
+        /**
+         * Specifies whether Camel ignores the JMSReplyTo header in messages. If
+         * true, Camel does not send a reply back to the destination specified
+         * in the JMSReplyTo header. You can use this option if you want Camel
+         * to consume from a route and you do not want Camel to automatically
+         * send back a reply message because another component in your code
+         * handles the reply message. You can also use this option if you want
+         * to use Camel as a proxy between different message brokers and you
+         * want to route message from one system to another.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group common
+         */
+        public default AMQPEndpointBuilder disableReplyTo(String disableReplyTo) {
+            setProperty("disableReplyTo", disableReplyTo);
+            return this;
+        }
+        /**
+         * The durable subscriber name for specifying durable topic
+         * subscriptions. The clientId option must be configured as well.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AMQPEndpointBuilder durableSubscriptionName(
+                String durableSubscriptionName) {
+            setProperty("durableSubscriptionName", durableSubscriptionName);
+            return this;
+        }
+        /**
+         * Allows you to force the use of a specific javax.jms.Message
+         * implementation for sending JMS messages. Possible values are: Bytes,
+         * Map, Object, Stream, Text. By default, Camel would determine which
+         * JMS message type to use from the In body type. This option allows you
+         * to specify it.
+         * The option is a
+         * <code>org.apache.camel.component.jms.JmsMessageType</code> type.
+         * @group common
+         */
+        public default AMQPEndpointBuilder jmsMessageType(
+                JmsMessageType jmsMessageType) {
+            setProperty("jmsMessageType", jmsMessageType);
+            return this;
+        }
+        /**
+         * Allows you to force the use of a specific javax.jms.Message
+         * implementation for sending JMS messages. Possible values are: Bytes,
+         * Map, Object, Stream, Text. By default, Camel would determine which
+         * JMS message type to use from the In body type. This option allows you
+         * to specify it.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.jms.JmsMessageType</code> type.
+         * @group common
+         */
+        public default AMQPEndpointBuilder jmsMessageType(String jmsMessageType) {
+            setProperty("jmsMessageType", jmsMessageType);
+            return this;
+        }
+        /**
+         * Specifies whether to test the connection on startup. This ensures
+         * that when Camel starts that all the JMS consumers have a valid
+         * connection to the JMS broker. If a connection cannot be granted then
+         * Camel throws an exception on startup. This ensures that Camel is not
+         * started with failed connections. The JMS producers is tested as well.
+         * The option is a <code>boolean</code> type.
+         * @group common
+         */
+        public default AMQPEndpointBuilder testConnectionOnStartup(
+                boolean testConnectionOnStartup) {
+            setProperty("testConnectionOnStartup", testConnectionOnStartup);
+            return this;
+        }
+        /**
+         * Specifies whether to test the connection on startup. This ensures
+         * that when Camel starts that all the JMS consumers have a valid
+         * connection to the JMS broker. If a connection cannot be granted then
+         * Camel throws an exception on startup. This ensures that Camel is not
+         * started with failed connections. The JMS producers is tested as well.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group common
+         */
+        public default AMQPEndpointBuilder testConnectionOnStartup(
+                String testConnectionOnStartup) {
+            setProperty("testConnectionOnStartup", testConnectionOnStartup);
+            return this;
+        }
+        /**
+         * Password to use with the ConnectionFactory. You can also configure
+         * username/password directly on the ConnectionFactory.
+         * The option is a <code>java.lang.String</code> type.
+         * @group security
+         */
+        public default AMQPEndpointBuilder password(String password) {
+            setProperty("password", password);
+            return this;
+        }
+        /**
+         * Username to use with the ConnectionFactory. You can also configure
+         * username/password directly on the ConnectionFactory.
+         * The option is a <code>java.lang.String</code> type.
+         * @group security
+         */
+        public default AMQPEndpointBuilder username(String username) {
+            setProperty("username", username);
+            return this;
+        }
+        /**
+         * Specifies whether to use transacted mode.
+         * The option is a <code>boolean</code> type.
+         * @group transaction
+         */
+        public default AMQPEndpointBuilder transacted(boolean transacted) {
+            setProperty("transacted", transacted);
+            return this;
+        }
+        /**
+         * Specifies whether to use transacted mode.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group transaction
+         */
+        public default AMQPEndpointBuilder transacted(String transacted) {
+            setProperty("transacted", transacted);
+            return this;
+        }
+    }
+
+    /**
+     * Advanced builder for endpoint for the AMQP component.
+     */
+    public static interface AdvancedAMQPEndpointBuilder
+            extends
+                AdvancedAMQPEndpointConsumerBuilder, AdvancedAMQPEndpointProducerBuilder {
+        public default AMQPEndpointBuilder basic() {
+            return (AMQPEndpointBuilder) this;
+        }
+        /**
+         * Controls whether or not to include serialized headers. Applies only
+         * when isTransferExchange() is true. This requires that the objects are
+         * serializable. Camel will exclude any non-serializable objects and log
+         * it at WARN level.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder allowSerializedHeaders(
+                boolean allowSerializedHeaders) {
+            setProperty("allowSerializedHeaders", allowSerializedHeaders);
+            return this;
+        }
+        /**
+         * Controls whether or not to include serialized headers. Applies only
+         * when isTransferExchange() is true. This requires that the objects are
+         * serializable. Camel will exclude any non-serializable objects and log
+         * it at WARN level.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder allowSerializedHeaders(
+                String allowSerializedHeaders) {
+            setProperty("allowSerializedHeaders", allowSerializedHeaders);
+            return this;
+        }
+        /**
+         * Whether to startup the JmsConsumer message listener asynchronously,
+         * when starting a route. For example if a JmsConsumer cannot get a
+         * connection to a remote JMS broker, then it may block while retrying
+         * and/or failover. This will cause Camel to block while starting
+         * routes. By setting this option to true, you will let routes startup,
+         * while the JmsConsumer connects to the JMS broker using a dedicated
+         * thread in asynchronous mode. If this option is used, then beware that
+         * if the connection could not be established, then an exception is
+         * logged at WARN level, and the consumer will not be able to receive
+         * messages; You can then restart the route to retry.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder asyncStartListener(
+                boolean asyncStartListener) {
+            setProperty("asyncStartListener", asyncStartListener);
+            return this;
+        }
+        /**
+         * Whether to startup the JmsConsumer message listener asynchronously,
+         * when starting a route. For example if a JmsConsumer cannot get a
+         * connection to a remote JMS broker, then it may block while retrying
+         * and/or failover. This will cause Camel to block while starting
+         * routes. By setting this option to true, you will let routes startup,
+         * while the JmsConsumer connects to the JMS broker using a dedicated
+         * thread in asynchronous mode. If this option is used, then beware that
+         * if the connection could not be established, then an exception is
+         * logged at WARN level, and the consumer will not be able to receive
+         * messages; You can then restart the route to retry.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder asyncStartListener(
+                String asyncStartListener) {
+            setProperty("asyncStartListener", asyncStartListener);
+            return this;
+        }
+        /**
+         * Whether to stop the JmsConsumer message listener asynchronously, when
+         * stopping a route.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder asyncStopListener(
+                boolean asyncStopListener) {
+            setProperty("asyncStopListener", asyncStopListener);
+            return this;
+        }
+        /**
+         * Whether to stop the JmsConsumer message listener asynchronously, when
+         * stopping a route.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder asyncStopListener(
+                String asyncStopListener) {
+            setProperty("asyncStopListener", asyncStopListener);
+            return this;
+        }
+        /**
+         * Whether the endpoint should use basic property binding (Camel 2.x) or
+         * the newer property binding with additional capabilities.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder basicPropertyBinding(
+                boolean basicPropertyBinding) {
+            setProperty("basicPropertyBinding", basicPropertyBinding);
+            return this;
+        }
+        /**
+         * Whether the endpoint should use basic property binding (Camel 2.x) or
+         * the newer property binding with additional capabilities.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder basicPropertyBinding(
+                String basicPropertyBinding) {
+            setProperty("basicPropertyBinding", basicPropertyBinding);
+            return this;
+        }
+        /**
+         * A pluggable
+         * org.springframework.jms.support.destination.DestinationResolver that
+         * allows you to use your own resolver (for example, to lookup the real
+         * destination in a JNDI registry).
+         * The option is a
+         * <code>org.springframework.jms.support.destination.DestinationResolver</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder destinationResolver(
+                Object destinationResolver) {
+            setProperty("destinationResolver", destinationResolver);
+            return this;
+        }
+        /**
+         * A pluggable
+         * org.springframework.jms.support.destination.DestinationResolver that
+         * allows you to use your own resolver (for example, to lookup the real
+         * destination in a JNDI registry).
+         * The option will be converted to a
+         * <code>org.springframework.jms.support.destination.DestinationResolver</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder destinationResolver(
+                String destinationResolver) {
+            setProperty("destinationResolver", destinationResolver);
+            return this;
+        }
+        /**
+         * Specifies a org.springframework.util.ErrorHandler to be invoked in
+         * case of any uncaught exceptions thrown while processing a Message. By
+         * default these exceptions will be logged at the WARN level, if no
+         * errorHandler has been configured. You can configure logging level and
+         * whether stack traces should be logged using errorHandlerLoggingLevel
+         * and errorHandlerLogStackTrace options. This makes it much easier to
+         * configure, than having to code a custom errorHandler.
+         * The option is a <code>org.springframework.util.ErrorHandler</code>
+         * type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder errorHandler(
+                Object errorHandler) {
+            setProperty("errorHandler", errorHandler);
+            return this;
+        }
+        /**
+         * Specifies a org.springframework.util.ErrorHandler to be invoked in
+         * case of any uncaught exceptions thrown while processing a Message. By
+         * default these exceptions will be logged at the WARN level, if no
+         * errorHandler has been configured. You can configure logging level and
+         * whether stack traces should be logged using errorHandlerLoggingLevel
+         * and errorHandlerLogStackTrace options. This makes it much easier to
+         * configure, than having to code a custom errorHandler.
+         * The option will be converted to a
+         * <code>org.springframework.util.ErrorHandler</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder errorHandler(
+                String errorHandler) {
+            setProperty("errorHandler", errorHandler);
+            return this;
+        }
+        /**
+         * Specifies the JMS Exception Listener that is to be notified of any
+         * underlying JMS exceptions.
+         * The option is a <code>javax.jms.ExceptionListener</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder exceptionListener(
+                Object exceptionListener) {
+            setProperty("exceptionListener", exceptionListener);
+            return this;
+        }
+        /**
+         * Specifies the JMS Exception Listener that is to be notified of any
+         * underlying JMS exceptions.
+         * The option will be converted to a
+         * <code>javax.jms.ExceptionListener</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder exceptionListener(
+                String exceptionListener) {
+            setProperty("exceptionListener", exceptionListener);
+            return this;
+        }
+        /**
+         * To use a custom HeaderFilterStrategy to filter header to and from
+         * Camel message.
+         * The option is a
+         * <code>org.apache.camel.spi.HeaderFilterStrategy</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder headerFilterStrategy(
+                HeaderFilterStrategy headerFilterStrategy) {
+            setProperty("headerFilterStrategy", headerFilterStrategy);
+            return this;
+        }
+        /**
+         * To use a custom HeaderFilterStrategy to filter header to and from
+         * Camel message.
+         * The option will be converted to a
+         * <code>org.apache.camel.spi.HeaderFilterStrategy</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder headerFilterStrategy(
+                String headerFilterStrategy) {
+            setProperty("headerFilterStrategy", headerFilterStrategy);
+            return this;
+        }
+        /**
+         * Specify the limit for the number of consumers that are allowed to be
+         * idle at any given time.
+         * The option is a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder idleConsumerLimit(
+                int idleConsumerLimit) {
+            setProperty("idleConsumerLimit", idleConsumerLimit);
+            return this;
+        }
+        /**
+         * Specify the limit for the number of consumers that are allowed to be
+         * idle at any given time.
+         * The option will be converted to a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder idleConsumerLimit(
+                String idleConsumerLimit) {
+            setProperty("idleConsumerLimit", idleConsumerLimit);
+            return this;
+        }
+        /**
+         * Specifies the limit for idle executions of a receive task, not having
+         * received any message within its execution. If this limit is reached,
+         * the task will shut down and leave receiving to other executing tasks
+         * (in the case of dynamic scheduling; see the maxConcurrentConsumers
+         * setting). There is additional doc available from Spring.
+         * The option is a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder idleTaskExecutionLimit(
+                int idleTaskExecutionLimit) {
+            setProperty("idleTaskExecutionLimit", idleTaskExecutionLimit);
+            return this;
+        }
+        /**
+         * Specifies the limit for idle executions of a receive task, not having
+         * received any message within its execution. If this limit is reached,
+         * the task will shut down and leave receiving to other executing tasks
+         * (in the case of dynamic scheduling; see the maxConcurrentConsumers
+         * setting). There is additional doc available from Spring.
+         * The option will be converted to a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder idleTaskExecutionLimit(
+                String idleTaskExecutionLimit) {
+            setProperty("idleTaskExecutionLimit", idleTaskExecutionLimit);
+            return this;
+        }
+        /**
+         * Whether to include all JMSXxxx properties when mapping from JMS to
+         * Camel Message. Setting this to true will include properties such as
+         * JMSXAppID, and JMSXUserID etc. Note: If you are using a custom
+         * headerFilterStrategy then this option does not apply.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder includeAllJMSXProperties(
+                boolean includeAllJMSXProperties) {
+            setProperty("includeAllJMSXProperties", includeAllJMSXProperties);
+            return this;
+        }
+        /**
+         * Whether to include all JMSXxxx properties when mapping from JMS to
+         * Camel Message. Setting this to true will include properties such as
+         * JMSXAppID, and JMSXUserID etc. Note: If you are using a custom
+         * headerFilterStrategy then this option does not apply.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder includeAllJMSXProperties(
+                String includeAllJMSXProperties) {
+            setProperty("includeAllJMSXProperties", includeAllJMSXProperties);
+            return this;
+        }
+        /**
+         * Pluggable strategy for encoding and decoding JMS keys so they can be
+         * compliant with the JMS specification. Camel provides two
+         * implementations out of the box: default and passthrough. The default
+         * strategy will safely marshal dots and hyphens (. and -). The
+         * passthrough strategy leaves the key as is. Can be used for JMS
+         * brokers which do not care whether JMS header keys contain illegal
+         * characters. You can provide your own implementation of the
+         * org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it
+         * using the # notation.
+         * The option is a
+         * <code>org.apache.camel.component.jms.JmsKeyFormatStrategy</code>
+         * type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder jmsKeyFormatStrategy(
+                Object jmsKeyFormatStrategy) {
+            setProperty("jmsKeyFormatStrategy", jmsKeyFormatStrategy);
+            return this;
+        }
+        /**
+         * Pluggable strategy for encoding and decoding JMS keys so they can be
+         * compliant with the JMS specification. Camel provides two
+         * implementations out of the box: default and passthrough. The default
+         * strategy will safely marshal dots and hyphens (. and -). The
+         * passthrough strategy leaves the key as is. Can be used for JMS
+         * brokers which do not care whether JMS header keys contain illegal
+         * characters. You can provide your own implementation of the
+         * org.apache.camel.component.jms.JmsKeyFormatStrategy and refer to it
+         * using the # notation.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.jms.JmsKeyFormatStrategy</code>
+         * type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder jmsKeyFormatStrategy(
+                String jmsKeyFormatStrategy) {
+            setProperty("jmsKeyFormatStrategy", jmsKeyFormatStrategy);
+            return this;
+        }
+        /**
+         * Specifies whether Camel should auto map the received JMS message to a
+         * suited payload type, such as javax.jms.TextMessage to a String etc.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder mapJmsMessage(
+                boolean mapJmsMessage) {
+            setProperty("mapJmsMessage", mapJmsMessage);
+            return this;
+        }
+        /**
+         * Specifies whether Camel should auto map the received JMS message to a
+         * suited payload type, such as javax.jms.TextMessage to a String etc.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder mapJmsMessage(
+                String mapJmsMessage) {
+            setProperty("mapJmsMessage", mapJmsMessage);
+            return this;
+        }
+        /**
+         * The number of messages per task. -1 is unlimited. If you use a range
+         * for concurrent consumers (eg min max), then this option can be used
+         * to set a value to eg 100 to control how fast the consumers will
+         * shrink when less work is required.
+         * The option is a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder maxMessagesPerTask(
+                int maxMessagesPerTask) {
+            setProperty("maxMessagesPerTask", maxMessagesPerTask);
+            return this;
+        }
+        /**
+         * The number of messages per task. -1 is unlimited. If you use a range
+         * for concurrent consumers (eg min max), then this option can be used
+         * to set a value to eg 100 to control how fast the consumers will
+         * shrink when less work is required.
+         * The option will be converted to a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder maxMessagesPerTask(
+                String maxMessagesPerTask) {
+            setProperty("maxMessagesPerTask", maxMessagesPerTask);
+            return this;
+        }
+        /**
+         * To use a custom Spring
+         * org.springframework.jms.support.converter.MessageConverter so you can
+         * be in control how to map to/from a javax.jms.Message.
+         * The option is a
+         * <code>org.springframework.jms.support.converter.MessageConverter</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder messageConverter(
+                Object messageConverter) {
+            setProperty("messageConverter", messageConverter);
+            return this;
+        }
+        /**
+         * To use a custom Spring
+         * org.springframework.jms.support.converter.MessageConverter so you can
+         * be in control how to map to/from a javax.jms.Message.
+         * The option will be converted to a
+         * <code>org.springframework.jms.support.converter.MessageConverter</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder messageConverter(
+                String messageConverter) {
+            setProperty("messageConverter", messageConverter);
+            return this;
+        }
+        /**
+         * To use the given MessageCreatedStrategy which are invoked when Camel
+         * creates new instances of javax.jms.Message objects when Camel is
+         * sending a JMS message.
+         * The option is a
+         * <code>org.apache.camel.component.jms.MessageCreatedStrategy</code>
+         * type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder messageCreatedStrategy(
+                Object messageCreatedStrategy) {
+            setProperty("messageCreatedStrategy", messageCreatedStrategy);
+            return this;
+        }
+        /**
+         * To use the given MessageCreatedStrategy which are invoked when Camel
+         * creates new instances of javax.jms.Message objects when Camel is
+         * sending a JMS message.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.jms.MessageCreatedStrategy</code>
+         * type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder messageCreatedStrategy(
+                String messageCreatedStrategy) {
+            setProperty("messageCreatedStrategy", messageCreatedStrategy);
+            return this;
+        }
+        /**
+         * When sending, specifies whether message IDs should be added. This is
+         * just an hint to the JMS Broker. If the JMS provider accepts this
+         * hint, these messages must have the message ID set to null; if the
+         * provider ignores the hint, the message ID must be set to its normal
+         * unique value.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder messageIdEnabled(
+                boolean messageIdEnabled) {
+            setProperty("messageIdEnabled", messageIdEnabled);
+            return this;
+        }
+        /**
+         * When sending, specifies whether message IDs should be added. This is
+         * just an hint to the JMS Broker. If the JMS provider accepts this
+         * hint, these messages must have the message ID set to null; if the
+         * provider ignores the hint, the message ID must be set to its normal
+         * unique value.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder messageIdEnabled(
+                String messageIdEnabled) {
+            setProperty("messageIdEnabled", messageIdEnabled);
+            return this;
+        }
+        /**
+         * Registry ID of the MessageListenerContainerFactory used to determine
+         * what
+         * org.springframework.jms.listener.AbstractMessageListenerContainer to
+         * use to consume messages. Setting this will automatically set
+         * consumerType to Custom.
+         * The option is a
+         * <code>org.apache.camel.component.jms.MessageListenerContainerFactory</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder messageListenerContainerFactory(
+                Object messageListenerContainerFactory) {
+            setProperty("messageListenerContainerFactory", messageListenerContainerFactory);
+            return this;
+        }
+        /**
+         * Registry ID of the MessageListenerContainerFactory used to determine
+         * what
+         * org.springframework.jms.listener.AbstractMessageListenerContainer to
+         * use to consume messages. Setting this will automatically set
+         * consumerType to Custom.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.jms.MessageListenerContainerFactory</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder messageListenerContainerFactory(
+                String messageListenerContainerFactory) {
+            setProperty("messageListenerContainerFactory", messageListenerContainerFactory);
+            return this;
+        }
+        /**
+         * Specifies whether timestamps should be enabled by default on sending
+         * messages. This is just an hint to the JMS Broker. If the JMS provider
+         * accepts this hint, these messages must have the timestamp set to
+         * zero; if the provider ignores the hint, the timestamp must be set to
+         * its normal value.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder messageTimestampEnabled(
+                boolean messageTimestampEnabled) {
+            setProperty("messageTimestampEnabled", messageTimestampEnabled);
+            return this;
+        }
+        /**
+         * Specifies whether timestamps should be enabled by default on sending
+         * messages. This is just an hint to the JMS Broker. If the JMS provider
+         * accepts this hint, these messages must have the timestamp set to
+         * zero; if the provider ignores the hint, the timestamp must be set to
+         * its normal value.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder messageTimestampEnabled(
+                String messageTimestampEnabled) {
+            setProperty("messageTimestampEnabled", messageTimestampEnabled);
+            return this;
+        }
+        /**
+         * Specifies whether to inhibit the delivery of messages published by
+         * its own connection.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder pubSubNoLocal(
+                boolean pubSubNoLocal) {
+            setProperty("pubSubNoLocal", pubSubNoLocal);
+            return this;
+        }
+        /**
+         * Specifies whether to inhibit the delivery of messages published by
+         * its own connection.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder pubSubNoLocal(
+                String pubSubNoLocal) {
+            setProperty("pubSubNoLocal", pubSubNoLocal);
+            return this;
+        }
+        /**
+         * The timeout for receiving messages (in milliseconds).
+         * The option is a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder receiveTimeout(
+                long receiveTimeout) {
+            setProperty("receiveTimeout", receiveTimeout);
+            return this;
+        }
+        /**
+         * The timeout for receiving messages (in milliseconds).
+         * The option will be converted to a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder receiveTimeout(
+                String receiveTimeout) {
+            setProperty("receiveTimeout", receiveTimeout);
+            return this;
+        }
+        /**
+         * Specifies the interval between recovery attempts, i.e. when a
+         * connection is being refreshed, in milliseconds. The default is 5000
+         * ms, that is, 5 seconds.
+         * The option is a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder recoveryInterval(
+                long recoveryInterval) {
+            setProperty("recoveryInterval", recoveryInterval);
+            return this;
+        }
+        /**
+         * Specifies the interval between recovery attempts, i.e. when a
+         * connection is being refreshed, in milliseconds. The default is 5000
+         * ms, that is, 5 seconds.
+         * The option will be converted to a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder recoveryInterval(
+                String recoveryInterval) {
+            setProperty("recoveryInterval", recoveryInterval);
+            return this;
+        }
+        /**
+         * Configures how often Camel should check for timed out Exchanges when
+         * doing request/reply over JMS. By default Camel checks once per
+         * second. But if you must react faster when a timeout occurs, then you
+         * can lower this interval, to check more frequently. The timeout is
+         * determined by the option requestTimeout.
+         * The option is a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder requestTimeoutCheckerInterval(
+                long requestTimeoutCheckerInterval) {
+            setProperty("requestTimeoutCheckerInterval", requestTimeoutCheckerInterval);
+            return this;
+        }
+        /**
+         * Configures how often Camel should check for timed out Exchanges when
+         * doing request/reply over JMS. By default Camel checks once per
+         * second. But if you must react faster when a timeout occurs, then you
+         * can lower this interval, to check more frequently. The timeout is
+         * determined by the option requestTimeout.
+         * The option will be converted to a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder requestTimeoutCheckerInterval(
+                String requestTimeoutCheckerInterval) {
+            setProperty("requestTimeoutCheckerInterval", requestTimeoutCheckerInterval);
+            return this;
+        }
+        /**
+         * Sets whether synchronous processing should be strictly used, or Camel
+         * is allowed to use asynchronous processing (if supported).
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder synchronous(
+                boolean synchronous) {
+            setProperty("synchronous", synchronous);
+            return this;
+        }
+        /**
+         * Sets whether synchronous processing should be strictly used, or Camel
+         * is allowed to use asynchronous processing (if supported).
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder synchronous(
+                String synchronous) {
+            setProperty("synchronous", synchronous);
+            return this;
+        }
+        /**
+         * If enabled and you are using Request Reply messaging (InOut) and an
+         * Exchange failed on the consumer side, then the caused Exception will
+         * be send back in response as a javax.jms.ObjectMessage. If the client
+         * is Camel, the returned Exception is rethrown. This allows you to use
+         * Camel JMS as a bridge in your routing - for example, using persistent
+         * queues to enable robust routing. Notice that if you also have
+         * transferExchange enabled, this option takes precedence. The caught
+         * exception is required to be serializable. The original Exception on
+         * the consumer side can be wrapped in an outer exception such as
+         * org.apache.camel.RuntimeCamelException when returned to the producer.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder transferException(
+                boolean transferException) {
+            setProperty("transferException", transferException);
+            return this;
+        }
+        /**
+         * If enabled and you are using Request Reply messaging (InOut) and an
+         * Exchange failed on the consumer side, then the caused Exception will
+         * be send back in response as a javax.jms.ObjectMessage. If the client
+         * is Camel, the returned Exception is rethrown. This allows you to use
+         * Camel JMS as a bridge in your routing - for example, using persistent
+         * queues to enable robust routing. Notice that if you also have
+         * transferExchange enabled, this option takes precedence. The caught
+         * exception is required to be serializable. The original Exception on
+         * the consumer side can be wrapped in an outer exception such as
+         * org.apache.camel.RuntimeCamelException when returned to the producer.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder transferException(
+                String transferException) {
+            setProperty("transferException", transferException);
+            return this;
+        }
+        /**
+         * You can transfer the exchange over the wire instead of just the body
+         * and headers. 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. You must enable this option on both the producer
+         * and consumer side, so Camel knows the payloads is an Exchange and not
+         * a regular payload.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder transferExchange(
+                boolean transferExchange) {
+            setProperty("transferExchange", transferExchange);
+            return this;
+        }
+        /**
+         * You can transfer the exchange over the wire instead of just the body
+         * and headers. 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. You must enable this option on both the producer
+         * and consumer side, so Camel knows the payloads is an Exchange and not
+         * a regular payload.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder transferExchange(
+                String transferExchange) {
+            setProperty("transferExchange", transferExchange);
+            return this;
+        }
+        /**
+         * If enabled and you are using Request Reply messaging (InOut) and an
+         * Exchange failed with a SOAP fault (not exception) on the consumer
+         * side, then the fault flag on org.apache.camel.Message#isFault() will
+         * be send back in the response as a JMS header with the key
+         * JmsConstants#JMS_TRANSFER_FAULT. If the client is Camel, the returned
+         * fault flag will be set on the
+         * org.apache.camel.Message#setFault(boolean). You may want to enable
+         * this when using Camel components that support faults such as SOAP
+         * based such as cxf or spring-ws.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder transferFault(
+                boolean transferFault) {
+            setProperty("transferFault", transferFault);
+            return this;
+        }
+        /**
+         * If enabled and you are using Request Reply messaging (InOut) and an
+         * Exchange failed with a SOAP fault (not exception) on the consumer
+         * side, then the fault flag on org.apache.camel.Message#isFault() will
+         * be send back in the response as a JMS header with the key
+         * JmsConstants#JMS_TRANSFER_FAULT. If the client is Camel, the returned
+         * fault flag will be set on the
+         * org.apache.camel.Message#setFault(boolean). You may want to enable
+         * this when using Camel components that support faults such as SOAP
+         * based such as cxf or spring-ws.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder transferFault(
+                String transferFault) {
+            setProperty("transferFault", transferFault);
+            return this;
+        }
+        /**
+         * Specifies whether JMSMessageID should always be used as
+         * JMSCorrelationID for InOut messages.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder useMessageIDAsCorrelationID(
+                boolean useMessageIDAsCorrelationID) {
+            setProperty("useMessageIDAsCorrelationID", useMessageIDAsCorrelationID);
+            return this;
+        }
+        /**
+         * Specifies whether JMSMessageID should always be used as
+         * JMSCorrelationID for InOut messages.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder useMessageIDAsCorrelationID(
+                String useMessageIDAsCorrelationID) {
+            setProperty("useMessageIDAsCorrelationID", useMessageIDAsCorrelationID);
+            return this;
+        }
+        /**
+         * Number of times to wait for provisional correlation id to be updated
+         * to the actual correlation id when doing request/reply over JMS and
+         * when the option useMessageIDAsCorrelationID is enabled.
+         * The option is a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder waitForProvisionCorrelationToBeUpdatedCounter(
+                int waitForProvisionCorrelationToBeUpdatedCounter) {
+            setProperty("waitForProvisionCorrelationToBeUpdatedCounter", waitForProvisionCorrelationToBeUpdatedCounter);
+            return this;
+        }
+        /**
+         * Number of times to wait for provisional correlation id to be updated
+         * to the actual correlation id when doing request/reply over JMS and
+         * when the option useMessageIDAsCorrelationID is enabled.
+         * The option will be converted to a <code>int</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder waitForProvisionCorrelationToBeUpdatedCounter(
+                String waitForProvisionCorrelationToBeUpdatedCounter) {
+            setProperty("waitForProvisionCorrelationToBeUpdatedCounter", waitForProvisionCorrelationToBeUpdatedCounter);
+            return this;
+        }
+        /**
+         * Interval in millis to sleep each time while waiting for provisional
+         * correlation id to be updated.
+         * The option is a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder waitForProvisionCorrelationToBeUpdatedThreadSleepingTime(
+                long waitForProvisionCorrelationToBeUpdatedThreadSleepingTime) {
+            setProperty("waitForProvisionCorrelationToBeUpdatedThreadSleepingTime", waitForProvisionCorrelationToBeUpdatedThreadSleepingTime);
+            return this;
+        }
+        /**
+         * Interval in millis to sleep each time while waiting for provisional
+         * correlation id to be updated.
+         * The option will be converted to a <code>long</code> type.
+         * @group advanced
+         */
+        public default AdvancedAMQPEndpointBuilder waitForProvisionCorrelationToBeUpdatedThreadSleepingTime(
+                String waitForProvisionCorrelationToBeUpdatedThreadSleepingTime) {
+            setProperty("waitForProvisionCorrelationToBeUpdatedThreadSleepingTime", waitForProvisionCorrelationToBeUpdatedThreadSleepingTime);
+            return this;
+        }
+        /**
+         * If true, Camel will create a JmsTransactionManager, if there is no
+         * transactionManager injected when option transacted=true.
+         * The option is a <code>boolean</code> type.
+         * @group transaction (advanced)
+         */
+        public default AdvancedAMQPEndpointBuilder lazyCreateTransactionManager(
+                boolean lazyCreateTransactionManager) {
+            setProperty("lazyCreateTransactionManager", lazyCreateTransactionManager);
+            return this;
+        }
+        /**
+         * If true, Camel will create a JmsTransactionManager, if there is no
+         * transactionManager injected when option transacted=true.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group transaction (advanced)
+         */
+        public default AdvancedAMQPEndpointBuilder lazyCreateTransactionManager(
+                String lazyCreateTransactionManager) {
+            setProperty("lazyCreateTransactionManager", lazyCreateTransactionManager);
+            return this;
+        }
+        /**
+         * The Spring transaction manager to use.
+         * The option is a
+         * <code>org.springframework.transaction.PlatformTransactionManager</code> type.
+         * @group transaction (advanced)
+         */
+        public default AdvancedAMQPEndpointBuilder transactionManager(
+                Object transactionManager) {
+            setProperty("transactionManager", transactionManager);
+            return this;
+        }
+        /**
+         * The Spring transaction manager to use.
+         * The option will be converted to a
+         * <code>org.springframework.transaction.PlatformTransactionManager</code> type.
+         * @group transaction (advanced)
+         */
+        public default AdvancedAMQPEndpointBuilder transactionManager(
+                String transactionManager) {
+            setProperty("transactionManager", transactionManager);
+            return this;
+        }
+        /**
+         * The name of the transaction to use.
+         * The option is a <code>java.lang.String</code> type.
+         * @group transaction (advanced)
+         */
+        public default AdvancedAMQPEndpointBuilder transactionName(
+                String transactionName) {
+            setProperty("transactionName", transactionName);
+            return this;
+        }
+        /**
+         * The timeout value of the transaction (in seconds), if using
+         * transacted mode.
+         * The option is a <code>int</code> type.
+         * @group transaction (advanced)
+         */
+        public default AdvancedAMQPEndpointBuilder transactionTimeout(
+                int transactionTimeout) {
+            setProperty("transactionTimeout", transactionTimeout);
+            return this;
+        }
+        /**
+         * The timeout value of the transaction (in seconds), if using
+         * transacted mode.
+         * The option will be converted to a <code>int</code> type.
+         * @group transaction (advanced)
+         */
+        public default AdvancedAMQPEndpointBuilder transactionTimeout(
+                String transactionTimeout) {
+            setProperty("transactionTimeout", transactionTimeout);
+            return this;
+        }
+    }
+
+    /**
+     * Proxy enum for <code>org.apache.camel.component.jms.JmsMessageType</code>
+     * enum.
+     */
+    public static enum JmsMessageType {
+        Bytes, Map, Object, Stream, Text, Blob;
+    }
+
+    /**
+     * Proxy enum for <code>org.apache.camel.component.jms.ConsumerType</code>
+     * enum.
+     */
+    public static enum ConsumerType {
+        Simple, Default, Custom;
+    }
+
+    /**
+     * Proxy enum for
+     * <code>org.apache.camel.component.jms.DefaultTaskExecutorType</code> enum.
+     */
+    public static enum DefaultTaskExecutorType {
+        ThreadPool, SimpleAsync;
+    }
+
+    /**
+     * Proxy enum for <code>org.apache.camel.component.jms.ReplyToType</code>
+     * enum.
+     */
+    public static enum ReplyToType {
+        Temporary, Shared, Exclusive;
+    }
+    /**
+     * Messaging with AMQP protocol using Apache QPid Client. Creates a builder
+     * to build endpoints for the AMQP component.
+     */
+    public default AMQPEndpointBuilder aMQP(String path) {
+        class AMQPEndpointBuilderImpl extends AbstractEndpointBuilder implements AMQPEndpointBuilder, AdvancedAMQPEndpointBuilder {
+            public AMQPEndpointBuilderImpl(String path) {
+                super("amqp", path);
+            }
+        }
+        return new AMQPEndpointBuilderImpl(path);
+    }
+}
\ No newline at end of file
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/endpoint/AS2EndpointBuilder.java b/core/camel-core/src/main/java/org/apache/camel/model/endpoint/AS2EndpointBuilder.java
deleted file mode 100644
index 5064a0c..0000000
--- a/core/camel-core/src/main/java/org/apache/camel/model/endpoint/AS2EndpointBuilder.java
+++ /dev/null
@@ -1,668 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.model.endpoint;
-
-import java.security.PrivateKey;
-import java.security.cert.Certificate;
-import javax.annotation.Generated;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.model.AbstractEndpointBuilder;
-import org.apache.camel.model.EndpointConsumerBuilder;
-import org.apache.camel.model.EndpointProducerBuilder;
-import org.apache.camel.spi.ExceptionHandler;
-
-/**
- * Component used for transferring data secure and reliable over the internet
- * using the AS2 protocol.
- * 
- * Generated by camel-package-maven-plugin - do not edit this file!
- */
-@Generated("org.apache.camel.maven.packaging.EndpointDslMojo")
-public interface AS2EndpointBuilder {
-
-
-    /**
-     * Base class for the AS2 component builders.
-     */
-    public static class AS2CommonBuilder<T extends AbstractEndpointBuilder>
-            extends
-                AbstractEndpointBuilder<T> {
-        AS2CommonBuilder(String path) {
-            super("as2", path);
-        }
-        /**
-         * What kind of operation to perform.
-         * The option is a
-         * <code>org.apache.camel.component.as2.internal.AS2ApiName</code> type.
-         * @group common
-         */
-        public T apiName(AS2ApiName apiName) {
-            this.properties.put("apiName", apiName);
-            return (T) this;
-        }
-        /**
-         * What kind of operation to perform.
-         * The option will be converted to a
-         * <code>org.apache.camel.component.as2.internal.AS2ApiName</code> type.
-         * @group common
-         */
-        public T apiName(String apiName) {
-            this.properties.put("apiName", apiName);
-            return (T) this;
-        }
-        /**
-         * What sub operation to use for the selected operation.
-         * The option is a <code>java.lang.String</code> type.
-         * @group common
-         */
-        public T methodName(String methodName) {
-            this.properties.put("methodName", methodName);
-            return (T) this;
-        }
-        /**
-         * The value of the AS2From header of AS2 message.
-         * The option is a <code>java.lang.String</code> type.
-         * @group common
-         */
-        public T as2From(String as2From) {
-            this.properties.put("as2From", as2From);
-            return (T) this;
-        }
-        /**
-         * The structure of AS2 Message. One of: PLAIN - No encryption, no
-         * signature, SIGNED - No encryption, signature, ENCRYPTED - Encryption,
-         * no signature, ENCRYPTED_SIGNED - Encryption, signature.
-         * The option is a
-         * <code>org.apache.camel.component.as2.api.AS2MessageStructure</code>
-         * type.
-         * @group common
-         */
-        public T as2MessageStructure(AS2MessageStructure as2MessageStructure) {
-            this.properties.put("as2MessageStructure", as2MessageStructure);
-            return (T) this;
-        }
-        /**
-         * The structure of AS2 Message. One of: PLAIN - No encryption, no
-         * signature, SIGNED - No encryption, signature, ENCRYPTED - Encryption,
-         * no signature, ENCRYPTED_SIGNED - Encryption, signature.
-         * The option will be converted to a
-         * <code>org.apache.camel.component.as2.api.AS2MessageStructure</code>
-         * type.
-         * @group common
-         */
-        public T as2MessageStructure(String as2MessageStructure) {
-            this.properties.put("as2MessageStructure", as2MessageStructure);
-            return (T) this;
-        }
-        /**
-         * The value of the AS2To header of AS2 message.
-         * The option is a <code>java.lang.String</code> type.
-         * @group common
-         */
-        public T as2To(String as2To) {
-            this.properties.put("as2To", as2To);
-            return (T) this;
-        }
-        /**
-         * The version of the AS2 protocol.
-         * The option is a <code>java.lang.String</code> type.
-         * @group common
-         */
-        public T as2Version(String as2Version) {
-            this.properties.put("as2Version", as2Version);
-            return (T) this;
-        }
-        /**
-         * The Client Fully Qualified Domain Name (FQDN). Used in message ids
-         * sent by endpoint.
-         * The option is a <code>java.lang.String</code> type.
-         * @group common
-         */
-        public T clientFqdn(String clientFqdn) {
-            this.properties.put("clientFqdn", clientFqdn);
-            return (T) this;
-        }
-        /**
-         * The algorithm used to compress EDI message.
-         * The option is a
-         * <code>org.apache.camel.component.as2.api.AS2CompressionAlgorithm</code> type.
-         * @group common
-         */
-        public T compressionAlgorithm(
-                AS2CompressionAlgorithm compressionAlgorithm) {
-            this.properties.put("compressionAlgorithm", compressionAlgorithm);
-            return (T) this;
-        }
-        /**
-         * The algorithm used to compress EDI message.
-         * The option will be converted to a
-         * <code>org.apache.camel.component.as2.api.AS2CompressionAlgorithm</code> type.
-         * @group common
-         */
-        public T compressionAlgorithm(String compressionAlgorithm) {
-            this.properties.put("compressionAlgorithm", compressionAlgorithm);
-            return (T) this;
-        }
-        /**
-         * The key used to encrypt the EDI message.
-         * The option is a <code>java.security.PrivateKey</code> type.
-         * @group common
-         */
-        public T decryptingPrivateKey(PrivateKey decryptingPrivateKey) {
-            this.properties.put("decryptingPrivateKey", decryptingPrivateKey);
-            return (T) this;
-        }
-        /**
-         * The key used to encrypt the EDI message.
-         * The option will be converted to a
-         * <code>java.security.PrivateKey</code> type.
-         * @group common
-         */
-        public T decryptingPrivateKey(String decryptingPrivateKey) {
-            this.properties.put("decryptingPrivateKey", decryptingPrivateKey);
-            return (T) this;
-        }
-        /**
-         * The value of the Disposition-Notification-To header. Assigning a
-         * value to this parameter requests a message disposition notification
-         * (MDN) for the AS2 message.
-         * The option is a <code>java.lang.String</code> type.
-         * @group common
-         */
-        public T dispositionNotificationTo(String dispositionNotificationTo) {
-            this.properties.put("dispositionNotificationTo", dispositionNotificationTo);
-            return (T) this;
-        }
-        /**
-         * The transfer encoding of EDI message.
-         * The option is a <code>java.lang.String</code> type.
-         * @group common
-         */
-        public T ediMessageTransferEncoding(String ediMessageTransferEncoding) {
-            this.properties.put("ediMessageTransferEncoding", ediMessageTransferEncoding);
-            return (T) this;
-        }
-        /**
-         * The content type of EDI message. One of application/edifact,
-         * application/edi-x12, application/edi-consent.
-         * The option is a <code>org.apache.http.entity.ContentType</code> type.
-         * @group common
-         */
-        public T ediMessageType(Object ediMessageType) {
-            this.properties.put("ediMessageType", ediMessageType);
-            return (T) this;
-        }
-        /**
-         * The content type of EDI message. One of application/edifact,
-         * application/edi-x12, application/edi-consent.
-         * The option will be converted to a
-         * <code>org.apache.http.entity.ContentType</code> type.
-         * @group common
-         */
-        public T ediMessageType(String ediMessageType) {
-            this.properties.put("ediMessageType", ediMessageType);
-            return (T) this;
-        }
-        /**
-         * The algorithm used to encrypt EDI message.
-         * The option is a
-         * <code>org.apache.camel.component.as2.api.AS2EncryptionAlgorithm</code> type.
-         * @group common
-         */
-        public T encryptingAlgorithm(AS2EncryptionAlgorithm encryptingAlgorithm) {
-            this.properties.put("encryptingAlgorithm", encryptingAlgorithm);
-            return (T) this;
-        }
-        /**
-         * The algorithm used to encrypt EDI message.
-         * The option will be converted to a
-         * <code>org.apache.camel.component.as2.api.AS2EncryptionAlgorithm</code> type.
-         * @group common
-         */
-        public T encryptingAlgorithm(String encryptingAlgorithm) {
-            this.properties.put("encryptingAlgorithm", encryptingAlgorithm);
-            return (T) this;
-        }
-        /**
-         * The chain of certificates used to encrypt EDI message.
-         * The option is a <code>java.security.cert.Certificate[]</code> type.
-         * @group common
-         */
-        public T encryptingCertificateChain(
-                Certificate[] encryptingCertificateChain) {
-            this.properties.put("encryptingCertificateChain", encryptingCertificateChain);
-            return (T) this;
-        }
-        /**
-         * The chain of certificates used to encrypt EDI message.
-         * The option will be converted to a
-         * <code>java.security.cert.Certificate[]</code> type.
-         * @group common
-         */
-        public T encryptingCertificateChain(String encryptingCertificateChain) {
-            this.properties.put("encryptingCertificateChain", encryptingCertificateChain);
-            return (T) this;
-        }
-        /**
-         * The value of the From header of AS2 message.
-         * The option is a <code>java.lang.String</code> type.
-         * @group common
-         */
-        public T from(String from) {
-            this.properties.put("from", from);
-            return (T) this;
-        }
-        /**
-         * Sets the name of a parameter to be passed in the exchange In Body.
-         * The option is a <code>java.lang.String</code> type.
-         * @group common
-         */
-        public T inBody(String inBody) {
-            this.properties.put("inBody", inBody);
-            return (T) this;
-        }
-        /**
-         * The template used to format MDN message.
-         * The option is a <code>java.lang.String</code> type.
-         * @group common
-         */
-        public T mdnMessageTemplate(String mdnMessageTemplate) {
-            this.properties.put("mdnMessageTemplate", mdnMessageTemplate);
-            return (T) this;
-        }
-        /**
-         * The request URI of EDI message.
-         * The option is a <code>java.lang.String</code> type.
-         * @group common
-         */
-        public T requestUri(String requestUri) {
-            this.properties.put("requestUri", requestUri);
-            return (T) this;
-        }
-        /**
-         * The value included in the Server message header identifying the AS2
-         * Server.
-         * The option is a <code>java.lang.String</code> type.
-         * @group common
-         */
-        public T server(String server) {
-            this.properties.put("server", server);
-            return (T) this;
-        }
-        /**
-         * The Server Fully Qualified Domain Name (FQDN). Used in message ids
-         * sent by endpoint.
-         * The option is a <code>java.lang.String</code> type.
-         * @group common
-         */
-        public T serverFqdn(String serverFqdn) {
-            this.properties.put("serverFqdn", serverFqdn);
-            return (T) this;
-        }
-        /**
-         * The port number of server.
-         * The option is a <code>java.lang.Integer</code> type.
-         * @group common
-         */
-        public T serverPortNumber(Integer serverPortNumber) {
-            this.properties.put("serverPortNumber", serverPortNumber);
-            return (T) this;
-        }
-        /**
-         * The port number of server.
-         * The option will be converted to a <code>java.lang.Integer</code>
-         * type.
-         * @group common
-         */
-        public T serverPortNumber(String serverPortNumber) {
-            this.properties.put("serverPortNumber", serverPortNumber);
-            return (T) this;
-        }
-        /**
-         * The list of algorithms, in order of preference, requested to generate
-         * a message integrity check (MIC) returned in message dispostion
-         * notification (MDN).
-         * The option is a <code>java.lang.String[]</code> type.
-         * @group common
-         */
-        public T signedReceiptMicAlgorithms(String[] signedReceiptMicAlgorithms) {
-            this.properties.put("signedReceiptMicAlgorithms", signedReceiptMicAlgorithms);
-            return (T) this;
-        }
-        /**
-         * The list of algorithms, in order of preference, requested to generate
-         * a message integrity check (MIC) returned in message dispostion
-         * notification (MDN).
-         * The option will be converted to a <code>java.lang.String[]</code>
-         * type.
-         * @group common
-         */
-        public T signedReceiptMicAlgorithms(String signedReceiptMicAlgorithms) {
-            this.properties.put("signedReceiptMicAlgorithms", signedReceiptMicAlgorithms);
-            return (T) this;
-        }
-        /**
-         * The algorithm used to sign EDI message.
-         * The option is a
-         * <code>org.apache.camel.component.as2.api.AS2SignatureAlgorithm</code>
-         * type.
-         * @group common
-         */
-        public T signingAlgorithm(AS2SignatureAlgorithm signingAlgorithm) {
-            this.properties.put("signingAlgorithm", signingAlgorithm);
-            return (T) this;
-        }
-        /**
-         * The algorithm used to sign EDI message.
-         * The option will be converted to a
-         * <code>org.apache.camel.component.as2.api.AS2SignatureAlgorithm</code>
-         * type.
-         * @group common
-         */
-        public T signingAlgorithm(String signingAlgorithm) {
-            this.properties.put("signingAlgorithm", signingAlgorithm);
-            return (T) this;
-        }
-        /**
-         * The chain of certificates used to sign EDI message.
-         * The option is a <code>java.security.cert.Certificate[]</code> type.
-         * @group common
-         */
-        public T signingCertificateChain(Certificate[] signingCertificateChain) {
-            this.properties.put("signingCertificateChain", signingCertificateChain);
-            return (T) this;
-        }
-        /**
-         * The chain of certificates used to sign EDI message.
-         * The option will be converted to a
-         * <code>java.security.cert.Certificate[]</code> type.
-         * @group common
-         */
-        public T signingCertificateChain(String signingCertificateChain) {
-            this.properties.put("signingCertificateChain", signingCertificateChain);
-            return (T) this;
-        }
-        /**
-         * The key used to sign the EDI message.
-         * The option is a <code>java.security.PrivateKey</code> type.
-         * @group common
-         */
-        public T signingPrivateKey(PrivateKey signingPrivateKey) {
-            this.properties.put("signingPrivateKey", signingPrivateKey);
-            return (T) this;
-        }
-        /**
-         * The key used to sign the EDI message.
-         * The option will be converted to a
-         * <code>java.security.PrivateKey</code> type.
-         * @group common
-         */
-        public T signingPrivateKey(String signingPrivateKey) {
-            this.properties.put("signingPrivateKey", signingPrivateKey);
-            return (T) this;
-        }
-        /**
-         * The value of Subject header of AS2 message.
-         * The option is a <code>java.lang.String</code> type.
-         * @group common
-         */
-        public T subject(String subject) {
-            this.properties.put("subject", subject);
-            return (T) this;
-        }
-        /**
-         * The host name (IP or DNS name) of target host.
-         * The option is a <code>java.lang.String</code> type.
-         * @group common
-         */
-        public T targetHostname(String targetHostname) {
-            this.properties.put("targetHostname", targetHostname);
-            return (T) this;
-        }
-        /**
-         * The port number of target host. -1 indicates the scheme default port.
-         * The option is a <code>java.lang.Integer</code> type.
-         * @group common
-         */
-        public T targetPortNumber(Integer targetPortNumber) {
-            this.properties.put("targetPortNumber", targetPortNumber);
-            return (T) this;
-        }
-        /**
-         * The port number of target host. -1 indicates the scheme default port.
-         * The option will be converted to a <code>java.lang.Integer</code>
-         * type.
-         * @group common
-         */
-        public T targetPortNumber(String targetPortNumber) {
-            this.properties.put("targetPortNumber", targetPortNumber);
-            return (T) this;
-        }
-        /**
-         * The value included in the User-Agent message header identifying the
-         * AS2 user agent.
-         * The option is a <code>java.lang.String</code> type.
-         * @group common
-         */
-        public T userAgent(String userAgent) {
-            this.properties.put("userAgent", userAgent);
-            return (T) this;
-        }
-        /**
-         * Whether the endpoint should use basic property binding (Camel 2.x) or
-         * the newer property binding with additional capabilities.
-         * The option is a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T basicPropertyBinding(boolean basicPropertyBinding) {
-            this.properties.put("basicPropertyBinding", basicPropertyBinding);
-            return (T) this;
-        }
-        /**
-         * Whether the endpoint should use basic property binding (Camel 2.x) or
-         * the newer property binding with additional capabilities.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T basicPropertyBinding(String basicPropertyBinding) {
-            this.properties.put("basicPropertyBinding", basicPropertyBinding);
-            return (T) this;
-        }
-        /**
-         * Sets whether synchronous processing should be strictly used, or Camel
-         * is allowed to use asynchronous processing (if supported).
-         * The option is a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T synchronous(boolean synchronous) {
-            this.properties.put("synchronous", synchronous);
-            return (T) this;
-        }
-        /**
-         * Sets whether synchronous processing should be strictly used, or Camel
-         * is allowed to use asynchronous processing (if supported).
-         * The option will be converted to a <code>boolean</code> type.
-         * @group advanced
-         */
-        public T synchronous(String synchronous) {
-            this.properties.put("synchronous", synchronous);
-            return (T) this;
-        }
-    }
-
-    /**
-     * Builder for endpoint consumers for the AS2 component.
-     */
-    public static class AS2ConsumerBuilder
-            extends
-                AS2CommonBuilder<AS2ConsumerBuilder>
-            implements
-                EndpointConsumerBuilder {
-        public AS2ConsumerBuilder(String path) {
-            super(path);
-        }
-        /**
-         * Allows for bridging the consumer to the Camel routing Error Handler,
-         * which mean any exceptions occurred while the consumer is trying to
-         * pickup incoming messages, or the likes, will now be processed as a
-         * message and handled by the routing Error Handler. By default the
-         * consumer will use the org.apache.camel.spi.ExceptionHandler to deal
-         * with exceptions, that will be logged at WARN or ERROR level and
-         * ignored.
-         * The option is a <code>boolean</code> type.
-         * @group consumer
-         */
-        public AS2ConsumerBuilder bridgeErrorHandler(boolean bridgeErrorHandler) {
-            this.properties.put("bridgeErrorHandler", bridgeErrorHandler);
-            return (AS2ConsumerBuilder) this;
-        }
-        /**
-         * Allows for bridging the consumer to the Camel routing Error Handler,
-         * which mean any exceptions occurred while the consumer is trying to
-         * pickup incoming messages, or the likes, will now be processed as a
-         * message and handled by the routing Error Handler. By default the
-         * consumer will use the org.apache.camel.spi.ExceptionHandler to deal
-         * with exceptions, that will be logged at WARN or ERROR level and
-         * ignored.
-         * The option will be converted to a <code>boolean</code> type.
-         * @group consumer
-         */
-        public AS2ConsumerBuilder bridgeErrorHandler(String bridgeErrorHandler) {
-            this.properties.put("bridgeErrorHandler", bridgeErrorHandler);
-            return (AS2ConsumerBuilder) this;
-        }
-        /**
-         * 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.
-         * The option is a <code>org.apache.camel.spi.ExceptionHandler</code>
-         * type.
-         * @group consumer (advanced)
-         */
-        public AS2ConsumerBuilder exceptionHandler(
-                ExceptionHandler exceptionHandler) {
-            this.properties.put("exceptionHandler", exceptionHandler);
-            return (AS2ConsumerBuilder) this;
-        }
-        /**
-         * 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.
-         * The option will be converted to a
-         * <code>org.apache.camel.spi.ExceptionHandler</code> type.
-         * @group consumer (advanced)
-         */
-        public AS2ConsumerBuilder exceptionHandler(String exceptionHandler) {
-            this.properties.put("exceptionHandler", exceptionHandler);
-            return (AS2ConsumerBuilder) this;
-        }
-        /**
-         * Sets the exchange pattern when the consumer creates an exchange.
-         * The option is a <code>org.apache.camel.ExchangePattern</code> type.
-         * @group consumer (advanced)
-         */
-        public AS2ConsumerBuilder exchangePattern(
-                ExchangePattern exchangePattern) {
-            this.properties.put("exchangePattern", exchangePattern);
-            return (AS2ConsumerBuilder) this;
-        }
-        /**
-         * Sets the exchange pattern when the consumer creates an exchange.
-         * The option will be converted to a
-         * <code>org.apache.camel.ExchangePattern</code> type.
-         * @group consumer (advanced)
-         */
-        public AS2ConsumerBuilder exchangePattern(String exchangePattern) {
-            this.properties.put("exchangePattern", exchangePattern);
-            return (AS2ConsumerBuilder) this;
-        }
-    }
-
-    /**
-     * Builder for endpoint producers for the AS2 component.
-     */
-    public static class AS2ProducerBuilder
-            extends
-                AS2CommonBuilder<AS2ProducerBuilder>
-            implements
-                EndpointProducerBuilder {
-        public AS2ProducerBuilder(String path) {
-            super(path);
-        }
-    }
-
-    /**
-     * Proxy enum for
-     * <code>org.apache.camel.component.as2.internal.AS2ApiName</code> enum.
-     */
-    public static enum AS2ApiName {
-        CLIENT, SERVER;
-    }
-
-    /**
-     * Proxy enum for
-     * <code>org.apache.camel.component.as2.api.AS2MessageStructure</code> enum.
-     */
-    public static enum AS2MessageStructure {
-        PLAIN, SIGNED, ENCRYPTED, SIGNED_ENCRYPTED, PLAIN_COMPRESSED, SIGNED_COMPRESSED, ENCRYPTED_COMPRESSED, ENCRYPTED_COMPRESSED_SIGNED;
-    }
-
-    /**
-     * Proxy enum for
-     * <code>org.apache.camel.component.as2.api.AS2CompressionAlgorithm</code>
-     * enum.
-     */
-    public static enum AS2CompressionAlgorithm {
-        ZLIB;
-    }
-
-    /**
-     * Proxy enum for
-     * <code>org.apache.camel.component.as2.api.AS2EncryptionAlgorithm</code>
-     * enum.
-     */
-    public static enum AS2EncryptionAlgorithm {
-        AES128_CBC, AES192_CBC, AES256_CBC, AES128_CCM, AES192_CCM, AES256_CCM, AES128_GCM, AES192_GCM, AES256_GCM, CAMELLIA128_CBC, CAMELLIA192_CBC, CAMELLIA256_CBC, CAST5_CBC, DES_CBC, DES_EDE3_CBC, GOST28147_GCFB, IDEA_CBC, RC2_CBC, RC4, SEED_CBC;
-    }
-
-    /**
-     * Proxy enum for
-     * <code>org.apache.camel.component.as2.api.AS2SignatureAlgorithm</code>
-     * enum.
-     */
-    public static enum AS2SignatureAlgorithm {
-        SHA3_224WITHRSA, SHA3_256WITHRSA, SHA3_384withRSA, SHA3_512WITHRSA, MD5WITHRSA, SHA1WITHRSA, MD2WITHRSA, SHA224WITHRSA, SHA256WITHRSA, SHA384WITHRSA, SHA512WITHRSA, RIPEMD128WITHRSA, RIPEMD160WITHRSA, RIPEMD256WITHRSA, SHA224WITHDSA, SHA256WITHDSA, SHA384WITHDSA, SHA512WITHDSA, SHA3_224WITHDSA, SHA3_256WITHDSA, SHA3_384WITHDSA, SHA3_512WITHDSA, SHA1WITHDSA, SHA3_224WITHECDSA, SHA3_256WITHECDSA, SHA3_384WITHECDSA, SHA3_512WITHECDSA, SHA1WITHECDSA, SHA224WITHECDSA, SHA256WITHECDSA, [...]
-    }
-    /**
-     * Component used for transferring data secure and reliable over the
-     * internet using the AS2 protocol. Creates a builder to build a consumer
-     * endpoint for the AS2 component.
-     */
-    public default AS2ConsumerBuilder fromAS2(String path) {
-        return new AS2ConsumerBuilder(path);
-    }
-    /**
-     * Component used for transferring data secure and reliable over the
-     * internet using the AS2 protocol. Creates a builder to build a producer
-     * endpoint for the AS2 component.
-     */
-    public default AS2ProducerBuilder toAS2(String path) {
-        return new AS2ProducerBuilder(path);
-    }
-}
\ No newline at end of file
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/endpoint/AS2EndpointBuilderFactory.java b/core/camel-core/src/main/java/org/apache/camel/model/endpoint/AS2EndpointBuilderFactory.java
new file mode 100644
index 0000000..5c452af
--- /dev/null
+++ b/core/camel-core/src/main/java/org/apache/camel/model/endpoint/AS2EndpointBuilderFactory.java
@@ -0,0 +1,1700 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.model.endpoint;
+
+import java.security.PrivateKey;
+import java.security.cert.Certificate;
+import javax.annotation.Generated;
+import org.apache.camel.ExchangePattern;
+import org.apache.camel.model.AbstractEndpointBuilder;
+import org.apache.camel.model.EndpointConsumerBuilder;
+import org.apache.camel.model.EndpointProducerBuilder;
+import org.apache.camel.spi.ExceptionHandler;
+
+/**
+ * Component used for transferring data secure and reliable over the internet
+ * using the AS2 protocol.
+ * 
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.EndpointDslMojo")
+public interface AS2EndpointBuilderFactory {
+
+
+    /**
+     * Builder for endpoint consumers for the AS2 component.
+     */
+    public interface AS2EndpointConsumerBuilder
+            extends
+                EndpointConsumerBuilder {
+        public default AdvancedAS2EndpointConsumerBuilder advanced() {
+            return (AdvancedAS2EndpointConsumerBuilder) this;
+        }
+        /**
+         * What kind of operation to perform.
+         * The option is a
+         * <code>org.apache.camel.component.as2.internal.AS2ApiName</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder apiName(AS2ApiName apiName) {
+            setProperty("apiName", apiName);
+            return this;
+        }
+        /**
+         * What kind of operation to perform.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.as2.internal.AS2ApiName</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder apiName(String apiName) {
+            setProperty("apiName", apiName);
+            return this;
+        }
+        /**
+         * What sub operation to use for the selected operation.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder methodName(String methodName) {
+            setProperty("methodName", methodName);
+            return this;
+        }
+        /**
+         * The value of the AS2From header of AS2 message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder as2From(String as2From) {
+            setProperty("as2From", as2From);
+            return this;
+        }
+        /**
+         * The structure of AS2 Message. One of: PLAIN - No encryption, no
+         * signature, SIGNED - No encryption, signature, ENCRYPTED - Encryption,
+         * no signature, ENCRYPTED_SIGNED - Encryption, signature.
+         * The option is a
+         * <code>org.apache.camel.component.as2.api.AS2MessageStructure</code>
+         * type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder as2MessageStructure(
+                AS2MessageStructure as2MessageStructure) {
+            setProperty("as2MessageStructure", as2MessageStructure);
+            return this;
+        }
+        /**
+         * The structure of AS2 Message. One of: PLAIN - No encryption, no
+         * signature, SIGNED - No encryption, signature, ENCRYPTED - Encryption,
+         * no signature, ENCRYPTED_SIGNED - Encryption, signature.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.as2.api.AS2MessageStructure</code>
+         * type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder as2MessageStructure(
+                String as2MessageStructure) {
+            setProperty("as2MessageStructure", as2MessageStructure);
+            return this;
+        }
+        /**
+         * The value of the AS2To header of AS2 message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder as2To(String as2To) {
+            setProperty("as2To", as2To);
+            return this;
+        }
+        /**
+         * The version of the AS2 protocol.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder as2Version(String as2Version) {
+            setProperty("as2Version", as2Version);
+            return this;
+        }
+        /**
+         * The Client Fully Qualified Domain Name (FQDN). Used in message ids
+         * sent by endpoint.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder clientFqdn(String clientFqdn) {
+            setProperty("clientFqdn", clientFqdn);
+            return this;
+        }
+        /**
+         * The algorithm used to compress EDI message.
+         * The option is a
+         * <code>org.apache.camel.component.as2.api.AS2CompressionAlgorithm</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder compressionAlgorithm(
+                AS2CompressionAlgorithm compressionAlgorithm) {
+            setProperty("compressionAlgorithm", compressionAlgorithm);
+            return this;
+        }
+        /**
+         * The algorithm used to compress EDI message.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.as2.api.AS2CompressionAlgorithm</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder compressionAlgorithm(
+                String compressionAlgorithm) {
+            setProperty("compressionAlgorithm", compressionAlgorithm);
+            return this;
+        }
+        /**
+         * The key used to encrypt the EDI message.
+         * The option is a <code>java.security.PrivateKey</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder decryptingPrivateKey(
+                PrivateKey decryptingPrivateKey) {
+            setProperty("decryptingPrivateKey", decryptingPrivateKey);
+            return this;
+        }
+        /**
+         * The key used to encrypt the EDI message.
+         * The option will be converted to a
+         * <code>java.security.PrivateKey</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder decryptingPrivateKey(
+                String decryptingPrivateKey) {
+            setProperty("decryptingPrivateKey", decryptingPrivateKey);
+            return this;
+        }
+        /**
+         * The value of the Disposition-Notification-To header. Assigning a
+         * value to this parameter requests a message disposition notification
+         * (MDN) for the AS2 message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder dispositionNotificationTo(
+                String dispositionNotificationTo) {
+            setProperty("dispositionNotificationTo", dispositionNotificationTo);
+            return this;
+        }
+        /**
+         * The transfer encoding of EDI message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder ediMessageTransferEncoding(
+                String ediMessageTransferEncoding) {
+            setProperty("ediMessageTransferEncoding", ediMessageTransferEncoding);
+            return this;
+        }
+        /**
+         * The content type of EDI message. One of application/edifact,
+         * application/edi-x12, application/edi-consent.
+         * The option is a <code>org.apache.http.entity.ContentType</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder ediMessageType(
+                Object ediMessageType) {
+            setProperty("ediMessageType", ediMessageType);
+            return this;
+        }
+        /**
+         * The content type of EDI message. One of application/edifact,
+         * application/edi-x12, application/edi-consent.
+         * The option will be converted to a
+         * <code>org.apache.http.entity.ContentType</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder ediMessageType(
+                String ediMessageType) {
+            setProperty("ediMessageType", ediMessageType);
+            return this;
+        }
+        /**
+         * The algorithm used to encrypt EDI message.
+         * The option is a
+         * <code>org.apache.camel.component.as2.api.AS2EncryptionAlgorithm</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder encryptingAlgorithm(
+                AS2EncryptionAlgorithm encryptingAlgorithm) {
+            setProperty("encryptingAlgorithm", encryptingAlgorithm);
+            return this;
+        }
+        /**
+         * The algorithm used to encrypt EDI message.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.as2.api.AS2EncryptionAlgorithm</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder encryptingAlgorithm(
+                String encryptingAlgorithm) {
+            setProperty("encryptingAlgorithm", encryptingAlgorithm);
+            return this;
+        }
+        /**
+         * The chain of certificates used to encrypt EDI message.
+         * The option is a <code>java.security.cert.Certificate[]</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder encryptingCertificateChain(
+                Certificate[] encryptingCertificateChain) {
+            setProperty("encryptingCertificateChain", encryptingCertificateChain);
+            return this;
+        }
+        /**
+         * The chain of certificates used to encrypt EDI message.
+         * The option will be converted to a
+         * <code>java.security.cert.Certificate[]</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder encryptingCertificateChain(
+                String encryptingCertificateChain) {
+            setProperty("encryptingCertificateChain", encryptingCertificateChain);
+            return this;
+        }
+        /**
+         * The value of the From header of AS2 message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder from(String from) {
+            setProperty("from", from);
+            return this;
+        }
+        /**
+         * Sets the name of a parameter to be passed in the exchange In Body.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder inBody(String inBody) {
+            setProperty("inBody", inBody);
+            return this;
+        }
+        /**
+         * The template used to format MDN message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder mdnMessageTemplate(
+                String mdnMessageTemplate) {
+            setProperty("mdnMessageTemplate", mdnMessageTemplate);
+            return this;
+        }
+        /**
+         * The request URI of EDI message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder requestUri(String requestUri) {
+            setProperty("requestUri", requestUri);
+            return this;
+        }
+        /**
+         * The value included in the Server message header identifying the AS2
+         * Server.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder server(String server) {
+            setProperty("server", server);
+            return this;
+        }
+        /**
+         * The Server Fully Qualified Domain Name (FQDN). Used in message ids
+         * sent by endpoint.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder serverFqdn(String serverFqdn) {
+            setProperty("serverFqdn", serverFqdn);
+            return this;
+        }
+        /**
+         * The port number of server.
+         * The option is a <code>java.lang.Integer</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder serverPortNumber(
+                Integer serverPortNumber) {
+            setProperty("serverPortNumber", serverPortNumber);
+            return this;
+        }
+        /**
+         * The port number of server.
+         * The option will be converted to a <code>java.lang.Integer</code>
+         * type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder serverPortNumber(
+                String serverPortNumber) {
+            setProperty("serverPortNumber", serverPortNumber);
+            return this;
+        }
+        /**
+         * The list of algorithms, in order of preference, requested to generate
+         * a message integrity check (MIC) returned in message dispostion
+         * notification (MDN).
+         * The option is a <code>java.lang.String[]</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder signedReceiptMicAlgorithms(
+                String[] signedReceiptMicAlgorithms) {
+            setProperty("signedReceiptMicAlgorithms", signedReceiptMicAlgorithms);
+            return this;
+        }
+        /**
+         * The list of algorithms, in order of preference, requested to generate
+         * a message integrity check (MIC) returned in message dispostion
+         * notification (MDN).
+         * The option will be converted to a <code>java.lang.String[]</code>
+         * type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder signedReceiptMicAlgorithms(
+                String signedReceiptMicAlgorithms) {
+            setProperty("signedReceiptMicAlgorithms", signedReceiptMicAlgorithms);
+            return this;
+        }
+        /**
+         * The algorithm used to sign EDI message.
+         * The option is a
+         * <code>org.apache.camel.component.as2.api.AS2SignatureAlgorithm</code>
+         * type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder signingAlgorithm(
+                AS2SignatureAlgorithm signingAlgorithm) {
+            setProperty("signingAlgorithm", signingAlgorithm);
+            return this;
+        }
+        /**
+         * The algorithm used to sign EDI message.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.as2.api.AS2SignatureAlgorithm</code>
+         * type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder signingAlgorithm(
+                String signingAlgorithm) {
+            setProperty("signingAlgorithm", signingAlgorithm);
+            return this;
+        }
+        /**
+         * The chain of certificates used to sign EDI message.
+         * The option is a <code>java.security.cert.Certificate[]</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder signingCertificateChain(
+                Certificate[] signingCertificateChain) {
+            setProperty("signingCertificateChain", signingCertificateChain);
+            return this;
+        }
+        /**
+         * The chain of certificates used to sign EDI message.
+         * The option will be converted to a
+         * <code>java.security.cert.Certificate[]</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder signingCertificateChain(
+                String signingCertificateChain) {
+            setProperty("signingCertificateChain", signingCertificateChain);
+            return this;
+        }
+        /**
+         * The key used to sign the EDI message.
+         * The option is a <code>java.security.PrivateKey</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder signingPrivateKey(
+                PrivateKey signingPrivateKey) {
+            setProperty("signingPrivateKey", signingPrivateKey);
+            return this;
+        }
+        /**
+         * The key used to sign the EDI message.
+         * The option will be converted to a
+         * <code>java.security.PrivateKey</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder signingPrivateKey(
+                String signingPrivateKey) {
+            setProperty("signingPrivateKey", signingPrivateKey);
+            return this;
+        }
+        /**
+         * The value of Subject header of AS2 message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder subject(String subject) {
+            setProperty("subject", subject);
+            return this;
+        }
+        /**
+         * The host name (IP or DNS name) of target host.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder targetHostname(
+                String targetHostname) {
+            setProperty("targetHostname", targetHostname);
+            return this;
+        }
+        /**
+         * The port number of target host. -1 indicates the scheme default port.
+         * The option is a <code>java.lang.Integer</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder targetPortNumber(
+                Integer targetPortNumber) {
+            setProperty("targetPortNumber", targetPortNumber);
+            return this;
+        }
+        /**
+         * The port number of target host. -1 indicates the scheme default port.
+         * The option will be converted to a <code>java.lang.Integer</code>
+         * type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder targetPortNumber(
+                String targetPortNumber) {
+            setProperty("targetPortNumber", targetPortNumber);
+            return this;
+        }
+        /**
+         * The value included in the User-Agent message header identifying the
+         * AS2 user agent.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointConsumerBuilder userAgent(String userAgent) {
+            setProperty("userAgent", userAgent);
+            return this;
+        }
+        /**
+         * Allows for bridging the consumer to the Camel routing Error Handler,
+         * which mean any exceptions occurred while the consumer is trying to
+         * pickup incoming messages, or the likes, will now be processed as a
+         * message and handled by the routing Error Handler. By default the
+         * consumer will use the org.apache.camel.spi.ExceptionHandler to deal
+         * with exceptions, that will be logged at WARN or ERROR level and
+         * ignored.
+         * The option is a <code>boolean</code> type.
+         * @group consumer
+         */
+        public default AS2EndpointConsumerBuilder bridgeErrorHandler(
+                boolean bridgeErrorHandler) {
+            setProperty("bridgeErrorHandler", bridgeErrorHandler);
+            return this;
+        }
+        /**
+         * Allows for bridging the consumer to the Camel routing Error Handler,
+         * which mean any exceptions occurred while the consumer is trying to
+         * pickup incoming messages, or the likes, will now be processed as a
+         * message and handled by the routing Error Handler. By default the
+         * consumer will use the org.apache.camel.spi.ExceptionHandler to deal
+         * with exceptions, that will be logged at WARN or ERROR level and
+         * ignored.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group consumer
+         */
+        public default AS2EndpointConsumerBuilder bridgeErrorHandler(
+                String bridgeErrorHandler) {
+            setProperty("bridgeErrorHandler", bridgeErrorHandler);
+            return this;
+        }
+    }
+
+    /**
+     * Advanced builder for endpoint consumers for the AS2 component.
+     */
+    public interface AdvancedAS2EndpointConsumerBuilder
+            extends
+                EndpointConsumerBuilder {
+        public default AS2EndpointConsumerBuilder basic() {
+            return (AS2EndpointConsumerBuilder) this;
+        }
+        /**
+         * 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.
+         * The option is a <code>org.apache.camel.spi.ExceptionHandler</code>
+         * type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAS2EndpointConsumerBuilder exceptionHandler(
+                ExceptionHandler exceptionHandler) {
+            setProperty("exceptionHandler", exceptionHandler);
+            return this;
+        }
+        /**
+         * 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.
+         * The option will be converted to a
+         * <code>org.apache.camel.spi.ExceptionHandler</code> type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAS2EndpointConsumerBuilder exceptionHandler(
+                String exceptionHandler) {
+            setProperty("exceptionHandler", exceptionHandler);
+            return this;
+        }
+        /**
+         * Sets the exchange pattern when the consumer creates an exchange.
+         * The option is a <code>org.apache.camel.ExchangePattern</code> type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAS2EndpointConsumerBuilder exchangePattern(
+                ExchangePattern exchangePattern) {
+            setProperty("exchangePattern", exchangePattern);
+            return this;
+        }
+        /**
+         * Sets the exchange pattern when the consumer creates an exchange.
+         * The option will be converted to a
+         * <code>org.apache.camel.ExchangePattern</code> type.
+         * @group consumer (advanced)
+         */
+        public default AdvancedAS2EndpointConsumerBuilder exchangePattern(
+                String exchangePattern) {
+            setProperty("exchangePattern", exchangePattern);
+            return this;
+        }
+        /**
+         * Whether the endpoint should use basic property binding (Camel 2.x) or
+         * the newer property binding with additional capabilities.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAS2EndpointConsumerBuilder basicPropertyBinding(
+                boolean basicPropertyBinding) {
+            setProperty("basicPropertyBinding", basicPropertyBinding);
+            return this;
+        }
+        /**
+         * Whether the endpoint should use basic property binding (Camel 2.x) or
+         * the newer property binding with additional capabilities.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAS2EndpointConsumerBuilder basicPropertyBinding(
+                String basicPropertyBinding) {
+            setProperty("basicPropertyBinding", basicPropertyBinding);
+            return this;
+        }
+        /**
+         * Sets whether synchronous processing should be strictly used, or Camel
+         * is allowed to use asynchronous processing (if supported).
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAS2EndpointConsumerBuilder synchronous(
+                boolean synchronous) {
+            setProperty("synchronous", synchronous);
+            return this;
+        }
+        /**
+         * Sets whether synchronous processing should be strictly used, or Camel
+         * is allowed to use asynchronous processing (if supported).
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAS2EndpointConsumerBuilder synchronous(
+                String synchronous) {
+            setProperty("synchronous", synchronous);
+            return this;
+        }
+    }
+
+    /**
+     * Builder for endpoint producers for the AS2 component.
+     */
+    public static interface AS2EndpointProducerBuilder
+            extends
+                EndpointProducerBuilder {
+        public default AdvancedAS2EndpointProducerBuilder advanced() {
+            return (AdvancedAS2EndpointProducerBuilder) this;
+        }
+        /**
+         * What kind of operation to perform.
+         * The option is a
+         * <code>org.apache.camel.component.as2.internal.AS2ApiName</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder apiName(AS2ApiName apiName) {
+            setProperty("apiName", apiName);
+            return this;
+        }
+        /**
+         * What kind of operation to perform.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.as2.internal.AS2ApiName</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder apiName(String apiName) {
+            setProperty("apiName", apiName);
+            return this;
+        }
+        /**
+         * What sub operation to use for the selected operation.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder methodName(String methodName) {
+            setProperty("methodName", methodName);
+            return this;
+        }
+        /**
+         * The value of the AS2From header of AS2 message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder as2From(String as2From) {
+            setProperty("as2From", as2From);
+            return this;
+        }
+        /**
+         * The structure of AS2 Message. One of: PLAIN - No encryption, no
+         * signature, SIGNED - No encryption, signature, ENCRYPTED - Encryption,
+         * no signature, ENCRYPTED_SIGNED - Encryption, signature.
+         * The option is a
+         * <code>org.apache.camel.component.as2.api.AS2MessageStructure</code>
+         * type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder as2MessageStructure(
+                AS2MessageStructure as2MessageStructure) {
+            setProperty("as2MessageStructure", as2MessageStructure);
+            return this;
+        }
+        /**
+         * The structure of AS2 Message. One of: PLAIN - No encryption, no
+         * signature, SIGNED - No encryption, signature, ENCRYPTED - Encryption,
+         * no signature, ENCRYPTED_SIGNED - Encryption, signature.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.as2.api.AS2MessageStructure</code>
+         * type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder as2MessageStructure(
+                String as2MessageStructure) {
+            setProperty("as2MessageStructure", as2MessageStructure);
+            return this;
+        }
+        /**
+         * The value of the AS2To header of AS2 message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder as2To(String as2To) {
+            setProperty("as2To", as2To);
+            return this;
+        }
+        /**
+         * The version of the AS2 protocol.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder as2Version(String as2Version) {
+            setProperty("as2Version", as2Version);
+            return this;
+        }
+        /**
+         * The Client Fully Qualified Domain Name (FQDN). Used in message ids
+         * sent by endpoint.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder clientFqdn(String clientFqdn) {
+            setProperty("clientFqdn", clientFqdn);
+            return this;
+        }
+        /**
+         * The algorithm used to compress EDI message.
+         * The option is a
+         * <code>org.apache.camel.component.as2.api.AS2CompressionAlgorithm</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder compressionAlgorithm(
+                AS2CompressionAlgorithm compressionAlgorithm) {
+            setProperty("compressionAlgorithm", compressionAlgorithm);
+            return this;
+        }
+        /**
+         * The algorithm used to compress EDI message.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.as2.api.AS2CompressionAlgorithm</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder compressionAlgorithm(
+                String compressionAlgorithm) {
+            setProperty("compressionAlgorithm", compressionAlgorithm);
+            return this;
+        }
+        /**
+         * The key used to encrypt the EDI message.
+         * The option is a <code>java.security.PrivateKey</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder decryptingPrivateKey(
+                PrivateKey decryptingPrivateKey) {
+            setProperty("decryptingPrivateKey", decryptingPrivateKey);
+            return this;
+        }
+        /**
+         * The key used to encrypt the EDI message.
+         * The option will be converted to a
+         * <code>java.security.PrivateKey</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder decryptingPrivateKey(
+                String decryptingPrivateKey) {
+            setProperty("decryptingPrivateKey", decryptingPrivateKey);
+            return this;
+        }
+        /**
+         * The value of the Disposition-Notification-To header. Assigning a
+         * value to this parameter requests a message disposition notification
+         * (MDN) for the AS2 message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder dispositionNotificationTo(
+                String dispositionNotificationTo) {
+            setProperty("dispositionNotificationTo", dispositionNotificationTo);
+            return this;
+        }
+        /**
+         * The transfer encoding of EDI message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder ediMessageTransferEncoding(
+                String ediMessageTransferEncoding) {
+            setProperty("ediMessageTransferEncoding", ediMessageTransferEncoding);
+            return this;
+        }
+        /**
+         * The content type of EDI message. One of application/edifact,
+         * application/edi-x12, application/edi-consent.
+         * The option is a <code>org.apache.http.entity.ContentType</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder ediMessageType(
+                Object ediMessageType) {
+            setProperty("ediMessageType", ediMessageType);
+            return this;
+        }
+        /**
+         * The content type of EDI message. One of application/edifact,
+         * application/edi-x12, application/edi-consent.
+         * The option will be converted to a
+         * <code>org.apache.http.entity.ContentType</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder ediMessageType(
+                String ediMessageType) {
+            setProperty("ediMessageType", ediMessageType);
+            return this;
+        }
+        /**
+         * The algorithm used to encrypt EDI message.
+         * The option is a
+         * <code>org.apache.camel.component.as2.api.AS2EncryptionAlgorithm</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder encryptingAlgorithm(
+                AS2EncryptionAlgorithm encryptingAlgorithm) {
+            setProperty("encryptingAlgorithm", encryptingAlgorithm);
+            return this;
+        }
+        /**
+         * The algorithm used to encrypt EDI message.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.as2.api.AS2EncryptionAlgorithm</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder encryptingAlgorithm(
+                String encryptingAlgorithm) {
+            setProperty("encryptingAlgorithm", encryptingAlgorithm);
+            return this;
+        }
+        /**
+         * The chain of certificates used to encrypt EDI message.
+         * The option is a <code>java.security.cert.Certificate[]</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder encryptingCertificateChain(
+                Certificate[] encryptingCertificateChain) {
+            setProperty("encryptingCertificateChain", encryptingCertificateChain);
+            return this;
+        }
+        /**
+         * The chain of certificates used to encrypt EDI message.
+         * The option will be converted to a
+         * <code>java.security.cert.Certificate[]</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder encryptingCertificateChain(
+                String encryptingCertificateChain) {
+            setProperty("encryptingCertificateChain", encryptingCertificateChain);
+            return this;
+        }
+        /**
+         * The value of the From header of AS2 message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder from(String from) {
+            setProperty("from", from);
+            return this;
+        }
+        /**
+         * Sets the name of a parameter to be passed in the exchange In Body.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder inBody(String inBody) {
+            setProperty("inBody", inBody);
+            return this;
+        }
+        /**
+         * The template used to format MDN message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder mdnMessageTemplate(
+                String mdnMessageTemplate) {
+            setProperty("mdnMessageTemplate", mdnMessageTemplate);
+            return this;
+        }
+        /**
+         * The request URI of EDI message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder requestUri(String requestUri) {
+            setProperty("requestUri", requestUri);
+            return this;
+        }
+        /**
+         * The value included in the Server message header identifying the AS2
+         * Server.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder server(String server) {
+            setProperty("server", server);
+            return this;
+        }
+        /**
+         * The Server Fully Qualified Domain Name (FQDN). Used in message ids
+         * sent by endpoint.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder serverFqdn(String serverFqdn) {
+            setProperty("serverFqdn", serverFqdn);
+            return this;
+        }
+        /**
+         * The port number of server.
+         * The option is a <code>java.lang.Integer</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder serverPortNumber(
+                Integer serverPortNumber) {
+            setProperty("serverPortNumber", serverPortNumber);
+            return this;
+        }
+        /**
+         * The port number of server.
+         * The option will be converted to a <code>java.lang.Integer</code>
+         * type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder serverPortNumber(
+                String serverPortNumber) {
+            setProperty("serverPortNumber", serverPortNumber);
+            return this;
+        }
+        /**
+         * The list of algorithms, in order of preference, requested to generate
+         * a message integrity check (MIC) returned in message dispostion
+         * notification (MDN).
+         * The option is a <code>java.lang.String[]</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder signedReceiptMicAlgorithms(
+                String[] signedReceiptMicAlgorithms) {
+            setProperty("signedReceiptMicAlgorithms", signedReceiptMicAlgorithms);
+            return this;
+        }
+        /**
+         * The list of algorithms, in order of preference, requested to generate
+         * a message integrity check (MIC) returned in message dispostion
+         * notification (MDN).
+         * The option will be converted to a <code>java.lang.String[]</code>
+         * type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder signedReceiptMicAlgorithms(
+                String signedReceiptMicAlgorithms) {
+            setProperty("signedReceiptMicAlgorithms", signedReceiptMicAlgorithms);
+            return this;
+        }
+        /**
+         * The algorithm used to sign EDI message.
+         * The option is a
+         * <code>org.apache.camel.component.as2.api.AS2SignatureAlgorithm</code>
+         * type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder signingAlgorithm(
+                AS2SignatureAlgorithm signingAlgorithm) {
+            setProperty("signingAlgorithm", signingAlgorithm);
+            return this;
+        }
+        /**
+         * The algorithm used to sign EDI message.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.as2.api.AS2SignatureAlgorithm</code>
+         * type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder signingAlgorithm(
+                String signingAlgorithm) {
+            setProperty("signingAlgorithm", signingAlgorithm);
+            return this;
+        }
+        /**
+         * The chain of certificates used to sign EDI message.
+         * The option is a <code>java.security.cert.Certificate[]</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder signingCertificateChain(
+                Certificate[] signingCertificateChain) {
+            setProperty("signingCertificateChain", signingCertificateChain);
+            return this;
+        }
+        /**
+         * The chain of certificates used to sign EDI message.
+         * The option will be converted to a
+         * <code>java.security.cert.Certificate[]</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder signingCertificateChain(
+                String signingCertificateChain) {
+            setProperty("signingCertificateChain", signingCertificateChain);
+            return this;
+        }
+        /**
+         * The key used to sign the EDI message.
+         * The option is a <code>java.security.PrivateKey</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder signingPrivateKey(
+                PrivateKey signingPrivateKey) {
+            setProperty("signingPrivateKey", signingPrivateKey);
+            return this;
+        }
+        /**
+         * The key used to sign the EDI message.
+         * The option will be converted to a
+         * <code>java.security.PrivateKey</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder signingPrivateKey(
+                String signingPrivateKey) {
+            setProperty("signingPrivateKey", signingPrivateKey);
+            return this;
+        }
+        /**
+         * The value of Subject header of AS2 message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder subject(String subject) {
+            setProperty("subject", subject);
+            return this;
+        }
+        /**
+         * The host name (IP or DNS name) of target host.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder targetHostname(
+                String targetHostname) {
+            setProperty("targetHostname", targetHostname);
+            return this;
+        }
+        /**
+         * The port number of target host. -1 indicates the scheme default port.
+         * The option is a <code>java.lang.Integer</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder targetPortNumber(
+                Integer targetPortNumber) {
+            setProperty("targetPortNumber", targetPortNumber);
+            return this;
+        }
+        /**
+         * The port number of target host. -1 indicates the scheme default port.
+         * The option will be converted to a <code>java.lang.Integer</code>
+         * type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder targetPortNumber(
+                String targetPortNumber) {
+            setProperty("targetPortNumber", targetPortNumber);
+            return this;
+        }
+        /**
+         * The value included in the User-Agent message header identifying the
+         * AS2 user agent.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointProducerBuilder userAgent(String userAgent) {
+            setProperty("userAgent", userAgent);
+            return this;
+        }
+    }
+
+    /**
+     * Advanced builder for endpoint producers for the AS2 component.
+     */
+    public interface AdvancedAS2EndpointProducerBuilder
+            extends
+                EndpointProducerBuilder {
+        public default AS2EndpointProducerBuilder basic() {
+            return (AS2EndpointProducerBuilder) this;
+        }
+        /**
+         * Whether the endpoint should use basic property binding (Camel 2.x) or
+         * the newer property binding with additional capabilities.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAS2EndpointProducerBuilder basicPropertyBinding(
+                boolean basicPropertyBinding) {
+            setProperty("basicPropertyBinding", basicPropertyBinding);
+            return this;
+        }
+        /**
+         * Whether the endpoint should use basic property binding (Camel 2.x) or
+         * the newer property binding with additional capabilities.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAS2EndpointProducerBuilder basicPropertyBinding(
+                String basicPropertyBinding) {
+            setProperty("basicPropertyBinding", basicPropertyBinding);
+            return this;
+        }
+        /**
+         * Sets whether synchronous processing should be strictly used, or Camel
+         * is allowed to use asynchronous processing (if supported).
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAS2EndpointProducerBuilder synchronous(
+                boolean synchronous) {
+            setProperty("synchronous", synchronous);
+            return this;
+        }
+        /**
+         * Sets whether synchronous processing should be strictly used, or Camel
+         * is allowed to use asynchronous processing (if supported).
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAS2EndpointProducerBuilder synchronous(
+                String synchronous) {
+            setProperty("synchronous", synchronous);
+            return this;
+        }
+    }
+
+    /**
+     * Builder for endpoint for the AS2 component.
+     */
+    public static interface AS2EndpointBuilder
+            extends
+                AS2EndpointConsumerBuilder, AS2EndpointProducerBuilder {
+        public default AdvancedAS2EndpointBuilder advanced() {
+            return (AdvancedAS2EndpointBuilder) this;
+        }
+        /**
+         * What kind of operation to perform.
+         * The option is a
+         * <code>org.apache.camel.component.as2.internal.AS2ApiName</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder apiName(AS2ApiName apiName) {
+            setProperty("apiName", apiName);
+            return this;
+        }
+        /**
+         * What kind of operation to perform.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.as2.internal.AS2ApiName</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder apiName(String apiName) {
+            setProperty("apiName", apiName);
+            return this;
+        }
+        /**
+         * What sub operation to use for the selected operation.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder methodName(String methodName) {
+            setProperty("methodName", methodName);
+            return this;
+        }
+        /**
+         * The value of the AS2From header of AS2 message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder as2From(String as2From) {
+            setProperty("as2From", as2From);
+            return this;
+        }
+        /**
+         * The structure of AS2 Message. One of: PLAIN - No encryption, no
+         * signature, SIGNED - No encryption, signature, ENCRYPTED - Encryption,
+         * no signature, ENCRYPTED_SIGNED - Encryption, signature.
+         * The option is a
+         * <code>org.apache.camel.component.as2.api.AS2MessageStructure</code>
+         * type.
+         * @group common
+         */
+        public default AS2EndpointBuilder as2MessageStructure(
+                AS2MessageStructure as2MessageStructure) {
+            setProperty("as2MessageStructure", as2MessageStructure);
+            return this;
+        }
+        /**
+         * The structure of AS2 Message. One of: PLAIN - No encryption, no
+         * signature, SIGNED - No encryption, signature, ENCRYPTED - Encryption,
+         * no signature, ENCRYPTED_SIGNED - Encryption, signature.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.as2.api.AS2MessageStructure</code>
+         * type.
+         * @group common
+         */
+        public default AS2EndpointBuilder as2MessageStructure(
+                String as2MessageStructure) {
+            setProperty("as2MessageStructure", as2MessageStructure);
+            return this;
+        }
+        /**
+         * The value of the AS2To header of AS2 message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder as2To(String as2To) {
+            setProperty("as2To", as2To);
+            return this;
+        }
+        /**
+         * The version of the AS2 protocol.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder as2Version(String as2Version) {
+            setProperty("as2Version", as2Version);
+            return this;
+        }
+        /**
+         * The Client Fully Qualified Domain Name (FQDN). Used in message ids
+         * sent by endpoint.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder clientFqdn(String clientFqdn) {
+            setProperty("clientFqdn", clientFqdn);
+            return this;
+        }
+        /**
+         * The algorithm used to compress EDI message.
+         * The option is a
+         * <code>org.apache.camel.component.as2.api.AS2CompressionAlgorithm</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder compressionAlgorithm(
+                AS2CompressionAlgorithm compressionAlgorithm) {
+            setProperty("compressionAlgorithm", compressionAlgorithm);
+            return this;
+        }
+        /**
+         * The algorithm used to compress EDI message.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.as2.api.AS2CompressionAlgorithm</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder compressionAlgorithm(
+                String compressionAlgorithm) {
+            setProperty("compressionAlgorithm", compressionAlgorithm);
+            return this;
+        }
+        /**
+         * The key used to encrypt the EDI message.
+         * The option is a <code>java.security.PrivateKey</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder decryptingPrivateKey(
+                PrivateKey decryptingPrivateKey) {
+            setProperty("decryptingPrivateKey", decryptingPrivateKey);
+            return this;
+        }
+        /**
+         * The key used to encrypt the EDI message.
+         * The option will be converted to a
+         * <code>java.security.PrivateKey</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder decryptingPrivateKey(
+                String decryptingPrivateKey) {
+            setProperty("decryptingPrivateKey", decryptingPrivateKey);
+            return this;
+        }
+        /**
+         * The value of the Disposition-Notification-To header. Assigning a
+         * value to this parameter requests a message disposition notification
+         * (MDN) for the AS2 message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder dispositionNotificationTo(
+                String dispositionNotificationTo) {
+            setProperty("dispositionNotificationTo", dispositionNotificationTo);
+            return this;
+        }
+        /**
+         * The transfer encoding of EDI message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder ediMessageTransferEncoding(
+                String ediMessageTransferEncoding) {
+            setProperty("ediMessageTransferEncoding", ediMessageTransferEncoding);
+            return this;
+        }
+        /**
+         * The content type of EDI message. One of application/edifact,
+         * application/edi-x12, application/edi-consent.
+         * The option is a <code>org.apache.http.entity.ContentType</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder ediMessageType(Object ediMessageType) {
+            setProperty("ediMessageType", ediMessageType);
+            return this;
+        }
+        /**
+         * The content type of EDI message. One of application/edifact,
+         * application/edi-x12, application/edi-consent.
+         * The option will be converted to a
+         * <code>org.apache.http.entity.ContentType</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder ediMessageType(String ediMessageType) {
+            setProperty("ediMessageType", ediMessageType);
+            return this;
+        }
+        /**
+         * The algorithm used to encrypt EDI message.
+         * The option is a
+         * <code>org.apache.camel.component.as2.api.AS2EncryptionAlgorithm</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder encryptingAlgorithm(
+                AS2EncryptionAlgorithm encryptingAlgorithm) {
+            setProperty("encryptingAlgorithm", encryptingAlgorithm);
+            return this;
+        }
+        /**
+         * The algorithm used to encrypt EDI message.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.as2.api.AS2EncryptionAlgorithm</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder encryptingAlgorithm(
+                String encryptingAlgorithm) {
+            setProperty("encryptingAlgorithm", encryptingAlgorithm);
+            return this;
+        }
+        /**
+         * The chain of certificates used to encrypt EDI message.
+         * The option is a <code>java.security.cert.Certificate[]</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder encryptingCertificateChain(
+                Certificate[] encryptingCertificateChain) {
+            setProperty("encryptingCertificateChain", encryptingCertificateChain);
+            return this;
+        }
+        /**
+         * The chain of certificates used to encrypt EDI message.
+         * The option will be converted to a
+         * <code>java.security.cert.Certificate[]</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder encryptingCertificateChain(
+                String encryptingCertificateChain) {
+            setProperty("encryptingCertificateChain", encryptingCertificateChain);
+            return this;
+        }
+        /**
+         * The value of the From header of AS2 message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder from(String from) {
+            setProperty("from", from);
+            return this;
+        }
+        /**
+         * Sets the name of a parameter to be passed in the exchange In Body.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder inBody(String inBody) {
+            setProperty("inBody", inBody);
+            return this;
+        }
+        /**
+         * The template used to format MDN message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder mdnMessageTemplate(
+                String mdnMessageTemplate) {
+            setProperty("mdnMessageTemplate", mdnMessageTemplate);
+            return this;
+        }
+        /**
+         * The request URI of EDI message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder requestUri(String requestUri) {
+            setProperty("requestUri", requestUri);
+            return this;
+        }
+        /**
+         * The value included in the Server message header identifying the AS2
+         * Server.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder server(String server) {
+            setProperty("server", server);
+            return this;
+        }
+        /**
+         * The Server Fully Qualified Domain Name (FQDN). Used in message ids
+         * sent by endpoint.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder serverFqdn(String serverFqdn) {
+            setProperty("serverFqdn", serverFqdn);
+            return this;
+        }
+        /**
+         * The port number of server.
+         * The option is a <code>java.lang.Integer</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder serverPortNumber(
+                Integer serverPortNumber) {
+            setProperty("serverPortNumber", serverPortNumber);
+            return this;
+        }
+        /**
+         * The port number of server.
+         * The option will be converted to a <code>java.lang.Integer</code>
+         * type.
+         * @group common
+         */
+        public default AS2EndpointBuilder serverPortNumber(
+                String serverPortNumber) {
+            setProperty("serverPortNumber", serverPortNumber);
+            return this;
+        }
+        /**
+         * The list of algorithms, in order of preference, requested to generate
+         * a message integrity check (MIC) returned in message dispostion
+         * notification (MDN).
+         * The option is a <code>java.lang.String[]</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder signedReceiptMicAlgorithms(
+                String[] signedReceiptMicAlgorithms) {
+            setProperty("signedReceiptMicAlgorithms", signedReceiptMicAlgorithms);
+            return this;
+        }
+        /**
+         * The list of algorithms, in order of preference, requested to generate
+         * a message integrity check (MIC) returned in message dispostion
+         * notification (MDN).
+         * The option will be converted to a <code>java.lang.String[]</code>
+         * type.
+         * @group common
+         */
+        public default AS2EndpointBuilder signedReceiptMicAlgorithms(
+                String signedReceiptMicAlgorithms) {
+            setProperty("signedReceiptMicAlgorithms", signedReceiptMicAlgorithms);
+            return this;
+        }
+        /**
+         * The algorithm used to sign EDI message.
+         * The option is a
+         * <code>org.apache.camel.component.as2.api.AS2SignatureAlgorithm</code>
+         * type.
+         * @group common
+         */
+        public default AS2EndpointBuilder signingAlgorithm(
+                AS2SignatureAlgorithm signingAlgorithm) {
+            setProperty("signingAlgorithm", signingAlgorithm);
+            return this;
+        }
+        /**
+         * The algorithm used to sign EDI message.
+         * The option will be converted to a
+         * <code>org.apache.camel.component.as2.api.AS2SignatureAlgorithm</code>
+         * type.
+         * @group common
+         */
+        public default AS2EndpointBuilder signingAlgorithm(
+                String signingAlgorithm) {
+            setProperty("signingAlgorithm", signingAlgorithm);
+            return this;
+        }
+        /**
+         * The chain of certificates used to sign EDI message.
+         * The option is a <code>java.security.cert.Certificate[]</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder signingCertificateChain(
+                Certificate[] signingCertificateChain) {
+            setProperty("signingCertificateChain", signingCertificateChain);
+            return this;
+        }
+        /**
+         * The chain of certificates used to sign EDI message.
+         * The option will be converted to a
+         * <code>java.security.cert.Certificate[]</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder signingCertificateChain(
+                String signingCertificateChain) {
+            setProperty("signingCertificateChain", signingCertificateChain);
+            return this;
+        }
+        /**
+         * The key used to sign the EDI message.
+         * The option is a <code>java.security.PrivateKey</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder signingPrivateKey(
+                PrivateKey signingPrivateKey) {
+            setProperty("signingPrivateKey", signingPrivateKey);
+            return this;
+        }
+        /**
+         * The key used to sign the EDI message.
+         * The option will be converted to a
+         * <code>java.security.PrivateKey</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder signingPrivateKey(
+                String signingPrivateKey) {
+            setProperty("signingPrivateKey", signingPrivateKey);
+            return this;
+        }
+        /**
+         * The value of Subject header of AS2 message.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder subject(String subject) {
+            setProperty("subject", subject);
+            return this;
+        }
+        /**
+         * The host name (IP or DNS name) of target host.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder targetHostname(String targetHostname) {
+            setProperty("targetHostname", targetHostname);
+            return this;
+        }
+        /**
+         * The port number of target host. -1 indicates the scheme default port.
+         * The option is a <code>java.lang.Integer</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder targetPortNumber(
+                Integer targetPortNumber) {
+            setProperty("targetPortNumber", targetPortNumber);
+            return this;
+        }
+        /**
+         * The port number of target host. -1 indicates the scheme default port.
+         * The option will be converted to a <code>java.lang.Integer</code>
+         * type.
+         * @group common
+         */
+        public default AS2EndpointBuilder targetPortNumber(
+                String targetPortNumber) {
+            setProperty("targetPortNumber", targetPortNumber);
+            return this;
+        }
+        /**
+         * The value included in the User-Agent message header identifying the
+         * AS2 user agent.
+         * The option is a <code>java.lang.String</code> type.
+         * @group common
+         */
+        public default AS2EndpointBuilder userAgent(String userAgent) {
+            setProperty("userAgent", userAgent);
+            return this;
+        }
+    }
+
+    /**
+     * Advanced builder for endpoint for the AS2 component.
+     */
+    public static interface AdvancedAS2EndpointBuilder
+            extends
+                AdvancedAS2EndpointConsumerBuilder, AdvancedAS2EndpointProducerBuilder {
+        public default AS2EndpointBuilder basic() {
+            return (AS2EndpointBuilder) this;
+        }
+        /**
+         * Whether the endpoint should use basic property binding (Camel 2.x) or
+         * the newer property binding with additional capabilities.
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAS2EndpointBuilder basicPropertyBinding(
+                boolean basicPropertyBinding) {
+            setProperty("basicPropertyBinding", basicPropertyBinding);
+            return this;
+        }
+        /**
+         * Whether the endpoint should use basic property binding (Camel 2.x) or
+         * the newer property binding with additional capabilities.
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAS2EndpointBuilder basicPropertyBinding(
+                String basicPropertyBinding) {
+            setProperty("basicPropertyBinding", basicPropertyBinding);
+            return this;
+        }
+        /**
+         * Sets whether synchronous processing should be strictly used, or Camel
+         * is allowed to use asynchronous processing (if supported).
+         * The option is a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAS2EndpointBuilder synchronous(
+                boolean synchronous) {
+            setProperty("synchronous", synchronous);
+            return this;
+        }
+        /**
+         * Sets whether synchronous processing should be strictly used, or Camel
+         * is allowed to use asynchronous processing (if supported).
+         * The option will be converted to a <code>boolean</code> type.
+         * @group advanced
+         */
+        public default AdvancedAS2EndpointBuilder synchronous(String synchronous) {
+            setProperty("synchronous", synchronous);
+            return this;
+        }
+    }
+
+    /**
+     * Proxy enum for
+     * <code>org.apache.camel.component.as2.internal.AS2ApiName</code> enum.
+     */
+    public static enum AS2ApiName {
+        CLIENT, SERVER;
+    }
+
+    /**
+     * Proxy enum for
+     * <code>org.apache.camel.component.as2.api.AS2MessageStructure</code> enum.
+     */
+    public static enum AS2MessageStructure {
+        PLAIN, SIGNED, ENCRYPTED, SIGNED_ENCRYPTED, PLAIN_COMPRESSED, SIGNED_COMPRESSED, ENCRYPTED_COMPRESSED, ENCRYPTED_COMPRESSED_SIGNED;
+    }
+
+    /**
+     * Proxy enum for
+     * <code>org.apache.camel.component.as2.api.AS2CompressionAlgorithm</code>
+     * enum.
+     */
+    public static enum AS2CompressionAlgorithm {
+        ZLIB;
+    }
+
+    /**
+     * Proxy enum for
+     * <code>org.apache.camel.component.as2.api.AS2EncryptionAlgorithm</code>
+     * enum.
+     */
+    public static enum AS2EncryptionAlgorithm {
+        AES128_CBC, AES192_CBC, AES256_CBC, AES128_CCM, AES192_CCM, AES256_CCM, AES128_GCM, AES192_GCM, AES256_GCM, CAMELLIA128_CBC, CAMELLIA192_CBC, CAMELLIA256_CBC, CAST5_CBC, DES_CBC, DES_EDE3_CBC, GOST28147_GCFB, IDEA_CBC, RC2_CBC, RC4, SEED_CBC;
+    }
+
+    /**
+     * Proxy enum for
+     * <code>org.apache.camel.component.as2.api.AS2SignatureAlgorithm</code>
+     * enum.
+     */
+    public static enum AS2SignatureAlgorithm {
+        SHA3_224WITHRSA, SHA3_256WITHRSA, SHA3_384withRSA, SHA3_512WITHRSA, MD5WITHRSA, SHA1WITHRSA, MD2WITHRSA, SHA224WITHRSA, SHA256WITHRSA, SHA384WITHRSA, SHA512WITHRSA, RIPEMD128WITHRSA, RIPEMD160WITHRSA, RIPEMD256WITHRSA, SHA224WITHDSA, SHA256WITHDSA, SHA384WITHDSA, SHA512WITHDSA, SHA3_224WITHDSA, SHA3_256WITHDSA, SHA3_384WITHDSA, SHA3_512WITHDSA, SHA1WITHDSA, SHA3_224WITHECDSA, SHA3_256WITHECDSA, SHA3_384WITHECDSA, SHA3_512WITHECDSA, SHA1WITHECDSA, SHA224WITHECDSA, SHA256WITHECDSA, [...]
+    }
+    /**
+     * Component used for transferring data secure and reliable over the
+     * internet using the AS2 protocol. Creates a builder to build endpoints for
+     * the AS2 component.
+     */
+    public default AS2EndpointBuilder aS2(String path) {
+        class AS2EndpointBuilderImpl extends AbstractEndpointBuilder implements AS2EndpointBuilder, AdvancedAS2EndpointBuilder {
+            public AS2EndpointBuilderImpl(String path) {
+                super("as2", path);
+            }
+        }
+        return new AS2EndpointBuilderImpl(path);
+    }
+}
\ No newline at end of file
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/endpoint/ActiveMQEndpointBuilder.java b/core/camel-core/src/main/java/org/apache/camel/model/endpoint/ActiveMQEndpointBuilder.java
deleted file mode 100644
index 03169dd..0000000
--- a/core/camel-core/src/main/java/org/apache/camel/model/endpoint/ActiveMQEndpointBuilder.java
+++ /dev/null
@@ -1,2347 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.model.endpoint;
-
-import javax.annotation.Generated;
-import org.apache.camel.ExchangePattern;
-import org.apache.camel.LoggingLevel;
-import org.apache.camel.model.AbstractEndpointBuilder;
-import org.apache.camel.model.EndpointConsumerBuilder;
-import org.apache.camel.model.EndpointProducerBuilder;
-import org.apache.camel.spi.ExceptionHandler;
-import org.apache.camel.spi.HeaderFilterStrategy;
-
-/**
- * The activemq component allows messages to be sent to (or consumed from)
- * Apache ActiveMQ. This component extends the Camel JMS component.
- * 
- * Generated by camel-package-maven-plugin - do not edit this file!
- */
-@Generated("org.apache.camel.maven.packaging.EndpointDslMojo")
-public interface ActiveMQEndpointBuilder {
-
-
-    /**
-     * Base class for the ActiveMQ component builders.
-     */
-    public static class ActiveMQCommonBuilder<T extends AbstractEndpointBuilder>
-            extends
-                AbstractEndpointBuilder<T> {
-        ActiveMQCommonBuilder(String path) {
-            super("activemq", path);
-        }
-        /**
-         * The kind of destination to use.
-         * The option is a <code>java.lang.String</code> type.
-         * @group common
-         */
-        public T destinationType(String destinationType) {
-            this.properties.put("destinationType", destinationType);
-            return (T) this;
-        }
-        /**
-         * Name of the queue or topic to use as destination.
-         * The option is a <code>java.lang.String</code> type.
-         * @group common
-         */
-        public T destinationName(String destinationName) {
-            this.properties.put("destinationName", destinationName);
-            return (T) this;
-        }
-        /**
-         * Sets the JMS client ID to use. Note that this value, if specified,
... 363363 lines suppressed ...