Fuse 7 アプリケーションの Red Hat build of Apache Camel for Quarkus への移行


Red Hat build of Apache Camel 4.0

Fuse 7 アプリケーションの Red Hat build of Apache Camel for Quarkus への移行

Red Hat build of Apache Camel Documentation Team Red Hat build of Apache Camel Support Team http://access.redhat.com/support

概要

「Fuse 7 アプリケーションの Red Hat build of Apache Camel for Quarkus への移行」では、Red Hat Fuse 7 から Red Hat build of Apache Camel for Quarkus への移行に関する情報を紹介します。

はじめに

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。

第1章 Fuse 7 アプリケーションの Red Hat build of Apache Camel for Quarkus への移行の概要

Fuse

Red Hat Fuse は、Apache Camel や Apache Karaf などのオープンソースコミュニティーに基づくアジャイル統合ソリューションです。Red Hat Fuse は軽量かつ柔軟性のある統合プラットフォームで、オンプレミスのクラウドの迅速な統合を可能にします。

Red Hat Fuse は、次の 3 つの異なるランタイムを使用して実行できます。

  • OSGi アプリケーションをサポートする Karaf
  • Spring Boot
  • JBoss EAP (Enterprise Application Platform)

Red Hat build of Apache Camel for Quarkus

Red Hat build of Apache Camel for Quarkus は、Apache Camel とその膨大なコンポーネントライブラリーの統合機能を Quarkus ランタイムに提供します。Red Hat build of Camel Quarkus は、多くの Camel コンポーネントに Quarkus エクステンションを提供します。

Camel Quarkus は、Camel 3 に追加された多くのパフォーマンス上の改善点を活用します。これにより、メモリーフットプリントが削減され、リフレクションへの依存が減り、起動時間が短縮されます。

Red Hat build of Apache Camel for Quarkus アプリケーションでは、Java DSL を使用して Camel ルートを定義するため、Fuse アプリケーションで使用する Camel ルートを CEQ に移行できます。

Camel on EAP

OSGI 依存関係管理の概念に従う Karaf と、JEE 仕様に従う EAP は、コンテナー化されたアプリケーションの採用によって影響を受けるアプリケーションサーバーです。

コンテナーは、アプリケーションをパッケージ化するための主要な方法として出現しました。その結果、デプロイメント、スケーリング、クラスタリング、負荷分散を含むアプリケーション管理の役割が、アプリケーションサーバーから Kubernetes を使用したコンテナーオーケストレーションに移りました。

EAP は Red Hat Openshift で引き続きサポートされますが、Camel 3 は EAP サーバーではサポートされなくなりました。したがって、EAP サーバー上で Fuse 7 アプリケーションを実行している場合は、アプリケーションを Red Hat Build of Apache Camel for Spring Boot または Red Hat build of Apache Camel for Quarkus に移行することを検討する必要があります。その際には、移行プロセスを利用して、モノリスアーキテクチャーからマイクロサービスアーキテクチャーへのアプリケーションの再設計、または部分的な再設計を検討することを推奨します。

Openshift を使用しない場合は、Spring Boot および Quarkus 用にアプリケーションをデプロイする際には RHEL 仮想マシンが引き続き有効なアプローチであり、Quarkus はネイティブコンパイル機能のメリットも享受します。このようなプラットフォーム上でマイクロサービスアーキテクチャーの管理をサポートするツールを評価することが重要です。

Red Hat は、Red Hat Ansible for Middleware コレクション を使用し、Ansible を通じてこの機能を提供します。

1.1. 標準的な移行パス

1.1.1. XML パス

Spring XML または Blueprint XML で記述された Fuse アプリケーションは、XML ベースのフレーバーに移行する必要があり、Spring Boot または Quarkus ランタイムのどちらかをターゲットにできます (移行手順はどちらも同じです)。

1.1.2. Java パス

Java DSL で記述された Fuse アプリケーションは Java ベースのフレーバーに移行する必要があり、移行手順は同じままで Spring Boot または Quarkus ランタイムのいずれかをターゲットにできます。

1.2. アーキテクチャーの変更

Openshift は Fabric8 に代わって Fuse 6 ユーザーのランタイムプラットフォームとなり、Fuse アプリケーションの移行における推奨ターゲットになります。

アプリケーションを移行するときは、次のアーキテクチャーの変更を考慮する必要があります。

  • Fuse 6 アプリケーションが Fabric8 サービスディスカバリーに依存していた場合は、OpenShift で Camel 3 を実行するときに Kubernetes Service Discovery を使用する必要があります。
  • Fuse 6 アプリケーションが OSGi バンドル設定に依存している場合は、OpenShift で Camel 3 を実行するときに Kubernetes ConfigMaps と Secret を使用する必要があります。
  • アプリケーションがファイルベースのルート定義を使用している場合は、OpenShift で Camel 3 を実行するときに AWS S3 テクノロジーの使用を検討してください。
  • アプリケーションが標準のファイルシステムを使用している場合は、結果として得られる Spring Boot または Quarkus アプリケーションを Openshift プラットフォームではなく標準の RHEL 仮想マシンにデプロイする必要があります。
  • SSL 要件を処理する Openshift Router へのインバウンド HTTPS 接続の委譲。
  • Hystrix 機能の Service Mesh への委譲。

第2章 Camel ルートを Fuse 7 から Red Hat build of Apache Camel for Quarkus に移行する

注記

Java DSL、XML IO DSL、または YAML を使用して、Red Hat build of Apache Camel for Quarkus アプリケーションで Camel ルートを定義できます。

2.1. Java DSL ルート移行の例

既存のルート定義を Red Hat build of Apache Camel for Quarkus アプリケーションに直接コピーし、必要な依存関係を Red Hat build of Apache Camel for Quarkus pom.xml ファイルに追加することで、Java DSL ルート定義を Fuse アプリケーションから CEQ に移行できます。

この例では、Java DSL ルートを CEQ アプリケーションの Routes.java という名前のファイルにコピーすることにより、コンテンツベースのルート定義を Fuse 7 アプリケーションから新しい CEQ アプリケーションに移行します。

