Red Hat build of Apache Camel for Spring Boot への移行


Red Hat build of Apache Camel 4.0

Red Hat build of Apache Camel for Spring Boot への移行

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

概要

このガイドでは、Red Hat build of Apache Camel コンポーネントの設定について説明します。

はじめに

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

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

第1章 移行ガイドについて

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

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

第2章 Apache Camel 4 への移行

このセクションでは、Apache Camel アプリケーションをバージョン 3.20 以降から 4.0 に移行するのに役立つ情報を提供します。3.14 などの古い Camel 3.x リリースからアップグレードする場合は、Apache Camel 4 にアップグレードする前に、各 アップグレードガイド を参照して 3.20 リリースにアップグレードしてください。

2.1. Java バージョン

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

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

2.3. ロギング

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

2.4. JUnit 4

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

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 から直接利用できたさまざまなエクステンションやコンテキストプラグインに簡単にアクセスできます。

2.6. EIP の変更

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

2.6.1. エンリッチポーリング EIP

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

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

2.7. XML DSL

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

変更前

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

終了

[source,xml

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

2.8. 型コンバーター

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

2.9. トレーシング

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

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

2.10. UseOriginalMessage / UseOriginalBody

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

2.11. Camel の正常性

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

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

2.12. JMX

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

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

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

2.13. YAML DSL

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

古い構文:

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

これを次のように変更する必要があります。

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

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 の場合) を含む 最初最後 のトレースをキャプチャーするようになりました。

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

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

2.16. OpenAPI Maven プラグイン

camel-restdsl-openapi-plugin Maven プラグインが、生成された Rest DSL コード内のデフォルトの REST コンポーネントとして platform-http を使用するようになりました。以前のデフォルトはサーブレットでした。platform-http は、Spring Boot および Quarkus でそのまま使用できる、より優れたデフォルトです。

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

2.17.1. カテゴリー

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

2.17.2. camel-openapi-rest-dsl-generator

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

2.17.3. camel-atom

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

2.17.4. camel-azure-cosmosdb

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

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

2.17.6. camel-box

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

2.17.7. camel-caffeine

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

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 クライアントのみが使用されます)。

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 メソッドがいくつか変更されていますが、その他は以前と同じです。

2.17.10. camel-http

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

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

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

2.17.11. camel-http-common

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

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

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

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

2.17.15. camel-jbang

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

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

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

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

2.17.16. 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 仕様もサポートされています。関連する spring-boot スターターコンポーネントが、新しい戻り値の型を使用するように変更されました。

2.17.17. camel-salesforce

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

2.17.18. camel-slack

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

2.17.19. camel-spring-rabbitmq

camel-spring-rabbitmq のオプション replyTimeout が修正され、デフォルト値が 5 - 30 秒になりました (これは Spring で使用されるデフォルト値です)。

2.18. Camel Spring Boot (Spring Boot で実行)

camel-spring-boot 依存関係に、camel-spring-xml が含まれなくなりました。Spring Boot 上の Camel でレガシー Spring XML ファイル <beans> を使用するには、camel-spring-boot-xml-starter 依存関係を含めてください。

2.18.1. 正常シャットダウン

Camel は、Spring Boot のシャットダウン時に、少し遅れてシャットダウンするようになりました。これにより、Spring Boot の正常シャットダウンが完了 (Spring Boot HTTP サーバーが正常に停止) した後、Camel が独自の Graceful Shutdown を実行できるようになります。

技術的には、camel-springgetPhase() の戻り値が、Integer.MAX_VALUE から Integer.MAX_VALUE - 2049 に変更されました。これにより、Spring Boot サービスが先にシャットダウンする余裕が生まれます。

2.18.2. camel-micrometer-starter

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

2.18.3. camel-platform-http-starter

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

以下に例を示します。

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

以前は、myservice を呼び出すには、http://localhost:8080/camel/myservice などのコンテキストパスを含める必要がありました。現在、このコンテキストパスは使用されていないため、http://localhost:8080/myservice を使用してエンドポイントを呼び出すことができます。

注記

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

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

