1.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 のアップグレードに関する情報を提供します。

1.3.1. Java バージョン

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

1.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>
注記

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

1.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 を引き続き使用できるため、移行は必要ありません。

1.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

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

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

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

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

1.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 に依存しており、機能しなくなったため削除されました。

1.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 になりました。

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

1.3.6.1. Mock コンポーネント

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

1.3.6.2. ActiveMQ

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

1.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
注記

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

1.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 を選択します。

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

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

表1.1 名前空間の変更
古い名前空間新しい名前空間

http://camel.apache.org/schema/cxf

http://camel.apache.org/schema/cxf/jaxws

http://camel.apache.org/schema/cxf/camel-cxf.xsd

http://camel.apache.org/schema/cxf/jaxws/camel-cxf.xsd

http://camel.apache.org/schema/cxf

http://camel.apache.org/schema/cxf/jaxrs

http://camel.apache.org/schema/cxf/camel-cxf.xsd

http://camel.apache.org/schema/cxf/jaxrs/camel-cxf.xsd

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

1.3.6.5. FHIR

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

1.3.6.6. Kafka

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

1.3.6.7. Telegram

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

telegram:bots/myTokenHere

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

telegram:bots?authorizationToken=myTokenHere

1.3.6.8. JMX

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

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

ManagedCamelContext managed = camelContext.getExtension(ManagedCamelContext.class);

1.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 でのみサポートされています。

1.3.6.10. XML DSL の移行

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

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

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

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

1.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 を参照してください。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.