手順

  1. Web サイト code.quarkus.redhat.com を使用して、この例に必要なエクステンションを選択します。

    • camel-quarkus-file
    • camel-quarkus-xpath
  2. 直前の手順で生成されたプロジェクトファイルの展開先ディレクトリーに移動します。

    $ cd <directory_name>
    Copy to Clipboard Toggle word wrap
  3. src/main/java/org/acme/ サブフォルダーに Routes.java という名前のファイルを作成します。
  4. 次の例のように、Fuse アプリケーションから Routes.java にルート定義を追加します。

    package org.acme;
    
    import org.apache.camel.builder.RouteBuilder;
    
    public class Routes extends RouteBuilder {
    	// Add your Java DSL route definition here
        public void configure() {
    	    from("file:work/cbr/input")
                .log("Receiving order ${file:name}")
                .choice()
                    .when().xpath("//order/customer/country[text() = 'UK']")
                        .log("Sending order ${file:name} to the UK")
                        .to("file:work/cbr/output/uk")
                    .when().xpath("//order/customer/country[text() = 'US']")
                        .log("Sending order ${file:name} to the US")
                        .to("file:work/cbr/output/uk")
                    .otherwise()
                        .log("Sending order ${file:name} to another country")
                        .to("file:work/cbr/output/others");
        }
    
    }
    Copy to Clipboard Toggle word wrap
  5. CEQ アプリケーションをコンパイルします。

    mvn clean compile quarkus:dev
    Copy to Clipboard Toggle word wrap
注記

このコマンドでは、プロジェクトのコンパイル、アプリケーションの起動、Quarkus ツールでのワークスペースの変更監視などを行います。プロジェクトの変更は自動的に実行中のアプリケーションに適用されます。

2.2. Blueprint XML DSL ルートの移行

Blueprint XML ルート定義を Fuse アプリケーションから CEQ に移行するには、camel-quarkus-xml-io-dsl エクステンションを使用し、Fuse アプリケーションのルート定義を Red Hat build of Apache Camel for Quarkus アプリケーションに直接コピーします。次に、必要な依存関係を Red Hat build of Apache Camel for Quarkus pom.xml ファイルに追加し、application.properties ファイル内の Red Hat build of Apache Camel for Quarkus の設定を更新する必要があります。

注記

Red Hat build of Apache Camel for Quarkus は Camel バージョン 4 をサポートしますが、Fuse 7 は Camel バージョン 2 をサポートします。

Red Hat Fuse 7 アプリケーションを CEQ に移行する際の Camel のアップグレードについて、詳細は以下を参照してください。

Camel Quarkus での Bean の使用の詳細は、Red Hat build of Apache Camel for Quarkus を使用したアプリケーションの開発 ガイドの CDI および Camel Bean コンポーネント セクションを参照してください。

2.2.1. XML-IO-DSL の制限事項

camel-quarkus-xml-io-dsl エクステンションを使用すると、Blueprint XML ルート定義の CEQ への移行を支援できます。

camel-quarkus-xml-io-dsl エクステンションは、次の <camelContext> サブ要素のみをサポートします。

  • routeTemplates
  • templatedRoutes
  • rests
  • routes
  • routeConfigurations
注記

Blueprint XML は camel-quarkus-xml-io-dsl エクステンションでサポートされていない他の Bean 定義をサポートしているため、Blueprint XML ルート定義に含まれる他の Bean 定義を書き直す必要がある場合があります。

すべての要素 (XML IO DSL) をそれぞれ別のファイルで定義する必要があります。たとえば、これは Blueprint XML ルート定義の簡単な例です。

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
    <camelContext xmlns="http://camel.apache.org/schema/blueprint">
        <restConfiguration contextPath="/camel" />
        <rest path="/books">
            <get uri="/">
                <to ..../>
            </get>
        </rest>
        <route>
            <from ..../>
        </route>
    </camelContext>
</blueprint>
Copy to Clipboard Toggle word wrap

次のファイルで定義されているように、XML IO DSL を使用して、この Blueprint XML ルート定義を CEQ に移行できます。

src/main/resources/routes/camel-rests.xml

<rests xmlns="http://camel.apache.org/schema/spring">
    <rest path="/books">
    <get path="/">
        <to ..../>
    </get>
    </rest>
</rests>
Copy to Clipboard Toggle word wrap

src/main/resources/routes/camel-routes.xml

<routes xmlns="http://camel.apache.org/schema/spring">
    <route>
        <from ..../>
    </route>
</routes>
Copy to Clipboard Toggle word wrap

<restConfiguration> など、サポートされていない他の要素を定義するには、Java DSL を使用する必要があります。たとえば、次のように、camel-rests.xml ファイルで定義されたルートビルダーを使用します。

src/main/resources/routes/camel-rests.xml

import org.apache.camel.builder.RouteBuilder;
public class Routes extends RouteBuilder {
    public void configure() {
       restConfiguration()
            .contextPath("/camel");
    }
}
Copy to Clipboard Toggle word wrap

2.2.2. Blueprint XML DSL ルート移行の例

注記

XML IO DSL エクステンションの使用に関する詳細は、「Red Hat build of Apache Camel for Quarkus リファレンス」の XML IO DSL ドキュメントを参照してください。

この例では、Blueprint XML ルート定義を CEQ アプリケーションの camel-routes.xml という名前のファイルにコピーすることで、Fuse アプリケーションから新しい CEQ アプリケーションにコンテンツベースのルート定義を移行しています。