2.18.4. camel-twitter

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

第3章 Apache Camel 3 への移行

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

注記

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

3.1. Java バージョン

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

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 Spring Boot 3.x リリースバージョンでは非推奨となり、それ以降の 4.x リリースバージョンではサポートされません。

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. コンポーネントのモジュール化

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.4. デフォルトのシャットダウンストラテジー

Red Hat build of Apache Camelは、ルートを適切な方法でシャットダウンする役割を持つ org.apache.camel.spi.ShutdownStrategy を使用したシャットダウンストラテジーをサポートしています。Red Hat build of Apache Camelは、ルートのグレースフルシャットダウンを処理するためのデフォルトストラテジーを org.apache.camel.impl.engine.DefaultShutdownStrategy で提供しています。

注記

DefaultShutdownStrategy クラスは、Apache Camel 3.x の org.apache.camel.impl パッケージから org.apache.camel.impl.engine に移動されました。

単純な定期実行ルートポリシーを設定してルートを停止すると、ルートの停止アルゴリズムが自動的に正常シャットダウンの手順に統合されます。よって、タスクは現在のエクスチェンジが処理を完了するまで待機してから、ルートをシャットダウンします。ただし、タイムアウトを設定することで、ルートがエクスチェンジの処理を終了したかどうかにかかわらず、指定した時間後にルートを強制的に停止することができます。

グレースフルシャットダウン中に、org.apache.camel.impl.engine.DefaultShutdownStrategy で DEBUG ロギングレベルを有効にすると、同じインフライトエクスチェンジ情報がログに記録されます。

2015-01-12 13:23:23,656 [- ShutdownTask] INFO DefaultShutdownStrategy - There are 1 inflight exchanges:
InflightExchange: [exchangeId=ID-test-air-62213-1421065401253-0-3, fromRouteId=route1, routeId=route1, nodeId=delay1, elapsed=2007, duration=2017]
Copy to Clipboard Toggle word wrap

これらのログを表示したくない場合は、logInflightExchangesOnTimeout オプションを false に設定してこれをオフにできます。

  context.getShutdownStrategegy().setLogInflightExchangesOnTimeout(false);
Copy to Clipboard Toggle word wrap

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

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

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

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

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

Camel 2.x の非推奨コンポーネントはすべて Camel 3.x で削除され、古い camel-httpcamel-hdfscamel-minacamel-mongodbcamel-nettycamel-netty-httpcamel-quartzcamel-restlet、および camel-rx コンポーネントも削除されました。

  • camel-jibx コンポーネントが削除されました。
  • camel-boon データ形式が削除されました。
  • Linkedin API 1.0 が サポートされなくなった ため、camel-linkedin コンポーネントが削除されました。新しい 2.0 API のサポートは、CAMEL-13813 で追跡されています。
  • camel-zookeeper のルートポリシー機能が削除されました。代わりに ZooKeeperClusterService または camel-zookeeper-master コンポーネントを使用してください。
  • camel-jetty コンポーネントはプロデューサーをサポートしなくなりました (プロデューサーは削除されました)。代わりに camel-http コンポーネントを使用してください。
  • twitter-streaming コンポーネントは、非推奨の Twitter Streaming API に依存していたため削除され、機能しなくなりました。

3.6.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.7. Camel コンポーネントの変更

3.7.1. Mock コンポーネント

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

3.7.2. ActiveMQ

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

3.7.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.7.4. Camel CXF

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

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

たとえば、SOAP および Spring XML で CXF を使用している場合は、camel-cxf から移行するときに camel-cxf-spring-soap および camel-cxf-spring-transport を選択します。

Spring Boot を使用する場合は、camel-cxf-starter から SOAP または REST に移行する際に、以下のスターターから選択します。

  • camel-cxf-soap-starter
  • camel-cxf-rest-starter
3.7.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.7.5. FHIR

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

3.7.6. Kafka

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

3.7.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.7.8. JMX

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

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

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

3.7.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.7.10. XML DSL の移行

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

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

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

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

3.8. 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 を参照してください。

法律上の通知

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
トップに戻る