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
に変更されました。サポートされているスキームは、現在http
とhttps
のみです。 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-soap
と camel-cxf-transport
を選択します。
1.3.6.4.1. Camel CXF の名前空間の変更
camel-cxf
XML XSD スキーマも名前空間が変更になりました。
古い名前空間 | 新しい名前空間 |
---|---|
camel-cxf
SOAP コンポーネントは新しい jaxws
サブパッケージに移動しました。つまり、org.apache.camel.component.cxf
が org.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
コンポーネントでは、オプション bridgeEndpoint
と circularTopicDetection
が削除されました。これは、このコンポーネントが 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 を参照してください。