手順

  1. Web サイト code.quarkus.redhat.com を使用して、この例で使用する次のエクステンションを選択します。

    • camel-quarkus-xml-io-dsl
    • camel-quarkus-file
    • camel-quarkus-xpath
  2. Generate your application を選択して選択内容を確認し、生成されたプロジェクトを含むアーカイブのダウンロードリンクが記載されたオーバーレイ画面を表示します。
  3. Download the ZIP を選択して、生成されたプロジェクトファイルを含むアーカイブをマシンに保存します。
  4. アーカイブの内容をデプロイメントします。
  5. 直前の手順で生成されたプロジェクトファイルの展開先ディレクトリーに移動します。

    $ cd <directory_name>
    Copy to Clipboard Toggle word wrap
  6. src/main/resources/routes/ ディレクトリーに camel-routes.xml という名前のファイルを作成します。
  7. 次の例 blueprint-example.xml<route> 要素とサブ要素を camel-routes.xml ファイルにコピーします。

    blueprint-example.xml

    <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
        <camelContext id="cbr-example-context" xmlns="http://camel.apache.org/schema/blueprint">
            <route id="cbr-route">
                <from id="_from1" uri="file:work/cbr/input"/>
                <log id="_log1" message="Receiving order ${file:name}"/>
                <choice id="_choice1">
                    <when id="_when1">
                        <xpath id="_xpath1">/order/customer/country = 'UK'</xpath>
                        <log id="_log2" message="Sending order ${file:name} to the UK"/>
                        <to id="_to1" uri="file:work/cbr/output/uk"/>
                    </when>
                    <when id="_when2">
                        <xpath id="_xpath2">/order/customer/country = 'US'</xpath>
                        <log id="_log3" message="Sending order ${file:name} to the US"/>
                        <to id="_to2" uri="file:work/cbr/output/us"/>
                    </when>
                    <otherwise id="_otherwise1">
                        <log id="_log4" message="Sending order ${file:name} to another country"/>
                        <to id="_to3" uri="file:work/cbr/output/others"/>
                    </otherwise>
                </choice>
                <log id="_log5" message="Done processing ${file:name}"/>
            </route>
        </camelContext>
    </blueprint>
    Copy to Clipboard Toggle word wrap

    camel-routes.xml

    <route id="cbr-route">
        <from id="_from1" uri="file:work/cbr/input"/>
        <log id="_log1" message="Receiving order ${file:name}"/>
        <choice id="_choice1">
            <when id="_when1">
                <xpath id="_xpath1">/order/customer/country = 'UK'</xpath>
                <log id="_log2" message="Sending order ${file:name} to the UK"/>
                <to id="_to1" uri="file:work/cbr/output/uk"/>
            </when>
            <when id="_when2">
                <xpath id="_xpath2">/order/customer/country = 'US'</xpath>
                <log id="_log3" message="Sending order ${file:name} to the US"/>
                <to id="_to2" uri="file:work/cbr/output/us"/>
            </when>
            <otherwise id="_otherwise1">
                <log id="_log4" message="Sending order ${file:name} to another country"/>
                <to id="_to3" uri="file:work/cbr/output/others"/>
            </otherwise>
        </choice>
        <log id="_log5" message="Done processing ${file:name}"/>
    </route>
    Copy to Clipboard Toggle word wrap

  8. application.properties を修正します。

    # Camel
    #
    camel.context.name = camel-quarkus-xml-io-dsl-example
    camel.main.routes-include-pattern = file:src/main/resources/routes/camel-routes.xml
    Copy to Clipboard Toggle word wrap
  9. CEQ アプリケーションをコンパイルします。

    mvn clean compile quarkus:dev
    Copy to Clipboard Toggle word wrap
    注記

    このコマンドでは、プロジェクトのコンパイル、アプリケーションの起動、Quarkus ツールでのワークスペースの変更監視などを行います。プロジェクトの変更は自動的に実行中のアプリケーションに適用されます。

第3章 Apache Camel の移行

3.1. Camel 移行ガイドについて

このガイドでは、アプリケーションを移行するときに考慮する必要がある Apache Camel コンポーネントの変更について詳しく説明します。また、次の変更に関する情報を提供します。

  • サポートされる Java バージョン
  • Apache Camel コンポーネントと非推奨コンポーネントの変更
  • API と非推奨 API の変更
  • EIP の更新
  • トレースとヘルスチェックの更新

3.2. Apache Camel 4 への移行

このセクションでは、Apache Camel アプリケーションをバージョン 3.20 以降から 4.0 に移行するのに役立つ情報を提供します。

注記

個々のバージョンについては、以下を参照してください。

Apache Camel Quarkus のアップグレード方法については、以下を参照してください。

3.2.1. Java バージョン

Apache Camel 4 は Java 17 をサポートします。Java 11 のサポートは終了します。

3.2.2. 削除されたコンポーネント

次のコンポーネントが削除されました。

Expand
コンポーネント代替コンポーネント

camel-any23

none

camel-atlasmap

none

camel-atmos

none

camel-caffeine-lrucache

camel-cache、camel-ignite、camel-infinispan

camel-cdi

camel-spring-boot、camel-quarkus

camel-corda

none

camel-directvm

camel-direct

camel-dozer

camel-mapstruct

camel-elasticsearch-rest

camel-elasticsearch

camel-gora

none

camel-hbase

none

camel-hyperledger-aries

none

camel-iota

none

camel-ipfs

none

camel-jbpm

none

camel-jclouds

none

camel-johnzon

camel-jackson、camel-fastjson、camel-gson

camel-microprofile-metrics

camel-micrometer、camel-opentelemetry

camel-milo

none

camel-opentracing

camel-micrometer、camel-opentelemetry

camel-rabbitmq

spring-rabbitmq-component

camel-rest-swagger

camel-openapi-rest

camel-restdsl-swagger-plugin

camel-restdsl-openapi-plugin

camel-resteasy

camel-cxf、camel-rest

camel-solr

none

camel-spark

none

camel-spring-integration

none

camel-swagger-java

camel-openapi-java

camel-websocket

camel-vertx-websocket

camel-websocket-jsr356

camel-vertx-websocket

camel-vertx-kafka

camel-kafka

camel-vm

camel-seda

camel-weka

none

camel-xstream

camel-jacksonxml

camel-zipkin

camel-micrometer、camel-opentelemetry

3.2.3. ロギング

Camel 4 では、ロギングファサード API slf4j-api が 1.7 から 2.0 にアップグレードされました。

3.2.4. JUnit 4

JUnit 4.x ベースの camel-test モジュールはすべて削除されました。テストモジュールはすべて JUnit 5 を使用するようになりました。

3.2.5. API の変更

次の API は非推奨となり、バージョン 4 から削除されました。

  • org.apache.camel.ExchangePattern から InOptionalOut を削除しました。
  • getEndpointMap() メソッドを CamelContext から削除しました。
  • @FallbackConverter を削除しました。代わりに @Converter(fallback = true) を使用する必要があります。
  • @EndpointInject@Produce、および @Consumeuri 属性を削除しました。代わりに value (デフォルト) を使用する必要があります。たとえば、@Produce(uri = "kafka:cheese") は、@Produce("kafka:cheese") に変更する必要があります。
  • @UriEndpointlabel を削除しました。代わりに category を使用する必要があります。
  • ProducerTemplate のすべての asyncCallback メソッドを削除しました。代わりに asyncSend または asyncRequest を使用してください。
  • org.apache.camel.spi.OnCamelContextStart を削除しました。代わりに org.apache.camel.spi.OnCamelContextStarting を使用してください。
  • org.apache.camel.spi.OnCamelContextStop を削除しました。代わりに org.apache.camel.spi.OnCamelContextStopping を使用してください。
  • org.apache.camel.ExtendedCamelContextorg.apache.camel.CamelContext から分離しました。
  • org.apache.camel.CamelContextadapt()getCamelContextExtension に置き換えました。
  • org.apache.camel.Exchange から org.apache.camel.ExtendedExchange を分離しました。
  • org.apache.camel.ExtendedExchangeadapt()getExchangeExtension に置き換えました。
  • Exchange の障害処理ステータスが、ExchangePropertyKey.FAILURE_HANDLED として定義されたプロパティーから、`isFailureHandled()` メソッドを介してアクセスできる ExtendedExchange のメンバーに移動しました。
  • org.apache.camel.util.concurrent.ThreadPoolRejectedPolicy から DiscardDiscardOldest を削除しました。
  • org.apache.camel.builder.SimpleBuilder を削除しました。これは主に、Camel の内部で、場合によっては Java DSL とともに使用されていました。
  • org.apache.camel.support.IntrospectionSupport を、内部使用専用とするために camel-core-engine に移動しました。エンドユーザーは代わりに org.apache.camel.spi.BeanInspection を使用する必要があります。
  • org.apache.camel.catalog.CamelCatalog から archetypeCatalogAsXml メソッドを削除しました。
  • org.apache.camel.health.HealthCheck メソッド isLiveness が、デフォルトで true ではなく false になりました。
  • org.apache.camel.StreamCacheposition メソッドを追加しました。
  • インターフェイス org.apache.camel.main.Listenerconfigure メソッドを削除しました。
  • org.apache.camel.support.EventNotifierSupport 抽象クラスが CamelContextAware を実装するようになりました。
  • CamelContextdumpRoutes のタイプが、boolean から String に変更され、xml または yaml のいずれかを指定できるようになりました。
