blob: 5d85c94e56c306c25470c6df2abd108ce6506676 [file] [log] [blame]
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Apache Camel 3.x Upgrade Guide :: Apache Camel</title> <link rel="canonical" href="https://camel.apache.org/manual/camel-3x-upgrade-guide-3_2.html"> <meta name="generator" content="Antora 3.1.7"> <link rel="stylesheet" href="../_/css/site-b287b96c63.css"> <meta name="application-name" content="Apache Camel"> <meta property="og:title" content="Apache Camel 3.x Upgrade Guide"> <meta property="og:site_name" content="Apache Camel"> <meta property="og:url" content="https://camel.apache.org"> <meta property="og:description" content="Camel is an open source integration framework that empowers you to quickly and easily integrate various systems consuming or producing data."> <meta property="og:type" content="website"> <meta property="og:image" content="https://camel.apache.org/_/img/logo-d-a567cee6fa.svg"> <link rel="manifest" href="../site.webmanifest"> <link rel="apple-touch-icon-precomposed" sizes="57x57" href="../apple-touch-icon-57x57.png"> <link rel="apple-touch-icon-precomposed" sizes="114x114" href="../apple-touch-icon-114x114.png"> <link rel="apple-touch-icon-precomposed" sizes="72x72" href="../apple-touch-icon-72x72.png"> <link rel="apple-touch-icon-precomposed" sizes="144x144" href="../apple-touch-icon-144x144.png"> <link rel="apple-touch-icon-precomposed" sizes="60x60" href="../apple-touch-icon-60x60.png"> <link rel="apple-touch-icon-precomposed" sizes="120x120" href="../apple-touch-icon-120x120.png"> <link rel="apple-touch-icon-precomposed" sizes="76x76" href="../apple-touch-icon-76x76.png"> <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../apple-touch-icon-152x152.png"> <link rel="icon" type="image/png" href="../favicon-196x196.png" sizes="196x196"> <link rel="icon" type="image/png" href="../favicon-96x96.png" sizes="96x96"> <link rel="icon" type="image/png" href="../favicon-32x32.png" sizes="32x32"> <link rel="icon" type="image/png" href="../favicon-16x16.png" sizes="16x16"> <link rel="icon" type="image/png" href="../favicon-128.png" sizes="128x128"> </head> <body class="article"> <header class="header"> <nav class="navbar" aria-label="Main menu"> <div class="navbar-brand"> <a class="nav-logo" href=".."></a> <div id="topbar-nav" class="navbar-menu"> <div class="navbar-end"> <a class="navbar-item-section navbar-item navbar-topics" href="../blog/"> <img alt="Blog" src="/_/img/blog-4c7fa4cb60.svg"> Blog </a> <a class="navbar-item-section navbar-item navbar-topics" href="../docs/"> <img alt="Documentation" src="/_/img/documentation-abb1b7f8b1.svg"> Documentation </a> <a class="navbar-item-section navbar-item navbar-topics" href="../community/"> <img alt="Community" src="/_/img/community-2ec8a3dc8b.svg"> Community </a> <a class="navbar-item-section navbar-item navbar-topics" href="../download/"> <img alt="Download" src="/_/img/download-63cdd75074.svg"> Download </a> <a class="navbar-item-section navbar-item navbar-topics" href="../security/"> <img alt="Security" src="/_/img/security-06abe157b3.svg"> Security </a> </div> </div> <div class="navbar-fill"></div> <div class="break-row"></div> <div class="navbar-search results-hidden"> <input id="search" class="search" placeholder="Search" autocomplete="off"> <img src="../_/img/cancel-1ed239489b.svg" alt="Clear" id="search-cancel"> <div id="search_results"></div> </div> <div class="navbar-tools"> <a rel="noopener noreferrer nofollow" href="https://github.com/apache/camel/" title="Collaborate on GitHub"><svg focusable="false" class="brand-icon"><use xlink:href="../_/img/brand-logos-f2e689f4d4.svg#github"/></svg></a> <a rel="noopener noreferrer nofollow" href="https://camel.zulipchat.com" title="Chat on Zulip"><svg focusable="false" class="brand-icon"><use xlink:href="../_/img/brand-logos-f2e689f4d4.svg#zulip"/></svg></a> <a rel="noopener noreferrer nofollow" href="https://twitter.com/ApacheCamel" title="Follow Apache Camel on Twitter"><svg focusable="false" class="brand-icon"><use xlink:href="../_/img/brand-logos-f2e689f4d4.svg#twitter"/></svg></a> <a rel="noopener noreferrer nofollow" href="https://www.linkedin.com/groups/2447439/" title="Apache Camel group on Linkedin"><svg focusable="false" class="brand-icon"><use xlink:href="../_/img/brand-logos-f2e689f4d4.svg#linkedin"/></svg></a> </div> <button class="navbar-burger" data-target="topbar-nav" type="button" aria-label="Menu"> <span></span> <span></span> <span></span> </button> </div> </nav> </header> <a id="top"></a> <div class="body"> <div class="nav-container" data-component="manual" data-version=""> <aside class="nav" aria-label="Side menu"> <div class="panels"> <div class="nav-panel-menu is-active"> <nav class="nav-menu" data-panel="menu" aria-label="Topics"> <h3 class="title"><a href="index.html">User manual</a></h3> <ul class="nav-list"> <li class="nav-item" data-depth="0"> <ul class="nav-list"> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="getting-started.html">Getting started</a> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <a class="nav-link" href="book-getting-started.html">Getting Started with Apache Camel</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="what-are-the-dependencies.html">What are the dependencies?</a> </li> </ul> </li> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <span class="nav-text">Resources &amp; Guides</span> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <a class="nav-link" href="/community/books/">Books</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="building.html">Building</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="camel-console.html">Camel Developer Console</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="camel-jbang.html">Camel JBang</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="camel-jbang-k.html">Camel Integration with Kubernetes</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="camel-maven-plugin.html">Camel Maven Plugin</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="camel-component-maven-plugin.html">Camel Component Maven Plugin</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="camel-report-maven-plugin.html">Camel Maven Report Plugin</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="camel-maven-archetypes.html">Camel Maven Archetypes</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="configuring-route-startup-ordering-and-autostartup.html">Configuring route startup ordering and autostartup</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="component-dsl.html">Component DSL</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="Endpoint-dsl.html">Endpoint DSL</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dataformat-dsl.html">DataFormat DSL</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="examples.html">Examples</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="graceful-shutdown.html">Graceful Shutdown</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="error-handler.html">Error handler</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="using-propertyplaceholder.html">How to use Camel property placeholders</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="variables.html">How to use Variables</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="testing.html">Testing</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="test-infra.html">Test Infra</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="notify-builder.html">NotifyBuilder</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="advice-with.html">AdviceWith</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="rest-dsl.html">Working with REST and Rest DSL</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="rest-dsl-openapi.html">Rest DSL contract first</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="writing-components.html">Writing Components</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="release-guide.html">Release guide</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="release-guide-website.html">Adding doc versions to the website</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="improving-the-documentation.html">Improving the Documentation</a> </li> </ul> </li> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="migration-and-upgrade.html">Migration and Upgrade</a> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <a class="nav-link" href="camel-3-migration-guide.html">Camel 2.x to 3.0 Migration Guide</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="camel-3x-upgrade-guide.html">Camel 3.x Upgrade Guide</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="camel-4-migration-guide.html">Camel 3.x to 4.0 Migration Guide</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="camel-4x-upgrade-guide.html">Camel 4.x Upgrade Guide</a> </li> </ul> </li> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="architecture.html">Architecture</a> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <a class="nav-link" href="backlog-debugger.html">Backlog debugger</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="backlog-tracer.html">Backlog Tracer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="batch-consumer.html">Batch Consumer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="bean-binding.html">Bean Binding</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="bean-integration.html">Bean Integration</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="browsable-endpoint.html">BrowsableEndpoint</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="camelcontext.html">CamelContext</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="camelcontext-autoconfigure.html">CamelContext Auto Configuration</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="clustering.html">Clustering and Load Balancing</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="component.html">Component</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="data-format.html">Data Format</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="debugger.html">Debugger</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="delay-interceptor.html">Delayer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="endpoint.html">Endpoints</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="endpoint-annotations.html">Endpoint Annotations</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="exception-clause.html">Exception Clause</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="exchange-pooling.html">Exchange Pooling</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="http-session-handling.html">HTTP-Session Handling</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="parameter-binding-annotations.html">Parameter Binding Annotations</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="pojo-producing.html">POJO Producing</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="pojo-consuming.html">POJO Consuming</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="producertemplate.html">ProducerTemplate</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="consumertemplate.html">ConsumerTemplate</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="error-handler.html">Error Handler</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="exchange.html">Message Exchange</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="exchange-pattern.html">Exchange Pattern</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="using-exchange-pattern-annotations.html">Using Exchange pattern annotations</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="expression.html">Expressions</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="../components/4.4.x/eips/content-enricher.html">Content Enrichment</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="injector.html">Injector</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="../components/4.4.x/eips/intercept.html">Intercept</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="jmx.html">JMX</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="lifecycle.html">Camel Lifecycle</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="oncompletion.html">OnCompletion</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="pluggable-class-resolvers.html">Pluggable Class Resolvers</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="predicate.html">Predicates</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="processor.html">Processor</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="registry.html">Registry</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="route-builder.html">RouteBuilder</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="lambda-route-builder.html">LambdaRouteBuilder</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="route-controller.html">RouteController</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="route-policy.html">RoutePolicy</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="route-configuration.html">RouteConfiguration</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="context-reload.html">ContextReload</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="route-reload.html">RouteReload</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="route-template.html">RouteTemplate</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="routes.html">Routes</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="stream-caching.html">Stream caching</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="transformer.html">Transformer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="threading-model.html">Threading Model</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="tracer.html">Tracer</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="type-converter.html">Type Converter</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="uris.html">URIs</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="uuidgenerator.html">UuidGenerator</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="validator.html">Validator</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="health-check.html">Health Checks</a> </li> </ul> </li> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <span class="nav-text">Domain Specific Languages</span> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <a class="nav-link" href="dsl.html">Camel Domain Specific Language</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages.html">Languages</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="java-dsl.html">Java DSL</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="spring.html">Spring support</a> </li> </ul> </li> </ul> </li> <li class="nav-item" data-depth="0"> <ul class="nav-list"> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle" type="button" aria-label="Expand or contract topic"></button> <a class="nav-link" href="faq/index.html">FAQ</a> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/can-i-get-commercial-support.html">Can I get commercial support?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="/community/support/">How can I get help?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-can-i-get-the-source-code.html">How can I get the source code?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-does-camel-work.html">How does Camel work?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-does-the-website-work.html">How does the website work?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-become-a-committer.html">How do I become a committer?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-compile-the-code.html">How do I compile the code?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-edit-the-website.html">How do I edit the website?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/running-camel-standalone.html">Running Camel standalone</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/what-is-a-router.html">What is a router?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/what-is-camel.html">What is Camel?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/what-is-the-license.html">What is the license?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="languages.html">What languages are supported?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/what-platforms-are-supported.html">What platforms are supported?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/why-the-name-camel.html">Why the name Camel?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-specify-which-method-to-use-when-using-beans-in-routes.html">How do I specify which method to use when using beans in routes?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-can-i-create-a-custom-component-or-endpoint.html">How can I create a custom component or endpoint?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-can-i-get-the-remote-connection-ip-address-from-the-camel-cxf-consumer-.html">How can I get the remote connection IP address from the camel-cxf consumer ?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-can-i-stop-a-route-from-a-route.html">How can I stop a route from a route?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-can-webservice-clients-see-remote-faults-with-stacktraces-when-using-camel-cxf.html">How can webservice clients see remote faults with stacktraces when using camel-cxf?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-does-camel-look-up-beans-and-endpoints.html">How does Camel look up beans and endpoints?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-change-the-logging.html">How do I change the logging?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-configure-endpoints.html">How do I configure endpoints?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-configure-password-options-on-camel-endpoints-without-the-value-being-encoded.html">How do I configure password options on Camel endpoints without the value being encoded?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-configure-the-default-maximum-cache-size-for-producercache-or-producertemplate.html">How do I configure the default maximum cache size for ProducerCache or ProducerTemplate?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-configure-the-maximum-endpoint-cache-size-for-camelcontext.html">How do I configure the maximum endpoint cache size for CamelContext?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-debug-my-route.html">How do I debug my route?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-disable-jmx.html">How do I disable JMX?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-enable-streams-when-debug-logging-messages-in-camel.html">How do I enable streams when debug logging messages in Camel?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-handle-failures-when-consuming-for-example-from-a-ftp-server.html">How do I handle failures when consuming for example from a FTP server?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-import-rests-from-other-xml-files.html">How do I import rests from other XML files?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-import-routes-from-other-xml-files.html">How do I import routes from other XML files?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-let-jetty-match-wildcards.html">How do I let Jetty match wildcards?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-name-my-routes.html">How do I name my routes?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-restart-camelcontext.html">How do I restart CamelContext?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-retrieve-the-thrown-exception-during-processing-an-exchange.html">How do I retrieve the thrown Exception during processing an Exchange?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-retry-failed-messages-forever.html">How do I retry failed messages forever?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-retry-processing-a-message-from-a-certain-point-back-or-an-entire-route.html">How do I retry processing a message from a certain point back or an entire route?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-reuse-the-contexttestsupport-class-in-my-unit-tests.html">How do I reuse the ContextTestSupport class in my unit tests?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-set-the-max-chars-when-debug-logging-messages-in-camel.html">How do I set the max chars when debug logging messages in Camel?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-use-uris-with-parameters-in-xml.html">How do I use URIs with parameters in XML?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-write-a-custom-processor-which-sends-multiple-messages.html">How do I write a custom Processor which sends multiple messages?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-should-i-invoke-my-pojos-or-spring-services.html">How should I invoke my POJOs or Spring Services?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-to-avoid-importing-bunch-of-cxf-packages-when-start-up-the-camel-cxf-endpoint-from-osgi-platform-.html">How to avoid importing bunch of cxf packages when start up the camel-cxf endpoint from OSGi platform?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-to-avoid-sending-some-or-all-message-headers.html">How to avoid sending some or all message headers?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-to-remove-the-http-protocol-headers-in-the-camel-message.html">How to remove the http protocol headers in the camel message?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-to-send-the-same-message-to-multiple-endpoints.html">How to send the same message to multiple endpoints?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-to-switch-the-cxf-consumer-between-http-and-https-without-touching-the-spring-configuration.html">How to switch the CXF consumer between HTTP and HTTPS without touching the Spring configuration?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-to-use-a-dynamic-uri-in-to.html">How to use a dynamic URI in to()?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/is-there-an-ide.html">Is there an IDE?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/using-getin-or-getout-methods-on-exchange.html">Using getIn or getOut methods on Exchange</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/why-cant-i-use-sign-in-my-password.html">Why can&#8217;t I use + sign in my password?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/why-can-i-not-use-when-or-otherwise-in-a-java-camel-route.html">Why can I not use when or otherwise in a Java Camel route?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/why-does-ftp-component-not-download-any-files.html">Why does FTP component not download any files?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/why-does-my-file-consumer-not-pick-up-the-file-and-how-do-i-let-the-file-consumer-use-the-camel-error-handler.html">Why does my file consumer not pick up the file, and how do I let the file consumer use the Camel error handler?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/why-does-useoriginalmessage-with-error-handler-not-work-as-expected.html">Why does useOriginalMessage with error handler not work as expected?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/why-do-my-message-lose-its-headers-during-routing.html">Why do my message lose its headers during routing?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/why-is-my-message-body-empty.html">Why is my message body empty?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/why-is-my-processor-not-showing-up-in-jconsole.html">Why is my processor not showing up in JConsole?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/why-is-the-exception-null-when-i-use-onexception.html">Why is the exception null when I use onException?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/why-use-multiple-camelcontext.html">Why use multiple CamelContext?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-enable-debug-logging.html">How do I enable debug logging?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-use-log4j.html">How do I use log4j?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-make-my-jms-endpoint-transactional.html">How Do I Make My JMS Endpoint Transactional?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-i-set-the-mep-when-interacting-with-jbi.html">How do I set the MEP when interacting with JBI?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-the-direct-event-seda-and-vm-endpoints-compare.html">How do the direct, event, seda and vm endpoints compare?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/how-do-the-timer-and-quartz-endpoints-compare.html">How do the Timer and Quartz endpoints compare?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/why-does-my-jms-route-only-consume-one-message-at-once.html">Why does my JMS route only consume one message at once?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/exception-beandefinitionstoreexception.html">Exception - BeanDefinitionStoreException</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/exception-orgapachecamelnosuchendpointexception.html">Exception - org.apache.camel.NoSuchEndpointException</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/exception-orgxmlsaxsaxparseexception.html">Exception - org.xml.sax.SAXParseException</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/memory-leak-when-adding-and-removing-routes-at-runtime.html">Memory leak when adding and removing routes at runtime</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/why-does-camel-use-too-many-threads-with-producertemplate.html">Why does Camel use too many threads with ProducerTemplate?</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="faq/why-does-maven-not-download-dependencies.html">Why does maven not download dependencies?</a> </li> </ul> </li> </ul> </li> <li class="nav-item" data-depth="0"> <ul class="nav-list"> <li class="nav-item" data-depth="1"> <span class="nav-text"><strong>Reference</strong></span> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="../components/4.4.x/index.html">Components</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="../components/4.4.x/dataformats/index.html">Data Formats</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="../components/4.4.x/languages/index.html">Languages</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="../components/4.4.x/eips/enterprise-integration-patterns.html">EIPs</a> </li> </ul> </li> </ul> </nav> </div> <div class="nav-panel-explore" data-panel="explore"> <div class="context"> <span class="title noversion">User manual</span> </div> <ul class="components"> <li class="component is-current"> <span class="title"> <a href="index.html">User manual</a> </span></li> <li class="component"><span class="title">Camel Components</span> <ul class="versions"> <li class="version"> <a href="../components/next/index.html">Next (Pre-release)</a> </li> <li class="version"> <a href="../components/4.4.x/index.html">4.4.x (LTS)</a> </li> <li class="version"> <a href="../components/4.0.x/index.html">4.0.x (LTS)</a> </li> <li class="version"> <a href="../components/3.22.x/index.html">3.22.x (LTS)</a> </li> <li class="version"> <a href="../components/3.21.x/index.html">3.21.x (LTS)</a> </li> </ul></li> <li class="component"> <span class="title"> <a href="../camel-core/index.html">Camel Core</a> </span></li> <li class="component"><span class="title">Camel K</span> <ul class="versions"> <li class="version"> <a href="../camel-k/next/index.html">Next (Pre-release)</a> </li> <li class="version"> <a href="../camel-k/2.3.x/index.html">2.3.x</a> </li> <li class="version"> <a href="../camel-k/2.2.x/index.html">2.2.x</a> </li> </ul></li> <li class="component"><span class="title">Camel Kafka Connector</span> <ul class="versions"> <li class="version"> <a href="../camel-kafka-connector/next/index.html">Next (Pre-release)</a> </li> <li class="version"> <a href="../camel-kafka-connector/4.0.x/index.html">4.0.x (LTS)</a> </li> </ul></li> <li class="component"><span class="title">Kamelet Catalog</span> <ul class="versions"> <li class="version"> <a href="../camel-kamelets/next/index.html">Next (Pre-release)</a> </li> <li class="version"> <a href="../camel-kamelets/4.4.x/index.html">4.4.x (LTS)</a> </li> <li class="version"> <a href="../camel-kamelets/4.0.x/index.html">4.0.x (LTS)</a> </li> </ul></li> <li class="component"><span class="title">Camel Karaf</span> <ul class="versions"> <li class="version"> <a href="../camel-karaf/3.22.x/index.html">3.22.x (LTS)</a> </li> <li class="version"> <a href="../camel-karaf/3.21.x/index.html">3.21.x (LTS)</a> </li> </ul></li> <li class="component"><span class="title">Camel Quarkus</span> <ul class="versions"> <li class="version"> <a href="../camel-quarkus/next/index.html">Next (Pre-release)</a> </li> <li class="version"> <a href="../camel-quarkus/3.8.x/index.html">3.8.x</a> </li> <li class="version"> <a href="../camel-quarkus/3.2.x/index.html">3.2.x</a> </li> </ul></li> <li class="component"><span class="title">Camel Spring Boot</span> <ul class="versions"> <li class="version"> <a href="../camel-spring-boot/next/index.html">Next (Pre-release)</a> </li> <li class="version"> <a href="../camel-spring-boot/4.4.x/index.html">4.4.x (LTS)</a> </li> <li class="version"> <a href="../camel-spring-boot/4.0.x/index.html">4.0.x (LTS)</a> </li> <li class="version"> <a href="../camel-spring-boot/3.22.x/index.html">3.22.x (LTS)</a> </li> <li class="version"> <a href="../camel-spring-boot/3.21.x/index.html">3.21.x (LTS)</a> </li> </ul></li> </ul> </div> </div> </aside> </div> <main class="article"> <nav class="toolbar" aria-label="Toolbar"> <button class="nav-toggle" type="button" aria-label="Toggle submenu"></button> <nav class="breadcrumbs" aria-label="breadcrumbs"> <ul> <li><a href="index.html">User manual</a></li> <li><a href="camel-3x-upgrade-guide-3_2.html">Apache Camel 3.x Upgrade Guide</a></li> </ul> </nav> <div class="edit-this-page"><a href="https://github.com/apache/camel/edit/main/docs/user-manual/modules/ROOT/pages/camel-3x-upgrade-guide-3_2.adoc">Edit this Page</a></div> </nav> <div class="content"> <article class="doc"> <h1 class="page">Apache Camel 3.x Upgrade Guide</h1> <div id="preamble"> <div class="sectionbody"> <div class="paragraph"> <p>This document is for helping you upgrade your Apache Camel application from Camel 3.x to 3.y. For example if you are upgrading Camel 3.0 to 3.2, then you should follow the guides from both 3.0 to 3.1 and 3.1 to 3.2.</p> </div> </div> </div> <div class="sect1"> <h2 id="_upgrading_camel_3_1_to_3_2"><a class="anchor" href="#_upgrading_camel_3_1_to_3_2"></a>Upgrading Camel 3.1 to 3.2</h2> <div class="sectionbody"> <div class="sect2"> <h3 id="_jndiregistry"><a class="anchor" href="#_jndiregistry"></a>JndiRegistry</h3> <div class="paragraph"> <p>The deprecated class <code>org.apache.camel.impl.JndiRegistry</code> has been removed. The class <code>org.apache.camel.support.jndi.JndiBeanRepository</code> located in <code>org.apache.camel:camel-support</code> should be used instead.</p> </div> </div> <div class="sect2"> <h3 id="_rest_configuration"><a class="anchor" href="#_rest_configuration"></a>Rest Configuration</h3> <div class="paragraph"> <p>The rest configuration has been simplified and there is now a single RestConfiguration instance (<a href="https://issues.apache.org/jira/browse/CAMEL-13844">CAMEL-13844</a>) per Camel Context.</p> </div> <div class="paragraph"> <p>The following methods have been removed:</p> </div> <div class="ulist"> <ul> <li> <p>org.apache.camel.CamelContext#addRestConfiguration(RestConfiguration restConfiguration)</p> </li> <li> <p>org.apache.camel.CamelContext#getRestConfiguration(String component, boolean defaultIfNotFound)</p> </li> <li> <p>org.apache.camel.CamelContext#getRestConfigurations</p> </li> </ul> </div> <div class="paragraph"> <p><a href="https://issues.apache.org/jira/browse/CAMEL-13844" class="bare">https://issues.apache.org/jira/browse/CAMEL-13844</a></p> </div> </div> <div class="sect2"> <h3 id="_camel_cloud"><a class="anchor" href="#_camel_cloud"></a>Camel Cloud</h3> <div class="paragraph"> <p>The following <code>ServiceDiscovery</code> implementation has been removed:</p> </div> <div class="ulist"> <ul> <li> <p>org.apache.camel.impl.cloud.CachingServiceDiscovery</p> </li> <li> <p>org.apache.camel.impl.cloud.CachingServiceDiscoveryFactory</p> </li> </ul> </div> <div class="paragraph"> <p><a href="https://issues.apache.org/jira/browse/CAMEL-14813" class="bare">https://issues.apache.org/jira/browse/CAMEL-14813</a></p> </div> </div> <div class="sect2"> <h3 id="_camel_with_karaf_and_osgi"><a class="anchor" href="#_camel_with_karaf_and_osgi"></a>Camel with Karaf and OSGi</h3> <div class="paragraph"> <p>Camel on Apache Karaf / OSGi has been moved to its own project at: <a href="https://github.com/apache/camel-karaf" class="bare">https://github.com/apache/camel-karaf</a></p> </div> <div class="paragraph"> <p>The Maven dependencies has changed the groupid from <code>org.apache.camel</code> to <code>org.apache.camel.karaf</code>.</p> </div> <div class="paragraph"> <p>For example the <code>camel-blueprint</code> would be changed from</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;dependency&gt;
&lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
&lt;artifactId&gt;camel-blueprint&lt;/artifactId&gt;
&lt;version&gt;3.1.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre> </div> </div> <div class="paragraph"> <p>To:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;dependency&gt;
&lt;groupId&gt;org.apache.camel.karaf&lt;/groupId&gt;
&lt;artifactId&gt;camel-blueprint&lt;/artifactId&gt;
&lt;version&gt;3.2.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre> </div> </div> <div class="paragraph"> <p>The Camel Karaf features are the same as before, you can still install Camel in Karaf shell via:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-text hljs" data-lang="text">feature:repo-add camel 3.2.0
feature:install camel</code></pre> </div> </div> <div class="sect3"> <h4 id="_other_components_involved"><a class="anchor" href="#_other_components_involved"></a>Other components involved</h4> <div class="ulist"> <ul> <li> <p>Camel-test-blueprint</p> </li> </ul> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;dependency&gt;
&lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
&lt;artifactId&gt;camel-test-blueprint&lt;/artifactId&gt;
&lt;version&gt;3.1.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre> </div> </div> <div class="paragraph"> <p>To:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;dependency&gt;
&lt;groupId&gt;org.apache.camel.karaf&lt;/groupId&gt;
&lt;artifactId&gt;camel-test-blueprint&lt;/artifactId&gt;
&lt;version&gt;3.2.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre> </div> </div> <div class="ulist"> <ul> <li> <p>Camel-test-karaf</p> </li> </ul> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;dependency&gt;
&lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
&lt;artifactId&gt;camel-test-karaf&lt;/artifactId&gt;
&lt;version&gt;3.1.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre> </div> </div> <div class="paragraph"> <p>To:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;dependency&gt;
&lt;groupId&gt;org.apache.camel.karaf&lt;/groupId&gt;
&lt;artifactId&gt;camel-test-karaf&lt;/artifactId&gt;
&lt;version&gt;3.2.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre> </div> </div> <div class="ulist"> <ul> <li> <p>Camel-eventadmin</p> </li> </ul> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;dependency&gt;
&lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
&lt;artifactId&gt;camel-eventadmin&lt;/artifactId&gt;
&lt;version&gt;3.1.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre> </div> </div> <div class="paragraph"> <p>To:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;dependency&gt;
&lt;groupId&gt;org.apache.camel.karaf&lt;/groupId&gt;
&lt;artifactId&gt;camel-eventadmin&lt;/artifactId&gt;
&lt;version&gt;3.2.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre> </div> </div> <div class="ulist"> <ul> <li> <p>Camel-kura</p> </li> </ul> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;dependency&gt;
&lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
&lt;artifactId&gt;camel-kura&lt;/artifactId&gt;
&lt;version&gt;3.1.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre> </div> </div> <div class="paragraph"> <p>To:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;dependency&gt;
&lt;groupId&gt;org.apache.camel.karaf&lt;/groupId&gt;
&lt;artifactId&gt;camel-kura&lt;/artifactId&gt;
&lt;version&gt;3.2.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre> </div> </div> <div class="ulist"> <ul> <li> <p>Camel-osgi-activator</p> </li> </ul> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;dependency&gt;
&lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
&lt;artifactId&gt;camel-osgi-activator&lt;/artifactId&gt;
&lt;version&gt;3.1.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre> </div> </div> <div class="paragraph"> <p>To:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;dependency&gt;
&lt;groupId&gt;org.apache.camel.karaf&lt;/groupId&gt;
&lt;artifactId&gt;camel-osgi-activator&lt;/artifactId&gt;
&lt;version&gt;3.2.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre> </div> </div> <div class="ulist"> <ul> <li> <p>Camel-paxlogging</p> </li> </ul> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;dependency&gt;
&lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
&lt;artifactId&gt;camel-paxlogging&lt;/artifactId&gt;
&lt;version&gt;3.1.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre> </div> </div> <div class="paragraph"> <p>To:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;dependency&gt;
&lt;groupId&gt;org.apache.camel.karaf&lt;/groupId&gt;
&lt;artifactId&gt;camel-paxlogging&lt;/artifactId&gt;
&lt;version&gt;3.2.0&lt;/version&gt;
&lt;/dependency&gt;</code></pre> </div> </div> </div> <div class="sect3"> <h4 id="_introducing_a_camel_karaf_bom"><a class="anchor" href="#_introducing_a_camel_karaf_bom"></a>Introducing a camel-karaf-bom</h4> <div class="paragraph"> <p>We introduce a camel-karaf-bom too, so the end-users should be able to have all of this dependencies easier:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"> &lt;dependencyManagement&gt;
&lt;dependencies&gt;
&lt;!-- Add Camel BOM --&gt;
&lt;dependency&gt;
&lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
&lt;artifactId&gt;camel-bom&lt;/artifactId&gt;
&lt;version&gt;${project.version}&lt;/version&gt;
&lt;type&gt;pom&lt;/type&gt;
&lt;scope&gt;import&lt;/scope&gt;
&lt;/dependency&gt;
&lt;!-- Add Camel Karaf BOM --&gt;
&lt;dependency&gt;
&lt;groupId&gt;org.apache.camel.karaf&lt;/groupId&gt;
&lt;artifactId&gt;camel-karaf-bom&lt;/artifactId&gt;
&lt;version&gt;${camel.karaf.version}&lt;/version&gt;
&lt;type&gt;pom&lt;/type&gt;
&lt;scope&gt;import&lt;/scope&gt;
&lt;/dependency&gt;
&lt;/dependencies&gt;
&lt;/dependencyManagement&gt;</code></pre> </div> </div> <div class="paragraph"> <p>In this way you&#8217;ll get both the boms and all the "goodies"</p> </div> </div> </div> <div class="sect2"> <h3 id="_camel_elytron"><a class="anchor" href="#_camel_elytron"></a>camel-elytron</h3> <div class="paragraph"> <p>Transitive dependencies from org.wildfly.security:wildfly-elytron were removed.</p> </div> </div> <div class="sect2"> <h3 id="_camel_spark_rest"><a class="anchor" href="#_camel_spark_rest"></a>camel-spark-rest</h3> <div class="paragraph"> <p>This component has been removed. Use any of the other REST capable components, such as <code>camel-jetty</code>, <code>camel-netty-http</code> or <code>camel-undertow</code>.</p> </div> </div> <div class="sect2"> <h3 id="_eips_with_cachesize_option"><a class="anchor" href="#_eips_with_cachesize_option"></a>EIPs with cacheSize option</h3> <div class="paragraph"> <p>The <code>cacheSize</code> option on EIPs has been improved to reduce memory usage when the cache is disabled by setting the value to -1. One of the optimizations is that new endpoints will not be added to the endpoint registry, but discarded after use. This avoids storing additional endpoints in the cache (memory) as the cache should be disabled (cacheSize=-1).</p> </div> <div class="paragraph"> <p>See more details in the documentation for the <code>cacheSize</code> option on the EIPs.</p> </div> </div> <div class="sect2"> <h3 id="_configuring_components_via_java_setters"><a class="anchor" href="#_configuring_components_via_java_setters"></a>Configuring components via Java setters</h3> <div class="paragraph"> <p>Configuring Camel components from plain Java code has changed in some components where they were using delegate setters for a nested configuration class. These delegates has been removed, to ensure configuration is more consistent and aligned with how endpoints is configured as well, and by using source code generated configurer classes.</p> </div> <div class="paragraph"> <p>The following Camel components has been affected and changed on the component level:</p> </div> <div class="ulist"> <ul> <li> <p>camel-aws</p> </li> <li> <p>camel-aws2</p> </li> <li> <p>camel-consul</p> </li> <li> <p>camel-etcd</p> </li> <li> <p>camel-infinispan</p> </li> <li> <p>camel-kafka</p> </li> <li> <p>camel-servicenow</p> </li> <li> <p>camel-ssh</p> </li> <li> <p>camel-stomp</p> </li> <li> <p>camel-xmlsecurity</p> </li> <li> <p>camel-yammer</p> </li> </ul> </div> <div class="paragraph"> <p>This only affects if you are configuring these components using Java code or XML <code>&lt;bean&gt;</code> style.</p> </div> <div class="paragraph"> <p>For example</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">KafkaComponent kafka = new KafkaComponent();
kafka.setBrokers("mybroker1:1234,mybroker2:1234");</code></pre> </div> </div> <div class="paragraph"> <p>Should now be:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">KafkaComponent kafka = new KafkaComponent();
kafka.getConfiguration().setBrokers("mybroker1:1234,mybroker2:1234");</code></pre> </div> </div> <div class="paragraph"> <p>And in XML:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;bean id="kafka" class="org.apache.camel.component.kafka.KafkaComponent"&gt;
&lt;property name="brokers" value="mybroker1:1234,mybroker2:1234"/&gt;
&lt;/bean&gt;</code></pre> </div> </div> <div class="paragraph"> <p>Should now be:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;bean id="kafka" class="org.apache.camel.component.kafka.KafkaComponent"&gt;
&lt;property name="configuration"&gt;
&lt;property name="brokers" value="mybroker1:1234,mybroker2:1234"/&gt;
&lt;/property&gt;
&lt;/bean&gt;</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_configuring_components_via_spring_boot_auto_configuration"><a class="anchor" href="#_configuring_components_via_spring_boot_auto_configuration"></a>Configuring components via Spring Boot auto configuration</h3> <div class="paragraph"> <p>Configuring Camel spring boot components has changed its option keys to be flattened and have the <code>.configuration</code> prefix removed now.</p> </div> <div class="paragraph"> <p>Before in application.properties</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-properties hljs" data-lang="properties">camel.component.kafka.configuration.brokers=mybroker1:1234,mybroker2:1234</code></pre> </div> </div> <div class="paragraph"> <p>Should now be</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-properties hljs" data-lang="properties">camel.component.kafka.brokers=mybroker1:1234,mybroker2:1234</code></pre> </div> </div> <div class="paragraph"> <p>This applies to all the Camel spring boot <em>starter</em> JARs where basically <code>.configuration</code> should be removed.</p> </div> </div> <div class="sect2"> <h3 id="_configuring_camel_activemq_camel_amqp_and_camel_stomp_via_spring_boot_auto_configuration"><a class="anchor" href="#_configuring_camel_activemq_camel_amqp_and_camel_stomp_via_spring_boot_auto_configuration"></a>Configuring camel-activemq, camel-amqp and camel-stomp via Spring Boot auto configuration</h3> <div class="paragraph"> <p>When configuring these components from spring boot auto-configuration then the URL for the broker was named <code>broker-u-r-l</code> in the spring boot auto configuration support. This has been renamed to <code>broker-url</code> and a few other options too.</p> </div> <div class="paragraph"> <p>Before:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-properties hljs" data-lang="properties">camel.component.activemq.broker-u-r-l=tcp://localhost:61616</code></pre> </div> </div> <div class="paragraph"> <p>After:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-properties hljs" data-lang="properties">camel.component.activemq.broker-url=tcp://localhost:61616</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_camel_any23"><a class="anchor" href="#_camel_any23"></a>camel-any23</h3> <div class="paragraph"> <p>The XML DSL has changed for the <code>&lt;configuration&gt;</code> element, which now is flattened so the key/values should be configured on it directly:</p> </div> <div class="paragraph"> <p>Before:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;dataFormats&gt;
&lt;any23 id="any23" baseURI ="http://mock.foo/bar" outputFormat="TURTLE" &gt;
&lt;configuration&gt;
&lt;property key="any23.extraction.metadata.nesting" value="off" /&gt;
&lt;property key="another-key" value="another-value" /&gt;
&lt;/configuration&gt;
&lt;extractors&gt;html-head-title&lt;/extractors&gt;
&lt;/any23&gt;
&lt;/dataFormats&gt;</code></pre> </div> </div> <div class="paragraph"> <p>After:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;dataFormats&gt;
&lt;any23 id="any23" baseURI ="http://mock.foo/bar" outputFormat="TURTLE" &gt;
&lt;configuration key="any23.extraction.metadata.nesting" value="off"/&gt;
&lt;configuration key="another-key" value="another-value"/&gt;
&lt;extractors&gt;html-head-title&lt;/extractors&gt;
&lt;/any23&gt;
&lt;/dataFormats&gt;</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_camel_avro"><a class="anchor" href="#_camel_avro"></a>camel-avro</h3> <div class="paragraph"> <p>The avro component and data format has been split up into two JARs. The dataformat is in <code>camel-avro</code> JAR and the component in <code>camel-avro-rpc</code> JAR.</p> </div> </div> <div class="sect2"> <h3 id="_camel_infinispan"><a class="anchor" href="#_camel_infinispan"></a>camel-infinispan</h3> <div class="paragraph"> <p>Camel now requires endpoint URIs to include context-path which means the endpoint URI <code>infinispan</code> should be changed to <code>infinispan:current</code>.</p> </div> </div> <div class="sect2"> <h3 id="_google_pubnub"><a class="anchor" href="#_google_pubnub"></a>google-pubnub</h3> <div class="paragraph"> <p>The google-pubnub component has been improved to use a new Java library and become faster.</p> </div> <div class="paragraph"> <p>Support for Apache Karaf has been removed.</p> </div> </div> <div class="sect2"> <h3 id="_camel_xstream"><a class="anchor" href="#_camel_xstream"></a>camel-xstream</h3> <div class="paragraph"> <p>The XML DSL has changed for the <code>&lt;converters&gt;</code>, <code>&lt;alias&gt;</code>, <code>implicitCollections</code>, and <code>omitFields</code> elements, which now is flattened so the key/values should be configured on it directly.</p> </div> <div class="paragraph"> <p>Before:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;xstream id="xstream-1" mode="NO_REFERENCES"
permissions="-org.apache.camel.dataformat.xstream.*,org.apache.camel.dataformat.xstream.PurchaseHistory,org.apache.camel.dataformat.xstream.PurchaseOrder"&gt;
&lt;converters&gt;
&lt;converter class="org.apache.camel.dataformat.xstream.XStreamConfigurationTest$PurchaseOrderConverter" /&gt;
&lt;/converters&gt;
&lt;aliases&gt;
&lt;alias name="purchase-order" class="org.apache.camel.dataformat.xstream.PurchaseOrder" /&gt;
&lt;/aliases&gt;
&lt;implicitCollections&gt;
&lt;class name="org.apache.camel.dataformat.xstream.PurchaseHistory"&gt;
&lt;field&gt;history&lt;/field&gt;
&lt;/class&gt;
&lt;/implicitCollections&gt;
&lt;/xstream&gt;</code></pre> </div> </div> <div class="paragraph"> <p>After:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;xstream id="xstream-1" mode="NO_REFERENCES"
permissions="-org.apache.camel.dataformat.xstream.*,org.apache.camel.dataformat.xstream.PurchaseHistory,org.apache.camel.dataformat.xstream.PurchaseOrder"&gt;
&lt;converters key="purchase-converter" value="org.apache.camel.dataformat.xstream.XStreamConfigurationTest$PurchaseOrderConverter"/&gt;
&lt;aliases key="purchase-order" value="org.apache.camel.dataformat.xstream.PurchaseOrder"/&gt;
&lt;implicitCollections key="org.apache.camel.dataformat.xstream.PurchaseHistory" value="history"/&gt;
&lt;/xstream&gt;</code></pre> </div> </div> <div class="paragraph"> <p>Multiple values for <code>implicitCollections</code> and <code>omitFields</code> can be separated by comma</p> </div> <div class="paragraph"> <p>For example:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;implicitCollections key="org.apache.camel.dataformat.xstream.PurchaseHistory" value="history,adress"/&gt;</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_camel_weather"><a class="anchor" href="#_camel_weather"></a>camel-weather</h3> <div class="paragraph"> <p>This component has been upgraded from using Apache Http Client 3.x to 4.x and is therefore not fully backwards compatible. Some options for configurer and setting proxy is removed. You can however configure this directly on a custom <code>HttpClient</code> instance and set this on the <code>WeatherComponent</code> to use.</p> </div> </div> <div class="sect2"> <h3 id="_endpoint_uris_without_context_path"><a class="anchor" href="#_endpoint_uris_without_context_path"></a>Endpoint URIs without context path</h3> <div class="paragraph"> <p>Previously Camel components may work by referring to their name only without a colon and context path (eg <code>log</code>) that for a few components would allow them to create an endpoint anyway.</p> </div> <div class="paragraph"> <p>Now this is not allowed and Camel will throw an <code>NoSuchEndpointException</code>.</p> </div> <div class="paragraph"> <p>An endpoint by its logical id can still be referred by the id only, eg</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">Endpoint endpoint = camelContext.getEndpoint("myCoolEndpoint");</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_error_handling"><a class="anchor" href="#_error_handling"></a>Error handling</h3> <div class="paragraph"> <p>The context scope error handling has been modified a bit. The processors in those <code>onException</code> and <code>onCompletion</code> are not shared between routes anymore. This should have little effect in most cases. If there is a need to have a single set of processors involved (such as when using a loadbalancer or other stateful patterns), then an intermediary route needs to be used. The following excerpt:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">onException(Exception.class).handled(true)
.loadBalance().roundRobin().id("round")
.to("mock:error", "mock:error2", "mock:error3");</code></pre> </div> </div> <div class="olist lowerroman"> <ol class="lowerroman" type="i"> <li> <p>needs to be rewritten as:</p> </li> </ol> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">onException(Exception.class).handled(true).to("direct:error");
from("direct:error").loadBalance().roundRobin().id("round")
.to("mock:error", "mock:error2", "mock:error3");</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_camel_cluster"><a class="anchor" href="#_camel_cluster"></a>camel-cluster</h3> <div class="paragraph"> <p>The base support for cluster in <code>org.apache.camel.cluster</code> has been moved out of <code>camel-core-engine</code> into separate JAR named <code>camel-cluster</code>.</p> </div> </div> <div class="sect2"> <h3 id="_configuring_milli_seconds"><a class="anchor" href="#_configuring_milli_seconds"></a>Configuring milli seconds</h3> <div class="admonitionblock note"> <div class="table-wrapper"><table> <tr> <td class="icon"> <i class="fa icon-note" title="Note"></i> </td> <td class="content"> If upgrading to Camel 3.4 or newer then do NOT do this because Camel 3.4 adds back support for this. </td> </tr> </table></div> </div> <div class="paragraph"> <p>Camel was using a type converter from <code>String</code> &#8594; <code>long</code> that accepted a time pattern which allowed to configure long values such as <code>2s</code> for 2 seconds, e.g. <code>2000</code>. And more complex such as <code>8h15m</code> for 8 hours and 15 minutes.</p> </div> <div class="paragraph"> <p>However as this was implemented as part of <code>String</code> &#8594; <code>long</code> type conversion which then adds a little bit of overhead during routing, when converting from String to plain numbers.</p> </div> <div class="paragraph"> <p>To make Camel routing engine as fast as possible this feature has been removed.</p> </div> <div class="paragraph"> <p>For example a timer with a 5 second period</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">from("timer:foo?period=5s")</code></pre> </div> </div> <div class="paragraph"> <p>Should now be specified as numeric only:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">from("timer:foo?period=5000")</code></pre> </div> </div> </div> <div class="sect2"> <h3 id="_main_in_camel_spring"><a class="anchor" href="#_main_in_camel_spring"></a>Main in camel-spring</h3> <div class="paragraph"> <p>The <code>org.apache.camel.spring.Main</code> class has been moved out of <code>camel-spring</code> JAR into its own JAR named <code>camel-spring-main</code>.</p> </div> </div> <div class="sect2"> <h3 id="_main_in_camel_test_blueprint"><a class="anchor" href="#_main_in_camel_test_blueprint"></a>Main in camel-test-blueprint</h3> <div class="paragraph"> <p>The <code>org.apache.camel.test.blueprint.Main</code> class has been renamed to <code>org.apache.camel.test.blueprint.Main</code> and moved into its own <code>camel-test-blueprint</code> JAR.</p> </div> <div class="paragraph"> <p>To use the camel-maven-plugin goal <code>camel:run</code> with OSGi plugin, you now need to add the following dependency to the classpath <code>org.apache.camel.karaf:camel-blueprint-main</code>.</p> </div> </div> <div class="sect2"> <h3 id="_api_changes"><a class="anchor" href="#_api_changes"></a>API changes</h3> <div class="sect3"> <h4 id="_defaultcomponent"><a class="anchor" href="#_defaultcomponent"></a>DefaultComponent</h4> <div class="paragraph"> <p>The deprecated method <code>preProcessUri</code> has been removed.</p> </div> </div> <div class="sect3"> <h4 id="_camelcontext"><a class="anchor" href="#_camelcontext"></a>CamelContext</h4> <div class="paragraph"> <p>The method <code>getEndpoint</code> now throws <code>NoSuchEndpointException</code> directly instead of being wrapped within an <code>FailedToResolveEndpoint</code>.</p> </div> </div> <div class="sect3"> <h4 id="_javauuidgenerator"><a class="anchor" href="#_javauuidgenerator"></a>JavaUuidGenerator</h4> <div class="paragraph"> <p>The <code>org.apache.camel.impl.engine.JavaUuidGenerator</code> class has been removed. Its a very slow UUID generator and its not recommended to be used.</p> </div> </div> <div class="sect3"> <h4 id="_propertiescomponent"><a class="anchor" href="#_propertiescomponent"></a>PropertiesComponent</h4> <div class="paragraph"> <p>The <code>org.apache.camel.component.properties.PropertiesFunction</code> has been moved to <code>org.apache.camel.spi.PropertiesFunction</code> and its now possible to add custom functions on the <code>org.apache.camel.spi.PropertiesComponent</code> interface.</p> </div> </div> <div class="sect3"> <h4 id="_jmx_connector_configuration_removed"><a class="anchor" href="#_jmx_connector_configuration_removed"></a>JMX Connector configuration removed</h4> <div class="paragraph"> <p>The JMX Connector configuration in camel-management has been <a href="https://issues.apache.org/jira/browse/CAMEL-14811">removed</a> in Camel 3.2.0. If you want to support the ability to use JMX with Camel remotely, then just use the default JVM JMX remote capabilities. For example, use the following (insecure) JVM settings to be able to manage Camel remotely on localhost, port 9913:</p> </div> <div class="listingblock"> <div class="content"> <pre class="highlightjs highlight"><code class="language-none hljs">-Dcom.sun.management.jmxremote.port=9913
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=localhost</code></pre> </div> </div> </div> </div> </div> </div> </article> <aside class="toc sidebar" aria-label="Table of contents" data-title="Contents" data-levels="2"> <div class="toc-menu"></div> </aside> </div> </main> </div> <div class="footer-tools"> <a href="#top" title="Reach the top of the page">Back to top</a> </div> <footer> <div class="footer"> <figure class="logo"> <img src="../_/img/logo-d-a567cee6fa.svg" class="logo-small mt-60" alt="Apache Camel Logo" aria-label="white silhouette of a camel in front of a sand dune"> </figure> <input id="footer-toggle-overview" type="checkbox" title="Show/Hide Overview section"> <dl> <dt><label for="footer-toggle-overview">Overview</label><label for="footer-toggle-overview">&#65291;</label></dt> <dd><a href="../blog/">Blog</a></dd> <dd><a href="../docs/">Documentation</a></dd> <dd><a href="../community/support/">Community</a></dd> <dd><a href="../download/">Download</a></dd> </dl> <input id="footer-toggle-documentation" type="checkbox" title="Show/Hide Documentation section"> <dl> <dt><label for="footer-toggle-documentation">Documentation</label><label for="footer-toggle-documentation">&#65291;</label></dt> <dd><a href="../manual/">User Manual</a></dd> <dd><a href="../components/next/index.html">Components</a></dd> <dd><a href="../camel-k/next/">Camel-K</a></dd> <dd><a href="../camel-kafka-connector/next/">Camel Kafka Connector</a></dd> <dd><a href="../camel-quarkus/next/">Camel Quarkus</a></dd> <dd><a href="../camel-spring-boot/next/">Camel Spring Boot</a></dd> <dd><a href="../camel-karaf/3.22.x/">Camel Karaf</a></dd> <dd><a href="../manual/faq/index.html">FAQ</a></dd> </dl> <input id="footer-toggle-community" type="checkbox" title="Show/Hide Community section"> <dl> <dt><label for="footer-toggle-community">Community</label><label for="footer-toggle-community">&#65291;</label></dt> <dd><a href="../community/support/">Support</a></dd> <dd><a href="../community/contributing/">Contributing</a></dd> <dd><a href="../community/mailing-list/">Mailing Lists</a></dd> <dd><a href="../community/user-stories/">User stories</a></dd> <dd><a href="../community/articles/">Articles</a></dd> <dd><a href="../community/books/">Books</a></dd> <dd><a href="../community/team/">Team</a></dd> </dl> <input id="footer-toggle-about" type="checkbox" title="Show/Hide Acknowledgements section"> <dl> <dt><label for="footer-toggle-about">About</label><label for="footer-toggle-about">&#65291;</label></dt> <dd><a href="../acknowledgments/">Acknowledgments</a></dd> <dd><a target="_blank" rel="noopener noreferrer nofollow" href="https://www.apache.org/events/current-event.html" title="Apache Events">Apache Events</a></dd> <dd><a target="_blank" rel="noopener noreferrer nofollow" href="https://www.apache.org/licenses/" title="License">License</a></dd> <dd><a target="_blank" rel="noopener noreferrer nofollow" href="https://www.apache.org/security/" title="Security">Security</a></dd> <dd><a target="_blank" rel="noopener noreferrer nofollow" href="https://www.apache.org/foundation/sponsorship.html" title="Sponsorship">Sponsorship</a></dd> <dd><a target="_blank" rel="noopener noreferrer nofollow" href="https://www.apache.org/foundation/thanks.html" title="Thanks">Thanks</a></dd> </dl> <p class="remark"> &copy; 2004-2024 The <a href="https://apache.org">Apache Software Foundation</a>.<br> Apache Camel, Camel, Apache, the Apache feather logo, and the Apache Camel project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners. </p> <div class="resources"> <div class="context"> <a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a> </div> <div class="context"> <a target="_blank" rel="noopener noreferrer nofollow" href="https://www.apache.org/foundation/policies/conduct">Code of Conduct</a> </div> <div class="context"> <a href="../sitemap/">Sitemap</a> </div> </div> <div class="footer-icons"> <a rel="noopener noreferrer nofollow" href="https://github.com/apache/camel/" title="Collaborate on GitHub"><svg class="brand-icon" focusable="false"><use xlink:href="../_/img/brand-logos-f2e689f4d4.svg#github"/></svg></a> <a rel="noopener noreferrer nofollow" href="https://camel.zulipchat.com" title="Chat on Zulip"><svg class="brand-icon" focusable="false"><use xlink:href="../_/img/brand-logos-f2e689f4d4.svg#zulip"/></svg></a> <a rel="noopener noreferrer nofollow" href="https://twitter.com/ApacheCamel" title="Follow Apache Camel on Twitter"><svg class="brand-icon" focusable="false"><use xlink:href="../_/img/brand-logos-f2e689f4d4.svg#twitter"/></svg></a> <a rel="noopener noreferrer nofollow" href="https://www.linkedin.com/groups/2447439/" title="Apache Camel group on Linkedin"><svg class="brand-icon" focusable="false"><use xlink:href="../_/img/brand-logos-f2e689f4d4.svg#linkedin"/></svg></a> </div> </div> </footer> <script src="../_/js/vendor/algoliasearch-bad45193e2.js"></script> <script src="../_/js/site-c215fb6972.js"></script> <script async src="../_/js/vendor/highlight-621a10fe1b.js"></script> <script async src="../_/js/vendor/svg4everybody-a0c573f2b9.js"></script> <script async src="../_/js/vendor/tabs-5aea11bcf5.js" data-sync-storage-key="preferred-tab"></script> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "Organization", "name": "Apache Camel", "url": "https://camel.apache.org", "sameAs": [ "https://twitter.com/ApacheCamel" ], "logo": "../_/img/logo-d-a567cee6fa.svg", "description": "Apache Camel ™ is a versatile open-source integration framework based on known Enterprise Integration Patterns. Camel empowers you to define routing and mediation rules in a variety of domain-specific languages, including a Java-based Fluent API, Spring or Blueprint XML Configuration files, and a Scala DSL." } </script> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "BreadcrumbList", "itemListElement": [{ "@type": "ListItem", "position": 1, "name": "Apache Camel", "item": "https://camel.apache.org/" }, { "@type": "ListItem", "position": 2, "name": "User manual", "item": "https://camel.apache.org/manual/index.html" }, { "@type": "ListItem", "position": 3, "name": "default", "item": "https://camel.apache.org/manual/index.html" }, { "@type": "ListItem", "position": 4, "name": "Apache Camel 3.x Upgrade Guide", "item": "https://camel.apache.org/manual/camel-3x-upgrade-guide-3_2.html" }] } </script> </body> </html>