注記

org.apache.camel.support.PluginHelper を使用すると、以前 Camel v3 で CamelContext から直接利用できたさまざまなエクステンションやコンテキストプラグインに簡単にアクセスできます。

3.2.6. EIP の変更

  • 各 EIP の <description>lang 属性を削除しました。
  • InOnly および InOut EIP を削除しました。代わりに、使用するエクスチェンジパターンを指定できる SetExchangePattern または To を使用してください。
3.2.6.1. エンリッチポーリング EIP

ポーリングされるエンドポイント URI が、他のすべての EIP と同様に、Exchange のプロパティーとして (キー CamelToEndpoint とともに) 保存されるようになりました。これは URI がメッセージヘッダーとして保存される前に実行されます。

3.2.6.2. CircuitBreaker EIP

camel-resilience4j の次のオプションが、誤りにより、属性として定義されていませんでした。

Expand

オプション

bulkheadEnabled

bulkheadMaxConcurrentCalls

bulkheadMaxWaitDuration

timeoutEnabled

timeoutExecutorService

timeoutDuration

timeoutCancelRunningFuture

これらのオプションは YAML DSL では公開されませんでした。XML DSL では以下から移行する必要があります。

<circuitBreaker>
    <resilience4jConfiguration>
        <timeoutEnabled>true</timeoutEnabled>
        <timeoutDuration>2000</timeoutDuration>
    </resilience4jConfiguration>
...
</circuitBreaker>
Copy to Clipboard Toggle word wrap

代わりに次の属性を使用してください。

<circuitBreaker>
    <resilience4jConfiguration timeoutEnabled="true" timeoutDuration="2000"/>
...
</circuitBreaker>
Copy to Clipboard Toggle word wrap

3.2.7. XML DSL

ルートまたはノードに説明を設定する <description> が要素から属性に変更されました。

<route id="myRoute" description="Something that this route do">
  <from uri="kafka:cheese"/>
  ...
</route>
Copy to Clipboard Toggle word wrap

3.2.8. 型コンバーター

Stringjava.io.File コンバーターは削除されました。

3.2.9. トレーシング

Tracer および Backlog Tracer に、Rest DSL、ルートテンプレート、または Kamelet によって作成されたルートからの内部トレースイベントが含まれなくなりました。これをオンにするには、トレーサーで traceTemplates=true を設定します。

Backlog Tracer が強化され、メッセージヘッダー (およびストリーミングタイプ) をトレースするように 修正 されました。以前は InputStream タイプのヘッダーがトレースされていませんでしたが、現在はトレース対象に含まれます。そのため、ヘッダーストリームを最後に配置し、その後ヘッダーをログに記録すると、ヘッダー値が空であると表示される可能性があります。

3.2.10. UseOriginalMessage / UseOriginalBody

useOriginalMessage または useOriginalBodyOnExceptionOnCompletion またはエラーハンドラーで有効になっている場合、元のメッセージボディーが防御的にコピーされ、アクセス時にボディーを再読み取りできるように、可能な場合は StreamCache に変換されます。以前は、元のボディーが StreamCache に変換されなかったため、ボディーを読み取れなかったり、ストリームが閉じられたりする可能性がありました。

3.2.11. Camel の正常性

ヘルスチェックは、デフォルトですぐに使用できる readiness チェックのみになりました。Camel は、CamelContextCheck を readiness チェックと liveness チェックの両方の形で提供するため、すぐに使用できる状態のチェックがそれぞれ少なくとも 1 つあります。デフォルトでは、コンシューマーベースのヘルスチェックのみが有効になっています。

3.2.11.1. プロデューサーのヘルスチェック

オプション camel.health.components-enabled の名前が camel.health.producers-enabled に変更されました。

一部のコンポーネント (特に AWS) は、プロデューサーのヘルスチェックも提供します。Camel 3.x では、これらのヘルスチェックは正しく機能せず、ソースで無効になっています。Camel 4 でもこの動作を継続するために、プロデューサーベースのヘルスチェックは無効になっています。

camel-kafka には、Camel 3 で機能していたプロデューサーベースのヘルスチェックが付属しています。そのため、Camel 4 でのこの変更により、このヘルスチェックが無効になることに注意してください。

application.properties などでプロデューサーのヘルスチェックをグローバルに有効にする 必要があります

camel.health.producers-enabled = true
Copy to Clipboard Toggle word wrap

3.2.12. JMX

Camel のプロセッサー MBean のツリーに、doCatch および doFinally の MBean も含まれるようになりました。

ManagedChoiceMBean の名前が、choiceStatistics から extendInformation に変更されました。ManagedFailoverLoadBalancerMBean の名前が、exceptionStatistics から extendInformation に変更されました。

CamelContextMBeanCamelRouteMBean から、メソッド dumpRouteAsXml(boolean resolvePlaceholders, boolean resolveDelegateEndpoints) が削除されました。

3.2.13. YAML DSL

route の子として steps を持つことができる下位互換性モード (Camel 3.14 以前) が削除されました。

新しい構文は次のとおりです。

- route:
    from:
      uri: "direct:info"
      steps:
      - log: "message"
Copy to Clipboard Toggle word wrap

3.2.14. バックログのトレース

オプション backlogTracing=true が自動的に有効になり、起動時にトレーサーが開始するようになりました。以前のバージョンでは、トレーサーは利用可能になるだけで、後で手動で有効にする必要がありました。backlogTracingStandby=true を設定すると、古い動作を実現できます。

次のクラスを、camel-management-api JAR の org.apache.camel.api.management.mbean.BacklogTracerEventMessage から、camel-api JAR の org.apache.camel.spi.BacklogTracerEventMessage に移動します。

org.apache.camel.impl.debugger.DefaultBacklogTracerEventMessage が、トレースされたメッセージに関する追加の詳細を備えたインターフェイス org.apache.camel.spi.BacklogTracerEventMessage にリファクタリングされました。たとえば、Camel は入力メッセージと出力メッセージ (InOut の場合) を含む 最初最後 のトレースをキャプチャーするようになりました。

3.2.15. XML シリアライゼーション

ModelToXMLDumper を使用したデフォルトの XML シリアライザーが改善され、camel-jaxb の JAXB ベースの XML シリアライザーではなく、camel-xml-io モジュールにある生成された XML シリアライザーを使用するようになりました。

3.2.16. OpenAPI Maven プラグイン

Camel-restdsl-openapi-plugin Maven プラグインは、生成された Rest DSL コードのデフォルトの REST コンポーネントとして、Quarkus でそのまま使用できる優れたデフォルトである platform-http を使用するようになりました。

3.2.17. コンポーネントの変更

3.2.17.1. カテゴリー

org.apache.camel.Category の列挙型の数が 83 から 37 に削減されました。つまり、削除された値を使用しているカスタムコンポーネントに、残りの値の 1 つを指定する必要があります。これは、Camel コミュニティー内のすべてのコンポーネントのカテゴリーの数を整理するために行われました。

3.2.17.2. camel-openapi-rest-dsl-generator

この DSL ジェネレーターでは、基礎となるモデルクラス (apicurio-data-models) が 1.1.27 から 2.0.3 に更新されました。

3.2.17.3. camel-atom

camel-atom コンポーネントのサードパーティーの Atom クライアントが、Apache Abdera から RSSReader に変更されました。これにより、フィードオブジェクトが org.apache.abdera.model.Feed から com.apptasticsoftware.rssreader.Item に変更されました。

3.2.17.4. camel-azure-cosmosdb

itemPartitionKey が更新されました。これは PartitionKey ではなく String になりました。詳細は、CAMEL-19222 を参照してください。

3.2.17.5. camel-bean

method オプションを使用して特定のメソッドを参照し、"bean:myBean?method=foo(com.foo.MyOrder, true)" などのパラメーターの型と値を使用する場合、すべてのクラス型が .class 構文を使用する必要があります。つまり、com.foo.MyOrdercom.foo.MyOrder.class にする必要があります。

"bean:myBean?method=foo(com.foo.MyOrder.class, true)"
Copy to Clipboard Toggle word wrap

これは、String、int などの Java 型にも当てはまります。

"bean:myBean?method=bar(String.class, int.class)"
Copy to Clipboard Toggle word wrap
3.2.17.6. camel-box

Box Java SDK v2 から v4 にアップグレードされ、メソッドのシグネチャーがいくつか変更されました。ファイルのサムネイルを取得するメソッドは利用できなくなりました。

3.2.17.7. camel-caffeine

keyType パラメーターが削除されました。キャッシュのキーは String 型のみになりました。詳細は、CAMEL-18877 を参照してください。

3.2.17.8. camel-fhir

基盤となる hapi-fir ライブラリーが 4.2.0 から 6.2.4 にアップグレードされました。Delete API メソッドのみが変更され、org.hl7.fhir.instance.model.api.IBaseOperationOutcome ではなく ca.uhn.fhir.rest.api.MethodOutcome を返すようになりました。基礎となる変更の詳細なリストについては、hapi-fhir を参照してください (Camel では hapi-fhir クライアントのみが使用されます)。

3.2.17.9. camel-google

API ベースのコンポーネント camel-google-drivecamel-google-calendarcamel-google-sheets、および camel-google-mail が、Google Java SDK v1 から v2 および最新の API リビジョンにアップグレードされました。camel-google-drivecamel-google-sheets では、API メソッドがいくつか変更されていますが、その他は以前と同じです。

3.2.17.10. camel-http

このコンポーネントは、Apache HttpComponents v5 を使用するようにアップグレードされました。これは、基礎となるクライアントの設定方法に影響を与えます。当初の 3 つのタイムアウト (connectionRequestTimeoutconnectTimeout、および socketTimeout) ではなく、4 つの異なるタイムアウト (connectionRequestTimeoutconnectTimeoutsoTimeout、および responseTimeout) があります。これらの一部のデフォルト値が変更されているため、ドキュメントで詳細を参照してください。

HttpClient の可能な設定パラメーターから socketTimeout が削除されていることに注意してください。代わりに responseTimeout を使用してください。

最後に、オプション soTimeoutSocketConfig に含まれるパラメーターには、接頭辞として httpConnection を付ける必要があります。HttpClientBuilder および RequestConfig に定義されているパラメーターを含む残りのパラメーターには、以前のように接頭辞として httpClient を付ける必要があります。

3.2.17.11. camel-http-common

org.apache.camel.http.common.HttpBinding の API が、再利用しやすいようにわずかに変更されました。parseBody メソッドが、入力パラメーターとして HttpServletRequest を受け取るようになりました。また、すべての HttpMessage が汎用の Message タイプに変更されました。

3.2.17.12. camel-kubernetes

io.fabric8:kubernetes-client ライブラリーがアップグレードされ、一部の非推奨の API 使用法が削除されました。以前、replace という接頭辞が付けられていた操作に、update という接頭辞が付けられるようになりました。

たとえば、replaceConfigMapupdateConfigMap になり、replacePodupdatePod になりました。KubernetesOperations クラスの対応する定数の名前も変更されました。REPLACE_CONFIGMAP_OPERATIONUPDATE_CONFIGMAP_OPERATION に、REPLACE_POD_OPERATIONUPDATE_POD_OPERATION になりました。

3.2.17.13. camel-web3j

Camel-web3j は、web3j JAR を 3.x から 5.0 にアップグレードしました。これには多くの API 変更が含まれるため、以前の API 呼び出しの一部は提供されなくなりました。

3.2.17.14. camel-main

次の定数は、BaseMainSupport / Main から MainConstants に移動されました。

Expand
以前の名前新しい名前

Main.DEFAULT_PROPERTY_PLACEHOLDER_LOCATION

MainConstants.DEFAULT_PROPERTY_PLACEHOLDER_LOCATION

Main.INITIAL_PROPERTIES_LOCATION

MainConstants.INITIAL_PROPERTIES_LOCATION

Main.OVERRIDE_PROPERTIES_LOCATION

MainConstants.OVERRIDE_PROPERTIES_LOCATION

Main.PROPERTY_PLACEHOLDER_LOCATION

MainConstants.PROPERTY_PLACEHOLDER_LOCATION

3.2.17.15. camel-micrometer

メトリクスの名前が、Micrometer の命名規則に従って変更されました。

Expand

以前の名前

新しい名前

CamelExchangeEventNotifier

camel.exchange.event.notifier

CamelExchangesFailed

camel.exchanges.failed

CamelExchangesFailuresHandled

camel.exchanges.failures.handled

CamelExchangesInflight

camel.exchanges.external.redeliveries

CamelExchangesSucceeded

camel.exchanges.succeeded

CamelExchangesTotal

camel.exchanges.total

CamelMessageHistory

camel.message.history

CamelRoutePolicy

camel.route.policy

CamelRoutePolicyLongTask

camel.route.policy.long.task

CamelRoutesAdded

camel.routes.added

CamelRoutesRunning

camel.routes.running

3.2.17.16. camel-jbang

コマンド camel dependencies の名前が camel dependency に変更されました。

Camel JBang では、init および run ゴールの -dir パラメーターの名前が変更され、他のすべてのオプションと同様に 2 つのダッシュ --dir が必要になりました。

camel stop コマンドは、デフォルトで実行中のすべてのインテグレーションを停止します (オプション --all は削除されました)。

プレースホルダー置換 が、$name 構文ではなく #name を使用するように変更されました。

3.2.17.17. camel-openapi-java

camel-openapi-java コンポーネントが、io.apicurio.datamodels ではなく io.swagger.v3 ライブラリーを使用するように変更されました。その結果、パブリックメソッド org.apache.camel.openapi.RestOpenApiReader.read() の戻り値の型が、io.apicurio.datamodels.openapi.models.OasDocument ではなく io.swagger.v3.oas.models.OpenAPI になりました。OpenAPI 2.0 (swagger) 仕様が解析されると、swagger パーサーによって OpenAPI 3.0.x に自動的にアップグレードされます。このバージョンでは、OpenAPI 3.1.x 仕様もサポートされています。

3.2.17.18. camel-optaplanner

camel-optaplanner コンポーネントは、SolverManager を 使用するように変更されました。Camel 3 で SoverManager を使用していた場合、ルートにブール値 useSolverManager は不要になりました。非推奨の ProblemFactChange は、ProblemChange に置き換えられました。

新しい URI パスは次のとおりです。

from("optaplanner:myProblemName")
  .to("...")
Copy to Clipboard Toggle word wrap

Optaplanner SolverManager は、2 つの方法で渡すことができます。

  • #parameter として
  • ヘッダーとして

Quarkus 上で Camel-optaplanner を実行する場合は、Quarkus の方法を使用して SolverManager を作成します。

以下のコードに示すように、XML 設定ファイルを指定することで、従来の Camel Optaplanner ルートを移行できます。これにより、Camel Optaplanner が従来のルートの SolverManager を作成できるようになります。

Optaplanner Routes XML 設定ファイルを指定する

from("optaplanner:myProblemName?configFile=PATH/TO/CONFIG.FILE.xml")
  .to("...")
Copy to Clipboard Toggle word wrap

注記
Solver Daemon ソリューションは、SolverManager を使用するように移行する必要があります。
3.2.17.19. camel-platform-http-vertx

ルートまたはコンシューマーが一時停止している場合、http ステータス 404 ではなく 503 が返されるようになりました。

3.2.17.20. camel-salesforce

生成された DTO の Blob フィールドのプロパティー名に 'Url' が付加されなくなりました。たとえば、ContentVersionUrl プロパティーは ContentVersion になりました。

3.2.17.21. camel-slack

Slack によって頻繁にレートが制限されるのを避けるために、slack コンシューマーのデフォルトの遅延が 0.5 秒から 10 秒に変更されました。

3.2.17.22. camel-micrometer-starter

uri タグが (デフォルトで) 動的ではなく静的になりました。動的値を持つ URI が原因で、非常に多くのタグが生成される可能性があるためです。これは、camel.metrics.uriTagDynamic=true を設定することで再度有効にできます。

3.2.17.23. camel-platform-http-starter

platform-http-starter は、camel-servlet ではなく、Spring HTTP サーバーを直接使用するように変更されました。したがって、すべての HTTP エンドポイントに、サーブレットのコンテキストパス (デフォルトは camel) が接頭辞として付けられなくなりました。

以下に例を示します。

HTTP エンドポイント

from("platform-http:myservice")
  .to("...")
Copy to Clipboard Toggle word wrap

コンテキストパスは使用されていないため、http://localhost:8080/myservice を使用してエンドポイントを呼び出すことができます。

注記

platform-http-starter を Rest DSL とともに使用することもできます。

ルートまたはコンシューマーが一時停止している場合、http ステータス 404 ではなく 503 が返されるようになりました。

3.2.17.24. camel-twitter

camel-twitter コンポーネントは、Twitter4j バージョン 4.1.2 を使用するように更新されました。これに伴い、いくつかのクラスで使用される パッケージ が移動されました。Twit ステータスなどの特定の Twitter 関連データにアクセスする場合は、使用するパッケージを twitter4j.Status から twitter4j.v1.Status に更新する必要があります。

3.3. Apache Camel 3 への移行

このガイドでは、Red Hat Fuse 7 から Camel 3 への移行に関する情報を提供します。

注記

Fuse 7 と Camel 3 の間には、モジュール化や XML スキーマの変更など、コンポーネントに重要な違いがあります。詳細は、各コンポーネントのセクションを参照してください。

Red Hat build of Apache Camel for Quarkus は、Camel バージョン 4 をサポートします。このセクションでは、Red Hat Fuse 7 アプリケーションを Camel バージョン 3 を備えた Red Hat build of Apache Camel for Quarkus に移行する場合の、Camel のアップグレードに関する情報を提供します。

3.3.1. Java バージョン

Camel 3 は Java 17 および Java 11 をサポートしますが、Java 8 はサポートしていません。

3.3.1.1. JDK 11 で JAXB を削除

Java 11 では、JAXB モジュールが JDK から 削除 されたため、Maven の依存関係として追加する必要があります (XML DSL または camel-jaxb コンポーネントを使用する場合などに JAXB を使用する場合)。

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>

<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-core</artifactId>
    <version>2.3.0.1</version>
</dependency>

<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.3.2</version>
</dependency>
Copy to Clipboard Toggle word wrap
注記

Java Platform Standard Edition 11 Development Kit (JDK 11) は、リリースバージョン Camel 3.x で 非推奨 となり、リリースバージョン 4.x では サポート対象外 となっています。

3.3.2. camel-core のモジュール化

Camel 3.x では、camel-core は次のように多くの JAR に分割されています。

  • camel-api
  • camel-base
  • camel-caffeine-lrucache
  • camel-cloud
  • camel-core
  • camel-jaxp
  • camel-main
  • camel-management-api
  • camel-management
  • camel-support
  • camel-util
  • camel-util-json

Apache Camel の Maven ユーザーは、camel-main を除くすべてのモジュールに対する推移的な依存関係を持つ依存関係 camel-core を引き続き使用できるため、移行は必要ありません。

3.3.3. コンポーネントのモジュール化

Camel 3.x では、camel-core コンポーネントの一部が個別のコンポーネントに移動されました。

  • camel-attachments
  • camel-bean
  • camel-browse
  • camel-controlbus
  • camel-dataformat
  • camel-dataset
  • camel-direct
  • camel-directvm
  • camel-file
  • camel-language
  • camel-log
  • camel-mock
  • camel-ref
  • camel-rest
  • camel-saga
  • camel-scheduler
  • camel-seda
  • camel-stub
  • camel-timer
  • camel-validator
  • camel-vm
  • camel-xpath
  • camel-xslt
  • camel-xslt-saxon
  • camel-zip-deflater

3.3.4. アプリケーションごとの複数の CamelContext のサポート削除

複数の CamelContext のサポートが削除され、デプロイごとに 1 つの CamelContext のみが推奨およびサポートされるようになりました。そのため、@EndpointInject@Produce@Consume などのさまざまな Camel アノテーションの context 属性が削除されました。

3.3.5. 非推奨の API とコンポーネント

Camel 2.x の非推奨の API とコンポーネントはすべて Camel 3 で削除されました。

3.3.5.1. 削除されたコンポーネント

Camel 2.x の非推奨コンポーネントは、Camel 3.x ですべて削除されます。

camel-http , camel-hdfs , camel-mina , camel-mongodb , camel-netty , camel-netty-http , camel-quartz , camel-restlet , camel-rx , camel-jibx , camel-boon データ形式 , camel-linkedin
Linkedin API は、サポート対象外 となりました。
camel-zookeeper
コンポーネントルートポリシー機能は削除されました。代わりに ZooKeeperClusterService または camel-zookeeper-master を使用してください。
camel-jetty
producer はサポート対象外となりました (削除されました)。代わりに、camel-http コンポーネントを使用してください。
twitter-streaming
非推奨の Twitter Streaming API に依存しており、機能しなくなったため削除されました。
3.3.5.2. コンポーネントの名前変更

次のコンポーネントは、Camel 3.x で名前が変更されました。

camel-microprofile-metrics
名前が camel-micrometer に変更されました。
test
名前が dataset-test に変更され、camel-core から camel-dataset JAR に移動されました。
http4
名前が http に変更され、対応するコンポーネントパッケージの名前も org.apache.camel.component.http4 から org.apache.camel.component.http に変更されました。サポートされているスキームは、現在 httphttps のみです。
hdfs2
名前が hdfs に変更され、対応するコンポーネントパッケージの名前も org.apache.camel.component.hdfs2 から org.apache.camel.component.hdfs に変更されました。サポートされるスキームは hdfs になりました。
mina2
名前が mina に変更され、対応するコンポーネントパッケージの名前も org.apache.camel.component.mina2 から org.apache.camel.component.mina に変更されました。サポートされるスキームは mina になりました。
mongodb3
名前が mongodb に変更され、対応するコンポーネントパッケージの名前も org.apache.camel.component.mongodb3 から org.apache.camel.component.mongodb に変更されました。サポートされるスキームは mongodb になりました。
netty4-http
名前が netty-http に変更され、対応するコンポーネントパッケージの名前も org.apache.camel.component.netty4.http から org.apache.camel.component.netty.http に変更されました。サポートされるスキームは netty-http になりました。
netty4
名前が netty に変更され、対応するコンポーネントパッケージの名前も org.apache.camel.component.netty4 から org.apache.camel.component.netty に変更されました。サポートされるスキームは netty になりました。
quartz2
名前が quartz に変更され、対応するコンポーネントパッケージの名前も org.apache.camel.component.quartz2 から org.apache.camel.component.quartz に変更されました。サポートされているスキームは Quartz になりました。
rxjava2
名前が rxjava に変更され、対応するコンポーネントパッケージの名前も org.apache.camel.component.rxjava2 から org.apache.camel.component.rxjava に変更されました。
camel-jetty9
名前が camel-jetty に変更されました。サポートされているスキームは jetty になりました。

3.3.6. Camel コンポーネントの変更

3.3.6.1. Mock コンポーネント

mock コンポーネントは camel-core から移動しました。このため、アサーション句ビルダー の多くのメソッドが削除されています。

3.3.6.2. ActiveMQ

activemq-camel コンポーネントを使用している場合は、コンポーネント名が org.apache.activemq.camel.component.ActiveMQComponent から org.apache.camel.component.activemq.ActiveMQComponent に変更になった camel-activemq コンポーネントを使用するように移行する必要があります。

3.3.6.3. AWS

コンポーネント camel-aws が複数のコンポーネントに分割されました。

  • camel-aws-cw
  • camel-aws-ddb (ddb と ddbstreams コンポーネントの両方を含む)
  • camel-aws-ec2
  • camel-aws-iam
  • camel-aws-kinesis (kinesis と kinesis-firehose コンポーネントの両方を含む)
  • camel-aws-kms
  • camel-aws-lambda
  • camel-aws-mq
  • camel-aws-s3
  • camel-aws-sdb
  • camel-aws-ses
  • camel-aws-sns
  • camel-aws-sqs
  • camel-aws-swf
注記

これらのコンポーネントに特定の依存関係を追加することを推奨します。

3.3.6.4. Camel CXF

camel-cxf JAR は、SOAP と REST に分割されました。camel-cxf から移行する場合は、次のリストから特定の JAR を選択することが推奨されます。

  • camel-cxf-soap
  • camel-cxf-rest
  • camel-cxf-transport

たとえば、SOAP に CXF を使用していた場合は、Camel-cxf から移行する際に camel-cxf-soapcamel-cxf-transport を選択します。

3.3.6.4.1. Camel CXF の名前空間の変更

camel-cxf XML XSD スキーマも名前空間が変更になりました。

camel-cxf SOAP コンポーネントは新しい jaxws サブパッケージに移動しました。つまり、org.apache.camel.component.cxforg.apache.camel.component.cxf.jaws になりました。たとえば、CxfComponent クラスは org.apache.camel.component.cxf.jaxws に置かれるようになりました。

3.3.6.5. FHIR

camel-fhir コンポーネントでは、hapi-fhir 依存関係が 4.1.0 にアップグレードされました。デフォルトの FHIR バージョンが R4 に変更になりました。したがって、DSTU3 が必要な場合は、明示的に設定する必要があります。

3.3.6.6. Kafka

camel-kafka コンポーネントでは、オプション bridgeEndpointcircularTopicDetection が削除されました。これは、このコンポーネントが Camel 2.x のブリッジングのように機能するようになり、不要になったためです。つまり、camel-kafka はエンドポイント uri からトピックにメッセージを送信します。これをオーバーライドするには、新しいトピックで KafkaConstants.OVERRIDE_TOPIC ヘッダーを使用します。詳細は、camel-kafka コンポーネントのドキュメントを参照してください。

3.3.6.7. Telegram

camel-telegram コンポーネントでは、認可トークンが uri-path からクエリーパラメーターに移動しました。以下に例を示します。

telegram:bots/myTokenHere
Copy to Clipboard Toggle word wrap

移動後は次のようになります。

telegram:bots?authorizationToken=myTokenHere
Copy to Clipboard Toggle word wrap
3.3.6.8. JMX

camel-core のみを依存関係として使用して Camel スタンドアロンを実行し、JMX を初期設定で有効にする場合は、camel-management を依存関係として追加する必要があります。

ManagedCamelContext を使用するには、次のように CamelContext からこのエクステンションを取得する必要があります。

ManagedCamelContext managed = camelContext.getExtension(ManagedCamelContext.class);
Copy to Clipboard Toggle word wrap
3.3.6.9. XSLT

XSLT コンポーネントは、camel-core から camel-xslt および camel-xslt-saxon に移動しました。JDK の XSTL エンジン (Xalan) を使う場合は camel-xslt、Saxon を使う場合は camel-xslt-saxon というように分けられています。そのため、Camel エンドポイント URI のコンポーネント名には、xslt および xslt-saxon を使用する必要があります。XSLT 集約ストラテジーを使用している場合は、Saxon のサポートのために org.apache.camel.component.xslt.saxon.XsltSaxonAggregationStrategy を使用します。また、xslt ビルダーを使用する場合は、Saxon のサポートのために org.apache.camel.component.xslt.saxon.XsltSaxonBuilder を使用します。なお、allowStax は JDK の XSLT ではサポートされておらず、camel-xslt-saxon でのみサポートされています。

3.3.6.10. XML DSL の移行

XML DSL が若干変更になりました。

カスタムロードバランサーの EIP が <custom> から <customLoadBalancer> に変更になりました。

XMLSecurity データ形式では、<secureXML> タグの keyOrTrustStoreParametersId 属性の名称が keyOrTrustStoreParametersRef に変更されました。

<zipFile> データ形式が <zipfile> に名前が変更になりました。

3.3.7. Camel Maven プラグインの移行

camel-maven-plugin は 2 つの Maven プラグインに分割されました。

camel-maven-plugin
camel-maven-plugin には run ゴールがあります。これは、Camel アプリケーションをスタンドアロンですばやく実行することを目的としたものです。詳細は、https://camel.apache.org/manual/camel-maven-plugin.html を参照してください。
camel-report-maven-plugin
camel-report-maven-plugin には、Camel エンドポイント URI の検証やルートカバレッジレポートなど、Camel プロジェクトのレポートの生成に使用される validate ゴールや route-coverage ゴールがあります。詳細は、https://camel.apache.org/manual/camel-report-maven-plugin.html を参照してください。

第4章 Camel Quarkus プロジェクトの移行

4.1. プロジェクトを最新の Quarkus バージョンに更新する

Maven を使用して、プロジェクトを最新の Quarkus バージョンに更新およびアップグレードすることが推奨されます。

重要

Hibernate ORM または Hibernate Reactive を使用するプロジェクトについては、Hibernate ORM 5 to 6 migration クイックリファレンスを確認してください。次の更新コマンドは、このガイドのサブセットのみカバーしています。

4.1.1. 前提条件

  • 約 30 分
  • JAV_HOME が適切に設定された状態でインストールされた JDK
  • Apache Maven 3.8.6
  • オプションで使用する場合は Quarkus CLI
  • Camel Quarkus バージョン 2.13 以降をベースとするプロジェクト。

4.1.2. Maven を使用して更新する

  1. Quarkus Getting Started ガイドの Quarkus エクステンションレジストリークライアントの設定 セクションで説明されているとおり、エクステンションレジストリークライアントを設定します。
  2. Maven を使用して更新します。

    プロジェクトディレクトリーに移動し、プロジェクトを最新のストリームに更新します。

    1. Quarkus Maven プラグインのバージョンが、サポートされている最新の Red Hat build of Quarkus バージョンと一致していることを確認してください。
    2. 次のコマンドを使用して更新を実行します。

      mvn io.quarkus.platform:quarkus-maven-plugin:3.5.2:update -N
      Copy to Clipboard Toggle word wrap

      マルチモジュールプロジェクト の場合は、次のコマンドを使用します。

      find . -type f -name "pom.xml" -execdir sh -c 'mvn io.quarkus.platform:quarkus-maven-plugin:3.5.2:update -N'  \;
      Copy to Clipboard Toggle word wrap
      オプション

      デフォルトでは、このコマンドは最新の現行バージョンに更新します。最新の現行バージョンではなく特定のストリームに更新するには、このコマンドに stream オプションを追加し、その後にバージョンを追加します (例: --Dstream=3.2)。

      注記

      マルチモジュールプロジェクトを更新すると、更新ツールが <packaging>pom</packaging> を使用してモジュールを更新できないため、多くのエラーが表示される場合があります。

      そのようなモジュールが存在する場合 (通常は複数のバージョンが含まれています)、手動で更新します。

  3. 考えられる指示の更新コマンド出力を分析し、必要に応じて提案されたタスクを実行します。
  4. diff ツールを使用してすべての変更を検査します。
  5. 更新コマンドで更新されなかった項目については、移行ガイドを確認してください。プロジェクトにそのような項目がある場合は、これらのトピックでアドバイスされている追加の手順を実行ます。
  6. 実稼働環境にデプロイする前に、プロジェクトがエラーなくビルドされ、すべてのテストが合格し、アプリケーションが求められるとおりに機能することを確認します。
  7. 更新後の Quarkus アプリケーションを実稼働環境にデプロイする前に、以下を確認します。

    • プロジェクトはエラーなしでビルドされる。
    • すべてのテストに合格する。
    • アプリケーションが求められるとおりに機能する。

法律上の通知

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る