Red Hat build of Apache Camel for Spring Boot リファレンス
Red Hat build of Apache Camel for Spring Boot リファレンス
概要
はじめに リンクのコピーリンクがクリップボードにコピーされました!
多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、用語の置き換えは、今後の複数のリリースにわたって段階的に実施されます。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。
第1章 コンポーネントスターター リンクのコピーリンクがクリップボードにコピーされました!
Camel Spring Boot は、Spring Boot スターターとして次の Camel アーティファクトをサポートします。
Red Hat build of Apache Camel for Camel Spring Boot の BOM には、サポート対象およびサポート対象外のコンポーネントがリストされています。サポート対象コンポーネントの最新リストは、コンポーネントスターター を参照してください。
| コンポーネント | アーティファクト | 説明 | IBM Power および IBM Z のサポート |
|---|---|---|---|
| camel-amqp-starter | Apache QPid クライアントを使用した AMQP プロトコルによるメッセージング。 | はい | |
| camel-aws2-cw-starter | AWS SDK バージョン 2.x を使用してメトリクスを AWS CloudWatch に送信します。 | はい | |
| camel-aws2-ddb-starter | AWS SDK バージョン 2.x を使用して、AWS DynamoDB サービスからデータを保存および取得します。 | はい | |
| camel-aws2-kinesis-starter | AWS SDK バージョン 2.x を使用して、AWS Kinesis Streams からレコードを消費し、AWS Kinesis Streams にレコードを作成します。 | はい | |
| camel-aws2-lambda-starter | AWS SDK バージョン 2.x を使用して、AWS Lambda 関数を管理および呼び出します。 | はい | |
| camel-aws2-s3-starter | AWS SDK バージョン 2.x を使用して、AWS S3 Storage Service からオブジェクトを保存および取得します。 | はい | |
| camel-aws2-sns-starter | AWS SDK バージョン 2.x を使用して AWS Simple Notification Topic にメッセージを送信します。 | はい | |
| camel-aws2-sqs-starter | AWS SDK バージョン 2.x を使用して AWS SQS サービスを送信先および送信元としてメッセージを送受信します。 | はい | |
| camel-azure-servicebus-starter | Azure Event Bus との間でメッセージを送受信します。 | はい | |
| camel-azure-storage-blob-starter | SDK v12 を使用して Azure Storage Blob Service からブロブを保存および取得します。 | はい | |
| camel-azure-storage-queue-starter | azure-storage-queue コンポーネントは、Azure SDK v12 を使用して Azure Storage Queue への/からのメッセージを保存および取得するために使用されます。 | はい | |
| camel-bean-starter | Camel レジストリーに格納されている Java Bean のメソッドを呼び出します。 | はい | |
| camel-bean-validator-starter | Java Bean Validation API を使用してメッセージボディーを検証します。 | はい | |
| camel-browse-starter | BrowsableEndpoint をサポートするエンドポイントで受信したメッセージを調べます。 | はい | |
| camel-cassandraql-starter | CQL3 API (Thrift API 以外) を使用して Cassandra 2.0 と統合します。DataStax が提供する Cassandra Java Driver をベースにしています。 | はい | |
| camel-cics-starter | CICS® 汎用トランザクション処理サブシステムと対話します。 | いいえ | |
| camel-controlbus-starter | Camel ルートを管理および監視します。 | はい | |
| camel-cron-starter | Unix cron 構文で指定されたタイミングでイベントをトリガーする汎用インターフェイス。 | はい | |
| camel-crypto-starter | Java Cryptographic Extension (JCE) の署名サービスを使用してエクスチェンジに署名し、検証します。 | はい | |
| camel-cxf-soap-starter | Apache CXF を使用して SOAP WebServices を公開するか、CXF WS クライアントを使用して外部 WebServices に接続します。 | はい | |
| camel-cxf-rest-starter | Apache CXF を使用して JAX-RS REST サービスを公開するか、CXF REST クライアントを使用して外部の REST サービスに接続します。 | はい | |
| camel-dataformat-starter | Camel Data Format を通常の Camel コンポーネントとして使用します。 | はい | |
| camel-dataset-starter | Camel アプリケーションの負荷テストおよびソークテスト用のデータを提供します。 | はい | |
| camel-direct-starter | 同じ Camel コンテキストから別のエンドポイントを同期的に呼び出します。 | はい | |
| camel-elasticsearch-starter | Java クライアント API 経由で ElasticSearch にリクエストを送信します。 | いいえ | |
| camel-fhir-starter | FHIR (Fast Healthcare Interoperability Resources) 規格を使用して、ヘルスケアドメインの情報を交換します。 | いいえ | |
| camel-file-starter | ファイルの読み取りと書き込みを行います。 | はい | |
| camel-flink-starter | DataSet ジョブを Apache Flink クラスターに送信します。 | はい | |
| camel-ftp-starter | FTP サーバーとの間でファイルをアップロードおよびダウンロードします。 | はい | |
| camel-google-bigquery-starter | 分析用の Google BigQuery データウェアハウス。 | はい | |
| camel-google-pubsub-starter | Google Cloud Platform PubSub サービスとの間でメッセージを送受信します。 | はい | |
| camel-grpc-starter | gRPC エンドポイントを公開し、外部 gRPC エンドポイントにアクセスします。 | はい | |
| camel-http-starter | Apache HTTP Client 4.x を使用して、外部の HTTP サーバーにリクエストを送信します。 | はい | |
| camel-infinispan-starter | Infinispan の分散キー/値のストアとデータグリッドの読み取りと書き込みを行います。 | いいえ | |
| camel-infinispan-embedded-starter | Infinispan の分散キー/値のストアとデータグリッドの読み取りと書き込みを行います。 | はい | |
| camel-jdbc-starter | SQL および JDBC を通じてデータベースにアクセスします。 | はい | |
| camel-jira-starter | JIRA 問題トラッカーと対話します。 | はい | |
| camel-jms-starter | JMS Queue または Topic との間でメッセージを送受信します。 | はい | |
| camel-jpa-starter | Java Persistence API (JPA) を使用して、データベースから Java オブジェクトを保存し、取得します。 | はい | |
| camel-jslt-starter | JSLT を使用して JSON ペイロードをクエリーまたは変換します。 | はい | |
| camel-kafka-starter | Apache Kafka ブローカーとの間でメッセージを送受信します。 | はい | |
| camel-kamelet-starter | Kamelets を呼び出します。 | はい | |
| camel-kubernetes-starter | Kubernetes ConfigMaps に対する操作を実行し、ConfigMaps の変更に関する通知を受け取ります。 | はい | |
| camel-kubernetes-starter | Kubernetes カスタムリソースに対する操作を実行し、デプロイメントの変更に関する通知を受け取ります。 | はい | |
| camel-kubernetes-starter | Kubernetes デプロイメントに対する操作を実行し、デプロイメントの変更に関する通知を受け取ります。 | はい | |
| camel-kubernetes-starter | Kubernetes イベントに対する操作を実行し、イベントの変更に関する通知を受け取ります。 | はい | |
| camel-kubernetes-starter | Kubernetes Horizontal Pod Autoscaler (HPA) に対する操作を実行し、HPA の変更に関する通知を受け取ります。 | はい | |
| camel-kubernetes-starter | Kubernetes ジョブに対する操作を実行します。 | はい | |
| camel-kubernetes-starter | Kubernetes 名前空間に対する操作を実行し、名前空間の変更に関する通知を受け取ります。 | はい | |
| camel-kubernetes-starter | Kubernetes ノードに対する操作を実行し、ノードの変更に関する通知を受け取ります。 | はい | |
| camel-kubernetes-starter | Kubernetes 永続ボリュームに対する操作を実行し、永続ボリュームの変更に関する通知を受け取ります。 | はい | |
| camel-kubernetes-starter | Kubernetes 永続ボリューム要求に対する操作を実行し、永続ボリューム要求の変更に関する通知を受け取ります。 | はい | |
| camel-kubernetes-starter | Kubernetes Pod に対する操作を実行し、Pod の変更に関する通知を受け取ります。 | はい | |
| camel-kubernetes-starter | はい。Kubernetes レプリケーションコントローラーに対する操作を実行し、レプリケーションコントローラーの変更に関する通知を受け取ります。 | はい | |
| camel-kubernetes-starter | Kubernetes リソースクォータに対する操作を実行します。 | はい | |
| camel-kubernetes-starter | Kubernetes シークレットに対する操作を実行します。 | はい | |
| camel-kubernetes-starter | Kubernetes サービスアカウントに対する操作を実行します。 | はい | |
| camel-kubernetes-starter | Kubernetes サービスに対する操作を実行し、サービスの変更に関する通知を受け取ります。 | はい | |
| camel-kudu-starter | Apache Hadoop エコシステムの無料およびオープンソースの列指向データストアである Apache Kudu と対話します。 | いいえ | |
| camel-language-starter | Camel がサポートする任意の言語でスクリプトを実行します。 | はい | |
| camel-ldap-starter | LDAP サーバーで検索を実行します。 | はい | |
| camel-log-starter | 基礎となるロギングメカニズムにメッセージをログとして記録します。 | はい | |
| camel-lra-starter | Long-Running-Action フレームワークの Camel saga バインディング。 | はい | |
| camel-mail-starter | imap、pop3、および smtp プロトコルを使用してメールを送受信します。 | はい | |
| camel-mail-microsoft-oauth-starter | Camel Mail OAuth2 Authenticator for Microsoft Exchange Online。 | はい | |
| camel-mapstruct-starter | Mapstruct を使用した型変換。 | はい | |
| camel-master-starter | クラスター内の単一のコンシューマーのみが特定のエンドポイントから消費するようにします。JVM が停止した場合に自動的にフェイルオーバーします。 | はい | |
| camel-micrometer-starter | Micrometer ライブラリーを使用して、Camel ルートからさまざまなメトリクスを直接収集します。 | はい | |
| camel-minio-starter | Minio SDK を使用して、Minio Storage Service からオブジェクトを保存および取得します。 | はい | |
| camel-mllp-starter | MLLP プロトコルを使用して外部システムと通信します。 | はい | |
| camel-mock-starter | モックを使用してルートおよび仲介ルールをテストします。 | はい | |
| camel-mongodb-starter | MongoDB ドキュメントおよびコレクションの操作を実行します。 | はい | |
| camel-mybatis-starter | MyBatis を使用して、リレーショナルデータベースでクエリー、ポーリング、挿入、更新、または削除を実行します。 | はい | |
| camel-netty-starter | Netty 4.x で TCP または UDP を使用するソケットレベルのネットワーク。 | はい | |
| camel-olingo4-starter | Apache Olingo OData API を使用して OData 4.0 サービスと通信します。 | はい | |
| camel-kubernetes-starter | OpenShift ビルド設定に対する操作を実行します。 | はい | |
| camel-kubernetes-starter | OpenShift ビルドに対する操作を実行します。 | はい | |
| camel-kubernetes-starter | Openshift デプロイメント設定に対する操作を実行し、デプロイメント設定の変更に関する通知を受け取ります。 | はい | |
| camel-netty-http-starter | Netty 4.x を使用する Netty HTTP サーバーおよびクライアント。 | はい | |
| camel-paho-starter | Eclipse Paho MQTT クライアントを使用して MQTT メッセージブローカーと通信します。 | はい | |
| camel-paho-mqtt5-starter | Eclipse Paho MQTT v5 クライアントを使用して MQTT メッセージブローカーと通信します。 | はい | |
| camel-platform-http-starter | 現在のプラットフォームで利用可能な HTTP サーバーを使用して HTTP エンドポイントを公開します。 | はい | |
| camel-quartz-starter | Quartz 2.x スケジューラーを使用してメッセージの送信をスケジュールします。 | はい | |
| camel-ref-starter | Camel Registry で名前によって動的に検索されたエンドポイントにメッセージをルーティングします。 | はい | |
| camel-rest-starter | REST サービスを公開するか、外部 REST サービスを呼び出します。 | はい | |
| camel-saga-starter | Saga EIP を使用して、ルート内でカスタムアクションを実行します。 | はい | |
| camel-salesforce-starter | Java DTO を使用して Salesforce と通信します。 | はい | |
| camel-sap-starter | SAP Java コネクター (SAP JCo) ライブラリーを使用して SAP との双方向通信を容易にし、SAP IDoc ライブラリーを使用して中間ドキュメント (IDoc) 形式でのドキュメントの送信を容易にします。 | はい | |
| camel-scheduler-starter | java.util.concurrent.ScheduledExecutorService を使用して、指定された間隔でメッセージを生成します。 | はい | |
| camel-seda-starter | 同じ JVM の Camel コンテキストから別のエンドポイントを非同期に呼び出します。 | はい | |
| camel-servlet-starter | Servlet によって HTTP リクエストを処理します。 | はい | |
| camel-slack-starter | Slack との間でメッセージを送受信します。 | はい | |
| camel-smb-starter | SMB (Server Message Block) 共有からファイルを受信します。 | はい | |
| camel-snmp-starter | トラップを受信し、SNMP (Simple Network Management Protocol) 対応デバイスをポーリングします。 | はい | |
| camel-splunk-starter | Splunk でイベントを公開または検索します。 | いいえ | |
| camel-spring-batch-starter | さらに処理するためにメッセージを Spring Batch に送信します。 | はい | |
| camel-spring-jdbc-starter | Spring Transaction サポートにより、SQL および JDBC を介してデータベースにアクセスします。 | はい | |
| camel-spring-ldap-starter | メッセージペイロードとしてフィルターを使用して、LDAP サーバーで検索を実行します。 | はい | |
| camel-spring-rabbitmq-starter | Spring RabbitMQ クライアントを使用して RabbitMQ からメッセージを送受信します。 | はい | |
| camel-spring-redis-starter | Redis からメッセージを送受信します。 | はい | |
| camel-spring-ws-starter | このコンポーネントを使用して、Spring Web Services と統合できます。Web サービスにアクセスするためのクライアント側のサポート、およびコントラクトファースト Web サービスを作成するためのサーバー側のサポートを提供します。 | はい | |
| camel-sql-starter | Spring JDBC を使用して SQL クエリーを実行します。 | はい | |
| camel-sql-starter | Spring JDBC を使用して、SQL クエリーを JDBC ストアドプロシージャーとして実行します。 | はい | |
| camel-ssh-starter | SSH を使用してリモートホストでコマンドを実行します。 | はい | |
| camel-stub-starter | 開発中またはテスト中に物理エンドポイントをスタブアウトします。 | はい | |
| camel-telegram-starter | Telegram Bot API として動作するメッセージを送受信します。 | はい | |
| camel-timer-starter | java.util.Timer を使用して、指定された間隔でメッセージを生成します。 | はい | |
| camel-validator-starter | XML スキーマと JAXP 検証を使用してペイロードを検証します。 | はい | |
| camel-velocity-starter | Velocity テンプレートを使用してメッセージを変換します。 | はい | |
| camel-vertx-http-starter | Vert.x を使用して、外部 HTTP サーバーにリクエストを送信します。 | はい | |
| camel-vertx-websocket-starter | WebSocket エンドポイントを公開し、Vert.x を使用してリモート WebSocket サーバーに接続します。 | はい | |
| camel-webhook-starter | Webhook エンドポイントを公開して、他の Camel コンポーネントのプッシュ通知を受信します。 | はい | |
| camel-xj-starter | XSLT を使用して、JSON および XML メッセージを変換します。 | はい | |
| camel-xslt-starter | XSLT テンプレートを使用して XML ペイロードを変換します。 | はい | |
| camel-xslt-saxon-starter | Saxon を使用した XSLT テンプレートを使用して XML ペイロードを変換します。 | はい |
| コンポーネント | アーティファクト | 説明 | IBM Power および IBM Z のサポート |
|---|---|---|---|
| camel-avro-starter | Apache Avro バイナリーデータフォーマットを使用して、メッセージをシリアライズおよびデシリアライズします。 | はい | |
| camel-jackson-avro-starter | Jackson を使用して、POJO を Avro にマーシャリングし、その逆も行います。 | はい | |
| camel-bindy-starter | Camel Bindy を使用して、POJO とキーと値のペア (KVP) 形式の間でマーシャリングおよびアンマーシャリングします。 | はい | |
| camel-hl7-starter | HL7 MLLP コーデックを使用して、HL7 (Health Care) モデルオブジェクトをマーシャリングおよびアンマーシャリングします。 | はい | |
| camel-jacksonxml-starter | Jackson の XMLMapper エクステンションを使用して、XML ペイロードを POJO に、およびその逆にアンマーシャリングします。 | はい | |
| camel-jaxb-starter | JAXB2 XML マーシャリング標準を使用して、XML ペイロードを POJO に、およびその逆にアンマーシャリングします。 | はい | |
| camel-gson-starter | Gson を使用して、POJO を JSON に、およびその逆にマーシャリングします。 | はい | |
| camel-jackson-starter | Jackson を使用して、POJO を JSON にマーシャリングし、その逆も行います。 | はい | |
| camel-jackson-protobuf-starter | Jackson を使用して、POJO を Protobuf にマーシャリングし、その逆も行います。 | はい | |
| camel-soap-starter | Java オブジェクトを SOAP メッセージにマーシャリングし、その逆も行います。 | はい | |
| camel-zipfile-starter | java.util.zip.ZipStream を使用して、ストリームを圧縮および圧縮解除します。 | はい |
| 言語 | アーティファクト | 説明 | IBM Power および IBM Z のサポート |
|---|---|---|---|
| camel-core-starter | 固定の値は、ルートの起動時に一度だけ設定されます。 | はい | |
| camel-core-starter | コンパイルされた単純な式を評価します。 | はい | |
| camel-core-starter | Exchange からプロパティーを取得します。 | はい | |
| camel-core-starter | Simple 言語のファイル関連機能。 | はい | |
| camel-groovy-starter | Groovy スクリプトを評価します。 | はい | |
| camel-core-starter | Exchange からヘッダーを取得します。 | はい | |
| camel-jq-starter | JQ 式を JSON メッセージボディーに対して評価します。 | はい | |
| camel-jsonpath-starter | JSON メッセージのボディーに対して、JSONPath 式を評価します。 | はい | |
| camel-core-starter | レジストリーの既存の式を使用します。 | はい | |
| camel-core-starter | Camel 単純式を評価します。 | はい | |
| camel-core-starter | 区切り文字パターンを使用してテキストペイロードをトークン化します。 | はい | |
| camel-xml-jaxp-starter | XML ペイロードをトークン化します。 | はい | |
| camel-xpath-starter | XML ペイロードに対して XPath 式を評価します。 | はい | |
| camel-saxon-starter | XQuery および Saxon を使用して XML ペイロードをクエリーまたは変換します。 | はい |
| エクステンション | アーティファクト | 説明 | IBM Power および IBM Z のサポート |
|---|---|---|---|
| camel-jasypt-starter | Jasypt を使用したセキュリティー | はい | |
| camel-kamelet-main-starter | Kamelet スタンドアロンを実行するためのメイン | はい | |
| camel-openapi-java-starter | openapi ドキュメントを使用するための REST-dsl サポート | はい | |
| camel-opentelemetry-starter | OpenTelemetry を使用した分散トレース | はい | |
| camel-spring-security-starter | Spring Security を使用したセキュリティー | はい | |
| camel-yaml-dsl-starter | YAML を使用した Camel DSL | はい |
第2章 AMQP リンクのコピーリンクがクリップボードにコピーされました!
Camel 1.2 以降
producer と consumer の両方がサポート対象
AMQP コンポーネントは、Qpid プロジェクトの JMS クライアント API を使用して AMQP 1.0 プロトコル をサポートします。
2.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で camel-amqp を使用する場合は、自動設定をサポートするために次の Maven 依存関係を pom.xml に追加します。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-amqp-starter</artifactId>
</dependency>
2.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
amqp:[queue:|topic:]destinationName[?options]
2.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
2.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
2.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
2.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
AMQP コンポーネントは、以下に示す 100 のオプションをサポートしています。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| clientId (common) |
使用する JMS クライアント ID を設定します。この値を指定する場合は、一意である必要があり、単一の JMS 接続インスタンスでのみ使用できることに注意してください。クライアント ID はどのクライアントメッセージを保存するかを制御するために使用されるため、JMS 1.1 永続トピックサブスクリプションでは | String | |
| connectionFactory (common) | 使用する接続ファクトリー。コンポーネントまたはエンドポイントで接続ファクトリーを設定する必要があります。 | ConnectionFactory | |
| disableReplyTo (common) | Camel がメッセージの JMSReplyTo ヘッダーを無視するかどうかを指定します。true の場合、Camel は JMSReplyTo ヘッダーで指定された宛先に返信を送り返しません。Camel にルートから消費させたいが、コード内の別のコンポーネントが応答メッセージを処理するため、Camel に自動的に応答メッセージを送り返したくない場合は、このオプションを使用できます。Camel を異なるメッセージブローカー間のプロキシーとして使用し、あるシステムから別のシステムにメッセージをルーティングする場合にも、このオプションを使用できます。 | false | boolean |
| durableSubscriptionName (common) |
永続トピックサブスクリプションを指定するための永続サブスクライバー名。 | String | |
| includeAmqpAnnotations (common) | AMQP から Camel メッセージへのマッピング時に AMQP アノテーションを含めるかどうか。これを true に設定すると、JMS_AMQP_MA_ 接頭辞を含む AMQP メッセージアノテーションがメッセージヘッダーにマップされます。Apache Qpid JMS API の制限により、現在、配信アノテーションは無視されます。 | false | boolean |
| jmsMessageType (common) | JMS メッセージの送信に特定の javax.jms.Message 実装を強制的に使用できるようにします。可能な値は、Bytes、Map、Object、Stream、Text です。デフォルトでは、Camel は In body タイプから使用する JMS メッセージタイプを決定します。このオプションで指定できます。 列挙値:
| JmsMessageType | |
| replyTo (common) | 明示的な ReplyTo 宛先を提供します (consumer の Message.getJMSReplyTo() の着信値をオーバーライドします)。 | String | |
| testConnectionOnStartup (common) | 起動時に接続をテストするかどうかを指定します。これにより、Camel の起動時に、すべての JMS consumer が JMS ブローカーへの有効な接続を持つことが保証されます。接続を許可できない場合、Camel は起動時に例外を出力します。これにより、接続に失敗した状態で Camel が開始されなくなります。JMS producer もテストされています。 | false | boolean |
| acknowledgementModeName (consumer) | JMS 確認応答名。SESSION_TRANSACTED、CLIENT_ACKNOWLEDGE、AUTO_ACKNOWLEDGE、DUPS_OK_ACKNOWLEDGE のいずれかです。 列挙値:
| AUTO_ACKNOWLEDGE | String |
| artemisConsumerPriority (consumer) | consumer の優先度を使用すると、優先度の高い consumer がアクティブなときにメッセージを受信できるようになります。通常、キューに接続されているアクティブな consumer は、ラウンドロビン方式でキューからメッセージを受け取ります。consumer の優先度が使用されているとき、同じ優先度の高いアクティブな consumer が複数存在する場合は、メッセージがラウンドロビンで配信されます。メッセージは、優先度の高い consumer がメッセージを消費するために利用できるクレジットを持っていない場合、またはそれらの優先度の高い consumer がメッセージの受け入れを拒否した場合にのみ、優先度の低い consumer に送信されます (たとえば、consumer に関連するセレクターの基準を満たさないため)。 | int | |
| asyncConsumer (consumer) | JmsConsumer が Exchange を非同期的に処理するかどうか。有効にすると、JmsConsumer は JMS キューから次のメッセージを取得できますが、前のメッセージは (非同期ルーティングエンジンによって) 非同期に処理されます。これは、メッセージが 100% 厳密に順序どおりに処理されない可能性があることを意味します。無効になっている場合 (デフォルト)、JmsConsumer が JMS キューから次のメッセージを取得する前に Exchange が完全に処理されます。transacted が有効になっている場合、トランザクションは同期的に実行する必要があるため、asyncConsumer=true は非同期的に実行されないことに注意してください (Camel 3.0 は非同期トランザクションをサポートする場合があります)。 | false | boolean |
| autoStartup (consumer) | consumer コンテナーを自動起動するかどうかを指定します。 | true | boolean |
| cacheLevel (consumer) | 基礎となる JMS リソースの ID によってキャッシュレベルを設定します。詳細は、cacheLevelName オプションを参照してください。 | int | |
| cacheLevelName (consumer) | 基礎となる JMS リソースのキャッシュレベルを名前で設定します。可能な値は、CACHE_AUTO、CACHE_CONNECTION、CACHE_CONSUMER、CACHE_NONE、および CACHE_SESSION です。デフォルト設定は CACHE_AUTO です。詳細は、Spring のドキュメントとトランザクションキャッシュレベルを参照してください。 列挙値:
| CACHE_AUTO | String |
| concurrentConsumers (consumer) | JMS から消費する場合の同時 consumer のデフォルト数を指定します (JMS を介した要求/応答ではありません)。スレッドの動的なスケールアップ/ダウンを制御するには、maxMessagesPerTask オプションも参照してください。JMS を介して要求/応答を行う場合は、オプション replyToConcurrentConsumers を使用して、応答メッセージリスナーの同時 consumer の数を制御します。 | 1 | int |
| maxConcurrentConsumers (consumer) | JMS から消費する場合の同時 consumer の最大数を指定します (JMS を介した要求/応答ではありません)。スレッドの動的なスケールアップ/ダウンを制御するには、maxMessagesPerTask オプションも参照してください。JMS を介して要求/応答を行う場合は、オプション replyToMaxConcurrentConsumers を使用して、応答メッセージリスナーの同時 consumer の数を制御します。 | int | |
| replyToDeliveryPersistent (consumer) | 返信に対してデフォルトで永続的な配信を使用するかどうかを指定します。 | true | boolean |
| selector (consumer) | 使用する JMS セレクターを設定します。 | String | |
| subscriptionDurable (consumer) | サブスクリプションを永続化するかどうかを設定します。使用する永続サブスクリプション名は、subscriptionName プロパティーで指定できます。デフォルトは false です。通常、subscriptionName 値と組み合わせて永続的なサブスクリプションを登録するには、これを true に設定します (メッセージリスナークラス名がサブスクリプション名として十分でない場合)。トピック (pub-sub ドメイン) をリッスンする場合にのみ意味があるため、このメソッドは pubSubDomain フラグも切り替えます。 | false | boolean |
| subscriptionName (consumer) | 作成するサブスクリプションの名前を設定します。共有または永続的なサブスクリプションを持つトピック (pub-sub ドメイン) の場合に適用されます。クライアント ID が設定されている場合、サブスクリプション名はこのクライアントの JMS クライアント ID 内で一意である必要があります。デフォルトは、指定されたメッセージリスナーのクラス名です。注: 共有サブスクリプション (JMS 2.0 が必要) を除き、サブスクリプションごとに 1 つの同時 consumer (このメッセージリスナコンテナーのデフォルト) のみが許可されます。 | String | |
| subscriptionShared (consumer) | サブスクリプションを共有するかどうかを設定します。使用する共有サブスクリプション名は、subscriptionName プロパティーで指定できます。デフォルトは false です。通常は subscriptionName 値と組み合わせて共有サブスクリプションを登録するには、これを true に設定します (メッセージリスナークラス名がサブスクリプション名として十分でない場合)。共有サブスクリプションも永続的である可能性があるため、このフラグを subscriptionDurable と組み合わせることもできます (多くの場合は組み合わせます)。トピック (pub-sub ドメイン) をリッスンする場合にのみ意味があるため、このメソッドは pubSubDomain フラグも切り替えます。JMS 2.0 互換のメッセージブローカーが必要です。 | false | boolean |
| acceptMessagesWhileStopping (consumer (advanced)) | consumer が停止中にメッセージを受け入れるかどうかを指定します。実行時に JMS ルートを開始および停止するが、キューにメッセージが入れられている場合は、このオプションを有効にすることを検討してください。このオプションが false の場合は、JMS ルートを停止すると、メッセージが拒否される可能性があり、JMS ブローカは再配信を試行する必要がありますが、これも拒否される可能性があり、最終的にメッセージは JMS ブローカー上のデッドレターキューに移動される可能性があります。これを回避するには、このオプションを有効にすることを推奨します。 | false | boolean |
| allowReplyManagerQuickStop (consumer (advanced)) | JmsConfiguration#isAcceptMessagesWhileStopping が有効で、org.apache.camel.CamelContext が現在停止している場合に、要求/応答メッセージングのリプライマネージャーで使用される DefaultMessageListenerContainer が、DefaultMessageListenerContainer.runningAllowed フラグを迅速に停止できるようにするかどうか。このクイック停止機能は、通常の JMS consumer ではデフォルトで有効になっていますが、応答マネージャーを有効にするには、このフラグを有効にする必要があります。 | false | boolean |
| consumerType (consumer (advanced)) | 使用する consumer タイプ。Simple、Default、または Custom のいずれかです。consumer タイプによって、使用する Spring JMS リスナーが決まります。デフォルトは org.springframework.jms.listener.DefaultMessageListenerContainer を使用し、Simple は org.springframework.jms.listener.SimpleMessageListenerContainer を使用します。Custom を指定した場合は、messageListenerContainerFactory オプションで定義された MessageListenerContainerFactory によって、使用する org.springframework.jms.listener.AbstractMessageListenerContainer が決まります。 列挙値:
| デフォルト | ConsumerType |
| defaultTaskExecutorType (consumer (advanced)) | consumer エンドポイントとプロデューサエンドポイントの ReplyTo consumer の両方に対して、DefaultMessageListenerContainer で使用するデフォルトの TaskExecutor タイプを指定します。可能な値: SimpleAsync (Spring の SimpleAsyncTaskExecutor を使用) または ThreadPool (Spring の ThreadPoolTaskExecutor を最適な値で使用 - キャッシュされたスレッドプールのようなもの)。設定されていない場合は、デフォルトで以前の動作になり、consumer エンドポイントにはキャッシュされたスレッドプールが使用され、応答 consumer には SimpleAsync が使用されます。ThreadPool の使用は、同時 consumer が動的に増減するエラスティック設定でスレッドのゴミを減らすために推奨されます。 列挙値:
| DefaultTaskExecutorType | |
| eagerLoadingOfProperties (consumer (advanced)) | メッセージが読み込まれるとすぐに JMS プロパティーとペイロードの熱心な読み込みを有効にします。これは、JMS プロパティーが必要ない場合があるため一般的に非効率的ですが、基盤となる JMS プロバイダーと JMS プロパティーの使用に関する問題を早期に発見できる場合があります。オプション eagerPoisonBody も参照してください。 | false | boolean |
| eagerPoisonBody (consumer (advanced)) | eagerLoadingOfProperties が有効であり、JMS メッセージペイロード (JMS 本文または JMS プロパティー) が有害 (読み取り/マッピングできない) である場合は、代わりにこのテキストをメッセージボディーとして設定し、メッセージを処理できるようにします (有害の原因は、Exchange では例外としてすでに保存されています)。これは、eagerPoisonBody=false を設定することでオフにすることができます。オプション eagerLoadingOfProperties も参照してください。 | $\{exception.message} による JMS メッセージへの影響 | String |
| exposeListenerSession (consumer (advanced)) | メッセージを消費するときにリスナーセッションを公開するかどうかを指定します。 | false | boolean |
| replyToConsumerType (consumer (advanced)) | 応答 consumer の consumer タイプ (要求/応答を行う場合)。Simple、Default、または Custom のいずれかになります。consumer タイプによって、使用する Spring JMS リスナーが決まります。デフォルトは org.springframework.jms.listener.DefaultMessageListenerContainer を使用し、Simple は org.springframework.jms.listener.SimpleMessageListenerContainer を使用します。Custom を指定した場合は、messageListenerContainerFactory オプションで定義された MessageListenerContainerFactory によって、使用する org.springframework.jms.listener.AbstractMessageListenerContainer が決まります。 列挙値:
| デフォルト | ConsumerType |
| replyToSameDestinationAllowed (consumer (advanced)) | JMS consumer が、consumer が使用しているのと同じ宛先に応答メッセージを送信できるかどうか。これにより、同じメッセージを消費してそれ自体に送り返すことで、無限ループが回避されます。 | false | boolean |
| taskExecutor (consumer (advanced)) | メッセージを消費するためのカスタムタスクエグゼキュータを指定できます。 | TaskExecutor | |
| deliveryDelay (producer) | JMS の送信呼び出しに使用する配信遅延を設定します。このオプションには、JMS 2.0 準拠のブローカーが必要です。 | -1 | long |
| deliveryMode (producer) | 使用する配信モードを指定します。可能な値は、javax.jms.DeliveryMode で定義された値です。NON_PERSISTENT = 1 および PERSISTENT = 2。 列挙値:
| Integer | |
| deliveryPersistent (producer) | デフォルトで永続配信を使用するかどうかを指定します。 | true | boolean |
| explicitQosEnabled (producer) | メッセージの送信時に、deliveryMode、priority、または timeToLive のサービス品質を使用する必要があるかどうかを設定します。このオプションは、Spring の JmsTemplate に基づいています。deliveryMode、priority、および timeToLive オプションは、現在のエンドポイントに適用されます。これは、メッセージの粒度で動作し、Camel In メッセージヘッダーから排他的に QoS プロパティーを読み取る preserveMessageQos オプションとは対照的です。 | false | Boolean |
| formatDateHeadersToIso8601 (producer) | JMS 日付プロパティーを ISO 8601 標準に従ってフォーマットするかどうかを設定します。 | false | boolean |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| preserveMessageQos (producer) | JMS エンドポイントの QoS 設定ではなく、メッセージで指定された QoS 設定を使用してメッセージを送信する場合は、true に設定します。次の 3 つのヘッダーは、JMSPriority、JMSDeliveryMode、および JMSExpiration と見なされます。それらのすべてまたは一部のみを指定できます。指定されていない場合、Camel は代わりにエンドポイントからの値を使用するようにフォールバックします。したがって、このオプションを使用すると、ヘッダーはエンドポイントからの値をオーバーライドします。対照的に、explicitQosEnabled オプションは、エンドポイントに設定されたオプションのみを使用し、メッセージヘッダーの値は使用しません。 | false | boolean |
| priority (producer) | 1 より大きい値は、送信時のメッセージの優先度を指定します (1 が最低の優先度で、9 が最高の優先度です)。このオプションを有効にするには、explicitQosEnabled オプションも有効にする必要があります。 列挙値:
| 4 | int |
| replyToConcurrentConsumers (producer) | JMS を介して要求/応答を行うときの同時 consumer のデフォルト数を指定します。スレッドの動的なスケールアップ/ダウンを制御するには、maxMessagesPerTask オプションも参照してください。 | 1 | int |
| replyToMaxConcurrentConsumers (producer) | JMS を介した要求/応答を使用する場合の同時 consumer の最大数を指定します。スレッドの動的なスケールアップ/ダウンを制御するには、maxMessagesPerTask オプションも参照してください。 | int | |
| replyToOnTimeoutMaxConcurrentConsumers (producer) | JMS 経由の要求/応答を使用するときにタイムアウトが発生したときに、ルーティングを継続するための同時 consumer の最大数を指定します。 | 1 | int |
| replyToOverride (producer) | JMS メッセージで明示的な ReplyTo 宛先を提供します。これは、replyTo の設定をオーバーライドします。メッセージをリモート Queue に転送し、ReplyTo 宛先から応答メッセージを受け取る場合に便利です。 | String | |
| replyToType (producer) | JMS を介して要求/応答を行うときに、replyTo キューに使用する戦略の種類を明示的に指定できます。可能な値は、Temporary、Shared、または Exclusive です。デフォルトでは、Camel は一時キューを使用します。ただし、replyTo が設定されている場合は、デフォルトで Shared が使用されます。このオプションを使用すると、共有キューの代わりに専用キューを使用できます。詳細は、Camel JMS のドキュメントを参照してください。特に、クラスター化された環境で実行する場合の影響に関する注意事項と、共有応答キューは代替の一時および排他的キューよりもパフォーマンスが低いという事実を参照してください。 列挙値:
| ReplyToType | |
| requestTimeout (producer) | InOut Exchange パターン使用時の応答待ちタイムアウト (ミリ秒単位)。デフォルトは 20 秒です。ヘッダー CamelJmsRequestTimeout を含めて、このエンドポイントで設定されたタイムアウト値をオーバーライドし、メッセージごとに個別のタイムアウト値を持つことができます。requestTimeoutCheckerInterval オプションも参照してください。 | 20000 | long |
| timeToLive (producer) | メッセージの送信時に、メッセージの有効期限をミリ秒単位で指定します。 | -1 | long |
| allowAdditionalHeaders (producer (advanced)) | このオプションは、JMS 仕様に従って無効な値を持つ可能性がある追加のヘッダーを許可するために使用されます。たとえば、WMQ などの一部のメッセージシステムは、バイト配列またはその他の無効な型の値を含む接頭辞 JMS_IBM_MQMD_ を使用するヘッダー名でこれを行います。コンマで区切られた複数のヘッダー名を指定し、ワイルドカードマッチングの接尾辞として使用できます。 | String | |
| allowNullBody (producer (advanced)) | ボディーのないメッセージの送信を許可するかどうか。このオプションが false でメッセージボディーが null の場合は、JMSException が出力されます。 | true | boolean |
| alwaysCopyMessage (producer (advanced)) | true の場合、メッセージが producer に渡されて送信されると、Camel は常にメッセージの JMS メッセージコピーを作成します。replyToDestinationSelectorName が設定されている場合など、状況によってはメッセージをコピーする必要があります (ちなみに、replyToDestinationSelectorName が設定されている場合、Camel は alwaysCopyMessage オプションを true に設定します)。 | false | boolean |
| correlationProperty (producer (advanced)) | InOut 交換パターンを使用する場合、JMSCorrelationID JMS プロパティーの代わりにこの JMS プロパティーを使用してメッセージを関連付けます。設定されたメッセージがこのプロパティーの値のみに関連付けられる場合、JMSCorrelationID プロパティーは無視され、Camel によって設定されません。 | String | |
| disableTimeToLive (producer (advanced)) | このオプションを使用して、有効期限を強制的に無効にします。たとえば、JMS を介して要求/応答を行う場合、Camel はデフォルトで、送信されるメッセージの存続時間として requestTimeout 値を使用します。問題は、送信側システムと受信側システムのクロックを同期させる必要があるため、同期していることです。これをアーカイブするのは必ずしも簡単ではありません。したがって、disableTimeToLive=true を使用して、送信されたメッセージに有効期限の値を設定しないようにすることができます。その後、メッセージは受信側システムで期限切れになりません。詳細は、以下の生存時間のセクションを参照してください。 | false | boolean |
| forceSendOriginalMessage (producer (advanced)) | mapJmsMessage=false を使用すると、ルート中にヘッダーに触れると (get または set)、Camel は新しい JMS メッセージを作成して新しい JMS 宛先に送信します。Camel が受信した元の JMS メッセージを強制的に送信するには、このオプションを true に設定します。 | false | boolean |
| includeSentJMSMessageID (producer (advanced)) | InOnly を使用して JMS 宛先に送信する場合にのみ適用されます (例: ファイアアンドフォーゲット)。このオプションを有効にすると、メッセージが JMS 宛先に送信されたときに JMS クライアントによって使用された実際の JMSMessageID で Camel Exchange が強化されます。 | false | boolean |
| replyToCacheLevelName (producer (advanced)) | JMS を介して要求/応答を行うときに、応答 consumer のキャッシュレベルを名前で設定します。このオプションは、固定応答キュー (一時的ではない) を使用する場合にのみ適用されます。Camel はデフォルトで次を使用します: 排他的または replyToSelectorName と共有の CACHE_CONSUMER。そして、replyToSelectorName なしで共有するための CACHE_SESSION。IBM WebSphere などの一部の JMS ブローカーは、replyToCacheLevelName=CACHE_NONE を機能させるために設定する必要がある場合があります。注: 一時キューを使用する場合、CACHE_NONE は許可されず、CACHE_CONSUMER や CACHE_SESSION などのより高い値を使用する必要があります。 列挙値:
| String | |
| replyToDestinationSelectorName (producer (advanced)) | 使用する固定名を使用して JMS セレクターを設定し、共有キューを使用している場合 (つまり、一時的な応答キューを使用していない場合) に、他の応答から自分の応答を除外できるようにします。 | String | |
| streamMessageTypeEnabled (producer (advanced)) | StreamMessage タイプを有効にするかどうかを設定します。ファイル、InputStream などのストリーミングの種類のメッセージペイロードは、BytesMessage または StreamMessage として送信されます。このオプションは、どの種類が使用されるかを制御します。デフォルトでは、BytesMessage が使用され、メッセージペイロード全体がメモリーに読み込まれます。このオプションを有効にすると、メッセージペイロードがチャンク単位でメモリーに読み込まれ、データがなくなるまで各チャンクが StreamMessage に書き込まれます。 | false | boolean |
| allowAutoWiredConnectionFactory (advanced) | 接続ファクトリーが設定されていない場合に、レジストリーから ConnectionFactory を自動検出するかどうか。ConnectionFactory のインスタンスが 1 つだけ見つかった場合は、それが使用されます。これはデフォルトで有効になっています。 | true | boolean |
| allowAutoWiredDestinationResolver (advanced) | 宛先リゾルバーが設定されていない場合に、レジストリーから DestinationResolver を自動検出するかどうか。DestinationResolver のインスタンスが 1 つだけ見つかった場合は、それが使用されます。これはデフォルトで有効になっています。 | true | boolean |
| allowSerializedHeaders (advanced) | シリアル化されたヘッダーを含めるかどうかを制御します。transferExchange が true の場合にのみ適用されます。これには、オブジェクトがシリアライズ可能である必要があります。Camel はシリアル化できないオブジェクトを除外し、WARN レベルでログに記録します。 | false | boolean |
| artemisStreamingEnabled (advanced) | Apache Artemis ストリーミングモード用に最適化するかどうか。これにより、JMS StreamMessage タイプで Artemis を使用する場合のメモリーオーバーヘッドを削減できます。このオプションは、Apache Artemis が使用されている場合にのみ有効にする必要があります。 | false | boolean |
| asyncStartListener (advanced) | ルートの開始時に JmsConsumer メッセージリスナーを非同期で開始するかどうか。たとえば、JmsConsumer がリモート JMS ブローカーへの接続を取得できない場合は、再試行中やフェイルオーバー中にブロックされる可能性があります。これにより、ルートの開始時に Camel がブロックされます。このオプションを true に設定すると、ルートの起動を許可します。一方、JmsConsumer は非同期モードで専用のスレッドを使用して JMS ブローカーに接続します。このオプションを使用する場合は、接続を確立できない場合は例外が WARN レベルでログに記録され、consumer はメッセージを受信できず、ルートを再起動して再試行できます。 | false | boolean |
| asyncStopListener (advanced) | ルートを停止するときに、JmsConsumer メッセージリスナーを非同期的に停止するかどうか。 | false | boolean |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| configuration (advanced) | 共有 JMS 設定を使用するには。 | JmsConfiguration | |
| destinationResolver (advanced) | 独自のリゾルバーを使用できるようにするプラグ可能な org.springframework.jms.support.destination.DestinationResolver (たとえば、JNDI レジストリーで実際の宛先を検索するため)。 | DestinationResolver | |
| errorHandler (advanced) | Message の処理中にキャッチされない例外が出力された場合に呼び出される org.springframework.util.ErrorHandler を指定します。デフォルトでは、errorHandler が設定されていない場合、これらの例外は WARN レベルでログに記録されます。errorHandlerLoggingLevel および errorHandlerLogStackTrace オプションを使用して、ログレベルとスタックトレースをログに記録するかどうかを設定できます。これにより、カスタム errorHandler をコーディングするよりも設定がはるかに簡単になります。 | ErrorHandler | |
| exceptionListener (advanced) | 基礎となる JMS 例外の通知を受ける JMS 例外リスナーを指定します。 | ExceptionListener | |
| idleConsumerLimit (advanced) | 常にアイドル状態にできる consumer の数の制限を指定します。 | 1 | int |
| idleTaskExecutionLimit (advanced) | 実行中にメッセージを受信していない、受信タスクのアイドル実行の制限を指定します。この制限に達すると、タスクはシャットダウンし、他の実行中のタスクに受信を任せます (動的スケジューリングの場合。maxConcurrentConsumers 設定を参照してください)。Spring から入手できる追加のドキュメントがあります。 | 1 | int |
| includeAllJMSXProperties (advanced) | JMS から Camel Message へのマッピング時に JMSXxxx プロパティーをすべて含めるかどうか。これを true に設定すると、JMSXAppID や JMSXUserID などのプロパティーが含まれます。注記: カスタムの headerFilterStrategy を使用している場合、このオプションは適用されません。 | false | boolean |
| jmsKeyFormatStrategy (advanced) | JMS 仕様に準拠できるように、JMS キーをエンコードおよびデコードするためのプラグ可能な戦略。Camel は、追加設定なしで、default と passthrough の 2 つの実装を提供します。デフォルトのストラテジーでは、ドットとハイフン(. および -)を安全にマーシャリングします。パススルー戦略では、キーはそのまま残ります。JMS ヘッダーキーに不正な文字が含まれているかどうかは問題にならない JMS ブローカーに使用できます。org.apache.camel.component.jms.JmsKeyFormatStrategy の独自の実装を提供し、# 表記を使用して参照できます。 列挙値:
| JmsKeyFormatStrategy | |
| mapJmsMessage (advanced) | Camel が受信した JMS メッセージを適切なペイロードタイプ (javax.jms.TextMessage を文字列など) に自動マップするかどうかを指定します。 | true | boolean |
| maxMessagesPerTask (advanced) | タスクあたりのメッセージ数。-1 は無制限です。同時 consumer の範囲 (例: min max) を使用する場合、このオプションを使用して値を 100 などに設定し、必要な作業が少ない場合に consumer が縮小する速度を制御できます。 | -1 | int |
| messageConverter (advanced) | カスタム Spring org.springframework.jms.support.converter.MessageConverter を使用して、javax.jms.Message との間でどのようにマッピングするかを制御できるようにします。 | MessageConverter | |
| messageCreatedStrategy (advanced) | Camel が JMS メッセージを送信しているときに、Camel が javax.jms.Message オブジェクトの新しいインスタンスを作成するときに呼び出される、指定された MessageCreatedStrategy を使用します。 | MessageCreatedStrategy | |
| messageIdEnabled (advanced) | 送信時に、メッセージ ID を追加するかどうかを指定します。これは、JMS ブローカーへの単なるヒントです。JMS プロバイダーがこのヒントを受け入れる場合、これらのメッセージのメッセージ ID を null に設定する必要があります。プロバイダーがヒントを無視する場合、メッセージ ID は通常の一意の値に設定する必要があります。 | true | boolean |
| messageListenerContainerFactory (advanced) | メッセージを消費するために使用する org.springframework.jms.listener.AbstractMessageListenerContainer を決定するために使用される MessageListenerContainerFactory のレジストリー ID。これを設定すると、consumerType が自動的に Custom に設定されます。 | MessageListenerContainerFactory | |
| messageTimestampEnabled (advanced) | メッセージの送信時にデフォルトでタイムスタンプを有効にするかどうかを指定します。これは、JMS ブローカーへの単なるヒントです。JMS プロバイダーがこのヒントを受け入れる場合、これらのメッセージのタイムスタンプをゼロに設定する必要があります。プロバイダーがヒントを無視する場合は、タイムスタンプを通常の値に設定する必要があります。 | true | boolean |
| pubSubNoLocal (advanced) | 独自の接続によってパブリッシュされたメッセージの配信を禁止するかどうかを指定します。 | false | boolean |
| queueBrowseStrategy (advanced) | キューを参照するときにカスタム QueueBrowseStrategy を使用するには。 | QueueBrowseStrategy | |
| receiveTimeout (advanced) | メッセージ受信のタイムアウト (ミリ秒単位)。 | 1000 | long |
| recoveryInterval (advanced) | リカバリーの試行の間隔を指定します。つまり、接続が更新されるタイミング(ミリ秒単位)を指定します。デフォルトは 5000 ミリ秒、つまり 5 秒です。 | 5000 | long |
| requestTimeoutCheckerInterval (advanced) | JMS を介してリクエスト/リプライを行うときに、Camel がタイムアウトになった Exchange をチェックする頻度を設定します。デフォルトでは、Camel は 1 秒に 1 回確認します。ただし、タイムアウトが発生したときに迅速に対応する必要がある場合は、この間隔を短くして、より頻繁にチェックすることができます。タイムアウトは、オプション requestTimeout によって決定されます。 | 1000 | long |
| synchronous (advanced) | 同期処理を厳密に使用するかどうかを設定します。 | false | boolean |
| transferException (advanced) | 有効で、Request Reply メッセージング (InOut) を使用していて、Exchange が consumer 側で失敗した場合、原因となった例外が javax.jms.ObjectMessage として応答で返されます。クライアントが Camel の場合、返された Exception は再出力されます。これにより、Camel JMS をルーティングのブリッジとして使用できます。たとえば、永続的なキューを使用して堅牢なルーティングを有効にできます。transferExchange も有効にしている場合は、このオプションが優先されることに注意してください。キャッチされた例外はシリアライズ可能である必要があります。consumer 側の元の Exception は、producer に返されるときに org.apache.camel.RuntimeCamelException などの外部例外にラップできます。データは Java オブジェクトのシリアライゼーションを使用しており、受信側がクラスレベルでデータをデシリアライズできる必要があるため、これは注意して使用してください。 | false | boolean |
| transferExchange (advanced) | 本文とヘッダーだけでなく、電信送金で交換を転送できます。次のフィールドが転送されます: In body、Out body、Fault body、In ヘッダー、Out ヘッダー、Fault ヘッダー、交換プロパティー、交換例外。これには、オブジェクトがシリアライズ可能である必要があります。Camel はシリアル化できないオブジェクトを除外し、WARN レベルでログに記録します。プロデューサ側と consumer 側の両方でこのオプションを有効にする必要があるため、Camel はペイロードが Exchange であり、通常のペイロードではないことを認識します。データは Java オブジェクトのシリアライゼーションを使用しており、レシーバーがクラスレベルでデータをデシリアライズできる必要があるため、これは注意して使用してください。これにより、互換性のある Camel バージョンを使用する必要がある producer と consumer の間の強い結合が強制されます。 | false | boolean |
| useMessageIDAsCorrelationID (advanced) | InOut メッセージの JMSCorrelationID として JMSMessageID を常に使用するかどうかを指定します。 | false | boolean |
| waitForProvisionCorrelationToBeUpdatedCounter (advanced) | JMS を介して要求/応答を行う場合、およびオプション useMessageIDAsCorrelationID が有効な場合に、暫定相関 ID が実際の相関 ID に更新されるのを待機する回数。 | 50 | int |
| waitForProvisionCorrelationToBeUpdatedThreadSleepingTime (advanced) | 暫定相関 ID が更新されるのを待機するたびにスリープする間隔 (ミリ単位)。 | 100 | long |
| headerFilterStrategy (filter) | カスタムの org.apache.camel.spi.HeaderFilterStrategy を使用して、Camel メッセージとの間でヘッダーをフィルターします。 | HeaderFilterStrategy | |
| errorHandlerLoggingLevel (logging) | キャッチされていない例外をログに記録するためのデフォルトの errorHandler ログレベルを設定できます。 列挙値:
| WARN | LoggingLevel |
| errorHandlerLogStackTrace (logging) | デフォルトの errorHandler でスタックトレースをログに記録するかどうかを制御できます。 | true | boolean |
| password (security) | ConnectionFactory で使用するパスワード。また、ConnectionFactory でユーザー名およびパスワードを直接設定することもできます。 | String | |
| username (security) | ConnectionFactory で使用するユーザー名。また、ConnectionFactory でユーザー名およびパスワードを直接設定することもできます。 | String | |
| 取引済み (取引) | トランザクションモードを使用するかどうかを指定します。 | false | boolean |
| transactedInOut (トランザクション) | InOut 操作 (リクエストリプライ) がデフォルトでトランザクションモードを使用するかどうかを指定します。このフラグが true に設定されている場合、Spring JmsTemplate は sessionTransacted を true に設定し、acknowledgeMode は InOut 操作に使用される JmsTemplate でトランザクションされます。Spring JMS からの注意: JTA トランザクション内では、createQueue、createTopic メソッドに渡されるパラメーターは考慮されません。Java EE トランザクションコンテキストに応じて、コンテナーはこれらの値を独自に決定します。同様に、この場合、Spring JMS は既存の JMS セッションで動作するため、これらのパラメーターはローカルで管理されるトランザクション内でも考慮されません。このフラグを true に設定すると、管理対象トランザクションの外部で実行されている場合は短いローカル JMS トランザクションが使用され、管理対象トランザクション (XA トランザクション以外) が存在する場合は同期されたローカル JMS トランザクションが使用されます。これには、ローカル JMS トランザクションがメイントランザクション (ネイティブ JDBC トランザクションの場合もある) と一緒に管理され、JMS トランザクションがメイントランザクションの直後にコミットされるという効果があります。 | false | boolean |
| lazyCreateTransactionManager (transaction (advanced)) | true の場合、オプション transacted=true のときに transactionManager が挿入されていない場合、Camel は JmsTransactionManager を作成します。 | true | boolean |
| transactionManager (transaction (advanced)) | 使用する Spring トランザクションマネージャー。 | PlatformTransactionManager | |
| transactionName (transaction (advanced)) | 使用するトランザクションの名前。 | String | |
| transactionTimeout (transaction (advanced)) | トランザクションモードを使用している場合の、トランザクションのタイムアウト値 (秒単位)。 | -1 | int |
2.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
AMQP エンドポイントは、URI 構文を使用して設定されます。
amqp:destinationType:destinationName
パスおよびクエリーパラメーターを使用します。
2.5.1. パスパラメーター (2 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| destinationType (common) | 使用する宛先の種類。 列挙値:
| queue | String |
| destinationName (common) | 必須 宛先として使用するキューまたはトピックの名前。 | String |
2.5.2. クエリーパラメーター (96 パラメーター): リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| clientId (common) |
使用する JMS クライアント ID を設定します。この値を指定する場合は、一意である必要があり、単一の JMS 接続インスタンスでのみ使用できることに注意してください。通常、JMS 1.1 の永続トピックサブスクリプションの場合にのみ必要です。クライアント ID はどのクライアントメッセージを保存するかを制御するために使用されるため、JMS 1.1 永続トピックサブスクリプションでは | String | |
| connectionFactory (common) | 使用する接続ファクトリー。コンポーネントまたはエンドポイントで接続ファクトリーを設定する必要があります。 | ConnectionFactory | |
| disableReplyTo (common) | Camel がメッセージの JMSReplyTo ヘッダーを無視するかどうかを指定します。true の場合、Camel は JMSReplyTo ヘッダーで指定された宛先に返信を送り返しません。Camel にルートから消費させたいが、コード内の別のコンポーネントが応答メッセージを処理するため、Camel に自動的に応答メッセージを送り返したくない場合は、このオプションを使用できます。Camel を異なるメッセージブローカー間のプロキシーとして使用し、あるシステムから別のシステムにメッセージをルーティングする場合にも、このオプションを使用できます。 | false | boolean |
| durableSubscriptionName (common) | 永続トピックサブスクリプションを指定するための永続サブスクライバー名。clientId オプションは、JMS 1.1 永続サブスクリプション用に設定する必要があります。また、プライベート永続サブスクリプションを作成するために JMS 2.0 用に設定することもできます。 | String | |
| jmsMessageType (common) | JMS メッセージの送信に特定の javax.jms.Message 実装を強制的に使用できるようにします。可能な値は、Bytes、Map、Object、Stream、Text です。デフォルトでは、Camel は In body タイプから使用する JMS メッセージタイプを決定します。このオプションで指定できます。 列挙値:
| JmsMessageType | |
| replyTo (common) | 明示的な ReplyTo 宛先を提供します (consumer の Message.getJMSReplyTo() の着信値をオーバーライドします)。 | String | |
| testConnectionOnStartup (common) | 起動時に接続をテストするかどうかを指定します。これにより、Camel の起動時に、すべての JMS consumer が JMS ブローカーへの有効な接続を持つことが保証されます。接続を許可できない場合、Camel は起動時に例外を出力します。これにより、接続に失敗した状態で Camel が開始されなくなります。JMS producer もテストされています。 | false | boolean |
| acknowledgementModeName (consumer) | JMS 確認応答名。SESSION_TRANSACTED、CLIENT_ACKNOWLEDGE、AUTO_ACKNOWLEDGE、DUPS_OK_ACKNOWLEDGE のいずれかです。 列挙値:
| AUTO_ACKNOWLEDGE | String |
| artemisConsumerPriority (consumer) | consumer の優先度を使用すると、優先度の高い consumer がアクティブなときにメッセージを受信できるようになります。通常、キューに接続されているアクティブな consumer は、ラウンドロビン方式でキューからメッセージを受け取ります。consumer の優先度が使用されているとき、同じ優先度の高いアクティブな consumer が複数存在する場合は、メッセージがラウンドロビンで配信されます。メッセージは、優先度の高い consumer がメッセージを消費するために利用できるクレジットを持っていない場合、またはそれらの優先度の高い consumer がメッセージの受け入れを拒否した場合にのみ、優先度の低い consumer に送信されます (たとえば、consumer に関連するセレクターの基準を満たさないため)。 | int | |
| asyncConsumer (consumer) | JmsConsumer が Exchange を非同期的に処理するかどうか。有効にすると、JmsConsumer は JMS キューから次のメッセージを取得できますが、前のメッセージは (非同期ルーティングエンジンによって) 非同期に処理されます。これは、メッセージが 100% 厳密に順序どおりに処理されない可能性があることを意味します。無効になっている場合 (デフォルト)、JmsConsumer が JMS キューから次のメッセージを取得する前に Exchange が完全に処理されます。transacted が有効になっている場合、トランザクションは同期的に実行する必要があるため、asyncConsumer=true は非同期的に実行されないことに注意してください (Camel 3.0 は非同期トランザクションをサポートする場合があります)。 | false | boolean |
| autoStartup (consumer) | consumer コンテナーを自動起動するかどうかを指定します。 | true | boolean |
| cacheLevel (consumer) | 基礎となる JMS リソースの ID によってキャッシュレベルを設定します。詳細は、cacheLevelName オプションを参照してください。 | int | |
| cacheLevelName (consumer) | 基礎となる JMS リソースのキャッシュレベルを名前で設定します。可能な値は、CACHE_AUTO、CACHE_CONNECTION、CACHE_CONSUMER、CACHE_NONE、および CACHE_SESSION です。デフォルト設定は CACHE_AUTO です。詳細は、Spring のドキュメントとトランザクションキャッシュレベルを参照してください。 列挙値:
| CACHE_AUTO | String |
| concurrentConsumers (consumer) | JMS から消費する場合の同時 consumer のデフォルト数を指定します (JMS を介した要求/応答ではありません)。スレッドの動的なスケールアップ/ダウンを制御するには、maxMessagesPerTask オプションも参照してください。JMS を介して要求/応答を行う場合は、オプション replyToConcurrentConsumers を使用して、応答メッセージリスナーの同時 consumer の数を制御します。 | 1 | int |
| maxConcurrentConsumers (consumer) | JMS から消費する場合の同時 consumer の最大数を指定します (JMS を介した要求/応答ではありません)。スレッドの動的なスケールアップ/ダウンを制御するには、maxMessagesPerTask オプションも参照してください。JMS を介して要求/応答を行う場合は、オプション replyToMaxConcurrentConsumers を使用して、応答メッセージリスナーの同時 consumer の数を制御します。 | int | |
| replyToDeliveryPersistent (consumer) | 返信に対してデフォルトで永続的な配信を使用するかどうかを指定します。 | true | boolean |
| selector (consumer) | 使用する JMS セレクターを設定します。 | String | |
| subscriptionDurable (consumer) | サブスクリプションを永続化するかどうかを設定します。使用する永続サブスクリプション名は、subscriptionName プロパティーで指定できます。デフォルトは false です。通常、subscriptionName 値と組み合わせて永続的なサブスクリプションを登録するには、これを true に設定します (メッセージリスナークラス名がサブスクリプション名として十分でない場合)。トピック (pub-sub ドメイン) をリッスンする場合にのみ意味があるため、このメソッドは pubSubDomain フラグも切り替えます。 | false | boolean |
| subscriptionName (consumer) | 作成するサブスクリプションの名前を設定します。共有または永続的なサブスクリプションを持つトピック (pub-sub ドメイン) の場合に適用されます。クライアント ID が設定されている場合、サブスクリプション名はこのクライアントの JMS クライアント ID 内で一意である必要があります。デフォルトは、指定されたメッセージリスナーのクラス名です。注: 共有サブスクリプション (JMS 2.0 が必要) を除き、サブスクリプションごとに 1 つの同時 consumer (このメッセージリスナコンテナーのデフォルト) のみが許可されます。 | String | |
| subscriptionShared (consumer) | サブスクリプションを共有するかどうかを設定します。使用する共有サブスクリプション名は、subscriptionName プロパティーで指定できます。デフォルトは false です。通常は subscriptionName 値と組み合わせて共有サブスクリプションを登録するには、これを true に設定します (メッセージリスナークラス名がサブスクリプション名として十分でない場合)。共有サブスクリプションも永続的である可能性があるため、このフラグを subscriptionDurable と組み合わせることもできます (多くの場合は組み合わせます)。トピック (pub-sub ドメイン) をリッスンする場合にのみ意味があるため、このメソッドは pubSubDomain フラグも切り替えます。JMS 2.0 互換のメッセージブローカーが必要です。 | false | boolean |
| acceptMessagesWhileStopping (consumer (advanced)) | consumer が停止中にメッセージを受け入れるかどうかを指定します。実行時に JMS ルートを開始および停止するが、キューにメッセージが入れられている場合は、このオプションを有効にすることを検討してください。このオプションが false の場合は、JMS ルートを停止すると、メッセージが拒否される可能性があり、JMS ブローカは再配信を試行する必要がありますが、これも拒否される可能性があり、最終的にメッセージは JMS ブローカー上のデッドレターキューに移動される可能性があります。これを回避するには、このオプションを有効にすることを推奨します。 | false | boolean |
| allowReplyManagerQuickStop (consumer (advanced)) | JmsConfiguration#isAcceptMessagesWhileStopping が有効で、org.apache.camel.CamelContext が現在停止している場合に、要求/応答メッセージングのリプライマネージャーで使用される DefaultMessageListenerContainer が、DefaultMessageListenerContainer.runningAllowed フラグを迅速に停止できるようにするかどうか。このクイック停止機能は、通常の JMS consumer ではデフォルトで有効になっていますが、応答マネージャーを有効にするには、このフラグを有効にする必要があります。 | false | boolean |
| consumerType (consumer (advanced)) | 使用する consumer タイプ。Simple、Default、または Custom のいずれかです。consumer タイプによって、使用する Spring JMS リスナーが決まります。デフォルトは org.springframework.jms.listener.DefaultMessageListenerContainer を使用し、Simple は org.springframework.jms.listener.SimpleMessageListenerContainer を使用します。Custom を指定した場合は、messageListenerContainerFactory オプションで定義された MessageListenerContainerFactory によって、使用する org.springframework.jms.listener.AbstractMessageListenerContainer が決まります。 列挙値:
| デフォルト | ConsumerType |
| defaultTaskExecutorType (consumer (advanced)) | consumer エンドポイントとプロデューサエンドポイントの ReplyTo consumer の両方に対して、DefaultMessageListenerContainer で使用するデフォルトの TaskExecutor タイプを指定します。可能な値: SimpleAsync (Spring の SimpleAsyncTaskExecutor を使用) または ThreadPool (Spring の ThreadPoolTaskExecutor を最適な値で使用 - キャッシュされたスレッドプールのようなもの)。設定されていない場合は、デフォルトで以前の動作になり、consumer エンドポイントにはキャッシュされたスレッドプールが使用され、応答 consumer には SimpleAsync が使用されます。ThreadPool の使用は、同時 consumer が動的に増減するエラスティック設定でスレッドのゴミを減らすために推奨されます。 列挙値:
| DefaultTaskExecutorType | |
| eagerLoadingOfProperties (consumer (advanced)) | メッセージが読み込まれるとすぐに JMS プロパティーとペイロードの熱心な読み込みを有効にします。これは、JMS プロパティーが必要ない場合があるため一般的に非効率的ですが、基盤となる JMS プロバイダーと JMS プロパティーの使用に関する問題を早期に発見できる場合があります。オプション eagerPoisonBody も参照してください。 | false | boolean |
| eagerPoisonBody (consumer (advanced)) | eagerLoadingOfProperties が有効であり、JMS メッセージペイロード (JMS 本文または JMS プロパティー) が有害 (読み取り/マッピングできない) である場合は、代わりにこのテキストをメッセージボディーとして設定し、メッセージを処理できるようにします (有害の原因は、Exchange では例外としてすでに保存されています)。これは、eagerPoisonBody=false を設定することでオフにすることができます。オプション eagerLoadingOfProperties も参照してください。 | $\{exception.message} による JMS メッセージへの影響 | String |
| exceptionHandler (consumer (advanced)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (advanced)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| exposeListenerSession (consumer (advanced)) | メッセージを消費するときにリスナーセッションを公開するかどうかを指定します。 | false | boolean |
| replyToConsumerType (consumer (advanced)) | 応答 consumer の consumer タイプ (要求/応答を行う場合)。Simple、Default、または Custom のいずれかになります。consumer タイプによって、使用する Spring JMS リスナーが決まります。デフォルトは org.springframework.jms.listener.DefaultMessageListenerContainer を使用し、Simple は org.springframework.jms.listener.SimpleMessageListenerContainer を使用します。Custom を指定した場合は、messageListenerContainerFactory オプションで定義された MessageListenerContainerFactory によって、使用する org.springframework.jms.listener.AbstractMessageListenerContainer が決まります。 列挙値:
| デフォルト | ConsumerType |
| replyToSameDestinationAllowed (consumer (advanced)) | JMS consumer が、consumer が使用しているのと同じ宛先に応答メッセージを送信できるかどうか。これにより、同じメッセージを消費してそれ自体に送り返すことで、無限ループが回避されます。 | false | boolean |
| taskExecutor (consumer (advanced)) | メッセージを消費するためのカスタムタスクエグゼキュータを指定できます。 | TaskExecutor | |
| deliveryDelay (producer) | JMS の送信呼び出しに使用する配信遅延を設定します。このオプションには、JMS 2.0 準拠のブローカーが必要です。 | -1 | long |
| deliveryMode (producer) | 使用する配信モードを指定します。可能な値は、javax.jms.DeliveryMode で定義された値です。NON_PERSISTENT = 1 および PERSISTENT = 2。 列挙値:
| Integer | |
| deliveryPersistent (producer) | デフォルトで永続配信を使用するかどうかを指定します。 | true | boolean |
| explicitQosEnabled (producer) | メッセージの送信時に、deliveryMode、priority、または timeToLive のサービス品質を使用する必要があるかどうかを設定します。このオプションは、Spring の JmsTemplate に基づいています。deliveryMode、priority、および timeToLive オプションは、現在のエンドポイントに適用されます。これは、メッセージの粒度で動作し、Camel In メッセージヘッダーから排他的に QoS プロパティーを読み取る preserveMessageQos オプションとは対照的です。 | false | Boolean |
| formatDateHeadersToIso8601 (producer) | JMS 日付プロパティーを ISO 8601 標準に従ってフォーマットするかどうかを設定します。 | false | boolean |
| preserveMessageQos (producer) | JMS エンドポイントの QoS 設定ではなく、メッセージで指定された QoS 設定を使用してメッセージを送信する場合は、true に設定します。次の 3 つのヘッダーは、JMSPriority、JMSDeliveryMode、および JMSExpiration と見なされます。それらのすべてまたは一部のみを指定できます。指定されていない場合、Camel は代わりにエンドポイントからの値を使用するようにフォールバックします。したがって、このオプションを使用すると、ヘッダーはエンドポイントからの値をオーバーライドします。対照的に、explicitQosEnabled オプションは、エンドポイントに設定されたオプションのみを使用し、メッセージヘッダーの値は使用しません。 | false | boolean |
| priority (producer) | 1 より大きい値は、送信時のメッセージの優先度を指定します (1 が最低の優先度で、9 が最高の優先度です)。このオプションを有効にするには、explicitQosEnabled オプションも有効にする必要があります。 列挙値:
| 4 | int |
| replyToConcurrentConsumers (producer) | JMS を介して要求/応答を行うときの同時 consumer のデフォルト数を指定します。スレッドの動的なスケールアップ/ダウンを制御するには、maxMessagesPerTask オプションも参照してください。 | 1 | int |
| replyToMaxConcurrentConsumers (producer) | JMS を介した要求/応答を使用する場合の同時 consumer の最大数を指定します。スレッドの動的なスケールアップ/ダウンを制御するには、maxMessagesPerTask オプションも参照してください。 | int | |
| replyToOnTimeoutMaxConcurrentConsumers (producer) | JMS 経由の要求/応答を使用するときにタイムアウトが発生したときに、ルーティングを継続するための同時 consumer の最大数を指定します。 | 1 | int |
| replyToOverride (producer) | JMS メッセージで明示的な ReplyTo 宛先を提供します。これは、replyTo の設定をオーバーライドします。メッセージをリモート Queue に転送し、ReplyTo 宛先から応答メッセージを受け取る場合に便利です。 | String | |
| replyToType (producer) | JMS を介して要求/応答を行うときに、replyTo キューに使用する戦略の種類を明示的に指定できます。可能な値は、Temporary、Shared、または Exclusive です。デフォルトでは、Camel は一時キューを使用します。ただし、replyTo が設定されている場合は、デフォルトで Shared が使用されます。このオプションを使用すると、共有キューの代わりに専用キューを使用できます。詳細は、Camel JMS のドキュメントを参照してください。特に、クラスター化された環境で実行する場合の影響に関する注意事項と、共有応答キューは代替の一時および排他的キューよりもパフォーマンスが低いという事実を参照してください。 列挙値:
| ReplyToType | |
| requestTimeout (producer) | InOut Exchange パターン使用時の応答待ちタイムアウト (ミリ秒単位)。デフォルトは 20 秒です。ヘッダー CamelJmsRequestTimeout を含めて、このエンドポイントで設定されたタイムアウト値をオーバーライドし、メッセージごとに個別のタイムアウト値を持つことができます。requestTimeoutCheckerInterval オプションも参照してください。 | 20000 | long |
| timeToLive (producer) | メッセージの送信時に、メッセージの有効期限をミリ秒単位で指定します。 | -1 | long |
| allowAdditionalHeaders (producer (advanced)) | このオプションは、JMS 仕様に従って無効な値を持つ可能性がある追加のヘッダーを許可するために使用されます。たとえば、WMQ などの一部のメッセージシステムは、バイト配列またはその他の無効な型の値を含む接頭辞 JMS_IBM_MQMD_ を使用するヘッダー名でこれを行います。コンマで区切られた複数のヘッダー名を指定し、ワイルドカードマッチングの接尾辞として使用できます。 | String | |
| allowNullBody (producer (advanced)) | ボディーのないメッセージの送信を許可するかどうか。このオプションが false でメッセージボディーが null の場合は、JMSException が出力されます。 | true | boolean |
| alwaysCopyMessage (producer (advanced)) | true の場合、メッセージが producer に渡されて送信されると、Camel は常にメッセージの JMS メッセージコピーを作成します。replyToDestinationSelectorName が設定されている場合など、状況によってはメッセージをコピーする必要があります (ちなみに、replyToDestinationSelectorName が設定されている場合、Camel は alwaysCopyMessage オプションを true に設定します)。 | false | boolean |
| correlationProperty (producer (advanced)) | InOut 交換パターンを使用する場合、JMSCorrelationID JMS プロパティーの代わりにこの JMS プロパティーを使用してメッセージを関連付けます。設定されたメッセージがこのプロパティーの値のみに関連付けられる場合、JMSCorrelationID プロパティーは無視され、Camel によって設定されません。 | String | |
| disableTimeToLive (producer (advanced)) | このオプションを使用して、有効期限を強制的に無効にします。たとえば、JMS を介して要求/応答を行う場合、Camel はデフォルトで、送信されるメッセージの存続時間として requestTimeout 値を使用します。問題は、送信側システムと受信側システムのクロックを同期させる必要があるため、同期していることです。これをアーカイブするのは必ずしも簡単ではありません。したがって、disableTimeToLive=true を使用して、送信されたメッセージに有効期限の値を設定しないようにすることができます。その後、メッセージは受信側システムで期限切れになりません。詳細は、以下の生存時間のセクションを参照してください。 | false | boolean |
| forceSendOriginalMessage (producer (advanced)) | mapJmsMessage=false を使用すると、ルート中にヘッダーに触れると (get または set)、Camel は新しい JMS メッセージを作成して新しい JMS 宛先に送信します。Camel が受信した元の JMS メッセージを強制的に送信するには、このオプションを true に設定します。 | false | boolean |
| includeSentJMSMessageID (producer (advanced)) | InOnly を使用して JMS 宛先に送信する場合にのみ適用されます (例: ファイアアンドフォーゲット)。このオプションを有効にすると、メッセージが JMS 宛先に送信されたときに JMS クライアントによって使用された実際の JMSMessageID で Camel Exchange が強化されます。 | false | boolean |
| lazyStartProducer (producer (advanced)) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| replyToCacheLevelName (producer (advanced)) | JMS を介して要求/応答を行うときに、応答 consumer のキャッシュレベルを名前で設定します。このオプションは、固定応答キュー (一時的ではない) を使用する場合にのみ適用されます。Camel はデフォルトで次を使用します: 排他的または replyToSelectorName と共有の CACHE_CONSUMER。そして、replyToSelectorName なしで共有するための CACHE_SESSION。IBM WebSphere などの一部の JMS ブローカーは、replyToCacheLevelName=CACHE_NONE を機能させるために設定する必要がある場合があります。注: 一時キューを使用する場合、CACHE_NONE は許可されず、CACHE_CONSUMER や CACHE_SESSION などのより高い値を使用する必要があります。 列挙値:
| String | |
| replyToDestinationSelectorName (producer (advanced)) | 使用する固定名を使用して JMS セレクターを設定し、共有キューを使用している場合 (つまり、一時的な応答キューを使用していない場合) に、他の応答から自分の応答を除外できるようにします。 | String | |
| streamMessageTypeEnabled (producer (advanced)) | StreamMessage タイプを有効にするかどうかを設定します。ファイル、InputStream などのストリーミングの種類のメッセージペイロードは、BytesMessage または StreamMessage として送信されます。このオプションは、どの種類が使用されるかを制御します。デフォルトでは、BytesMessage が使用され、メッセージペイロード全体がメモリーに読み込まれます。このオプションを有効にすると、メッセージペイロードがチャンク単位でメモリーに読み込まれ、データがなくなるまで各チャンクが StreamMessage に書き込まれます。 | false | boolean |
| allowSerializedHeaders (advanced) | シリアル化されたヘッダーを含めるかどうかを制御します。transferExchange が true の場合にのみ適用されます。これには、オブジェクトがシリアライズ可能である必要があります。Camel はシリアル化できないオブジェクトを除外し、WARN レベルでログに記録します。 | false | boolean |
| artemisStreamingEnabled (advanced) | Apache Artemis ストリーミングモード用に最適化するかどうか。これにより、JMS StreamMessage タイプで Artemis を使用する場合のメモリーオーバーヘッドを削減できます。このオプションは、Apache Artemis が使用されている場合にのみ有効にする必要があります。 | false | boolean |
| asyncStartListener (advanced) | ルートの開始時に JmsConsumer メッセージリスナーを非同期で開始するかどうか。たとえば、JmsConsumer がリモート JMS ブローカーへの接続を取得できない場合は、再試行中やフェイルオーバー中にブロックされる可能性があります。これにより、ルートの開始時に Camel がブロックされます。このオプションを true に設定すると、ルートの起動を許可します。一方、JmsConsumer は非同期モードで専用のスレッドを使用して JMS ブローカーに接続します。このオプションを使用する場合は、接続を確立できない場合は例外が WARN レベルでログに記録され、consumer はメッセージを受信できず、ルートを再起動して再試行できます。 | false | boolean |
| asyncStopListener (advanced) | ルートを停止するときに、JmsConsumer メッセージリスナーを非同期的に停止するかどうか。 | false | boolean |
| destinationResolver (advanced) | 独自のリゾルバーを使用できるようにするプラグ可能な org.springframework.jms.support.destination.DestinationResolver (たとえば、JNDI レジストリーで実際の宛先を検索するため)。 | DestinationResolver | |
| errorHandler (advanced) | Message の処理中にキャッチされない例外が出力された場合に呼び出される org.springframework.util.ErrorHandler を指定します。デフォルトでは、errorHandler が設定されていない場合、これらの例外は WARN レベルでログに記録されます。errorHandlerLoggingLevel および errorHandlerLogStackTrace オプションを使用して、ログレベルとスタックトレースをログに記録するかどうかを設定できます。これにより、カスタム errorHandler をコーディングするよりも設定がはるかに簡単になります。 | ErrorHandler | |
| exceptionListener (advanced) | 基礎となる JMS 例外の通知を受ける JMS 例外リスナーを指定します。 | ExceptionListener | |
| headerFilterStrategy (advanced) | カスタムの HeaderFilterStrategy を使用して、Camel メッセージとの間でヘッダーをフィルタリングします。 | HeaderFilterStrategy | |
| idleConsumerLimit (advanced) | 常にアイドル状態にできる consumer の数の制限を指定します。 | 1 | int |
| idleTaskExecutionLimit (advanced) | 実行中にメッセージを受信していない、受信タスクのアイドル実行の制限を指定します。この制限に達すると、タスクはシャットダウンし、他の実行中のタスクに受信を任せます (動的スケジューリングの場合。maxConcurrentConsumers 設定を参照してください)。Spring から入手できる追加のドキュメントがあります。 | 1 | int |
| includeAllJMSXProperties (advanced) | JMS から Camel Message へのマッピング時に JMSXxxx プロパティーをすべて含めるかどうか。これを true に設定すると、JMSXAppID や JMSXUserID などのプロパティーが含まれます。注記: カスタムの headerFilterStrategy を使用している場合、このオプションは適用されません。 | false | boolean |
| jmsKeyFormatStrategy (advanced) | JMS 仕様に準拠できるように、JMS キーをエンコードおよびデコードするためのプラグ可能な戦略。Camel は、追加設定なしで、default と passthrough の 2 つの実装を提供します。デフォルトのストラテジーでは、ドットとハイフン(. および -)を安全にマーシャリングします。パススルー戦略では、キーはそのまま残ります。JMS ヘッダーキーに不正な文字が含まれているかどうかは問題にならない JMS ブローカーに使用できます。org.apache.camel.component.jms.JmsKeyFormatStrategy の独自の実装を提供し、# 表記を使用して参照できます。 列挙値:
| JmsKeyFormatStrategy | |
| mapJmsMessage (advanced) | Camel が受信した JMS メッセージを適切なペイロードタイプ (javax.jms.TextMessage を文字列など) に自動マップするかどうかを指定します。 | true | boolean |
| maxMessagesPerTask (advanced) | タスクあたりのメッセージ数。-1 は無制限です。同時 consumer の範囲 (例: min max) を使用する場合、このオプションを使用して値を 100 などに設定し、必要な作業が少ない場合に consumer が縮小する速度を制御できます。 | -1 | int |
| messageConverter (advanced) | カスタム Spring org.springframework.jms.support.converter.MessageConverter を使用して、javax.jms.Message との間でどのようにマッピングするかを制御できるようにします。 | MessageConverter | |
| messageCreatedStrategy (advanced) | Camel が JMS メッセージを送信しているときに、Camel が javax.jms.Message オブジェクトの新しいインスタンスを作成するときに呼び出される、指定された MessageCreatedStrategy を使用します。 | MessageCreatedStrategy | |
| messageIdEnabled (advanced) | 送信時に、メッセージ ID を追加するかどうかを指定します。これは、JMS ブローカーへの単なるヒントです。JMS プロバイダーがこのヒントを受け入れる場合、これらのメッセージのメッセージ ID を null に設定する必要があります。プロバイダーがヒントを無視する場合、メッセージ ID は通常の一意の値に設定する必要があります。 | true | boolean |
| messageListenerContainerFactory (advanced) | メッセージを消費するために使用する org.springframework.jms.listener.AbstractMessageListenerContainer を決定するために使用される MessageListenerContainerFactory のレジストリー ID。これを設定すると、consumerType が自動的に Custom に設定されます。 | MessageListenerContainerFactory | |
| messageTimestampEnabled (advanced) | メッセージの送信時にデフォルトでタイムスタンプを有効にするかどうかを指定します。これは、JMS ブローカーへの単なるヒントです。JMS プロバイダーがこのヒントを受け入れる場合、これらのメッセージのタイムスタンプをゼロに設定する必要があります。プロバイダーがヒントを無視する場合は、タイムスタンプを通常の値に設定する必要があります。 | true | boolean |
| pubSubNoLocal (advanced) | 独自の接続によってパブリッシュされたメッセージの配信を禁止するかどうかを指定します。 | false | boolean |
| receiveTimeout (advanced) | メッセージ受信のタイムアウト (ミリ秒単位)。 | 1000 | long |
| recoveryInterval (advanced) | リカバリーの試行の間隔を指定します。つまり、接続が更新されるタイミング(ミリ秒単位)を指定します。デフォルトは 5000 ミリ秒、つまり 5 秒です。 | 5000 | long |
| requestTimeoutCheckerInterval (advanced) | JMS を介してリクエスト/リプライを行うときに、Camel がタイムアウトになった Exchange をチェックする頻度を設定します。デフォルトでは、Camel は 1 秒に 1 回確認します。ただし、タイムアウトが発生したときに迅速に対応する必要がある場合は、この間隔を短くして、より頻繁にチェックすることができます。タイムアウトは、オプション requestTimeout によって決定されます。 | 1000 | long |
| synchronous (advanced) | 同期処理を厳密に使用するかどうかを設定します。 | false | boolean |
| transferException (advanced) | 有効で、Request Reply メッセージング (InOut) を使用していて、Exchange が consumer 側で失敗した場合、原因となった例外が javax.jms.ObjectMessage として応答で返されます。クライアントが Camel の場合、返された Exception は再出力されます。これにより、Camel JMS をルーティングのブリッジとして使用できます。たとえば、永続的なキューを使用して堅牢なルーティングを有効にできます。transferExchange も有効にしている場合は、このオプションが優先されることに注意してください。キャッチされた例外はシリアライズ可能である必要があります。consumer 側の元の Exception は、producer に返されるときに org.apache.camel.RuntimeCamelException などの外部例外にラップできます。データは Java オブジェクトのシリアライゼーションを使用しており、受信側がクラスレベルでデータをデシリアライズできる必要があるため、これは注意して使用してください。 | false | boolean |
| transferExchange (advanced) | 本文とヘッダーだけでなく、電信送金で交換を転送できます。次のフィールドが転送されます: In body、Out body、Fault body、In ヘッダー、Out ヘッダー、Fault ヘッダー、交換プロパティー、交換例外。これには、オブジェクトがシリアライズ可能である必要があります。Camel はシリアル化できないオブジェクトを除外し、WARN レベルでログに記録します。プロデューサ側と consumer 側の両方でこのオプションを有効にする必要があるため、Camel はペイロードが Exchange であり、通常のペイロードではないことを認識します。データは Java オブジェクトのシリアライゼーションを使用しており、レシーバーがクラスレベルでデータをデシリアライズできる必要があるため、これは注意して使用してください。これにより、互換性のある Camel バージョンを使用する必要がある producer と consumer の間の強い結合が強制されます。 | false | boolean |
| useMessageIDAsCorrelationID (advanced) | InOut メッセージの JMSCorrelationID として JMSMessageID を常に使用するかどうかを指定します。 | false | boolean |
| waitForProvisionCorrelationToBeUpdatedCounter (advanced) | JMS を介して要求/応答を行う場合、およびオプション useMessageIDAsCorrelationID が有効な場合に、暫定相関 ID が実際の相関 ID に更新されるのを待機する回数。 | 50 | int |
| waitForProvisionCorrelationToBeUpdatedThreadSleepingTime (advanced) | 暫定相関 ID が更新されるのを待機するたびにスリープする間隔 (ミリ単位)。 | 100 | long |
| errorHandlerLoggingLevel (logging) | キャッチされていない例外をログに記録するためのデフォルトの errorHandler ログレベルを設定できます。 列挙値:
| WARN | LoggingLevel |
| errorHandlerLogStackTrace (logging) | デフォルトの errorHandler でスタックトレースをログに記録するかどうかを制御できます。 | true | boolean |
| password (security) | ConnectionFactory で使用するパスワード。また、ConnectionFactory でユーザー名およびパスワードを直接設定することもできます。 | String | |
| username (security) | ConnectionFactory で使用するユーザー名。また、ConnectionFactory でユーザー名およびパスワードを直接設定することもできます。 | String | |
| 取引済み (取引) | トランザクションモードを使用するかどうかを指定します。 | false | boolean |
| transactedInOut (トランザクション) | InOut 操作 (リクエストリプライ) がデフォルトでトランザクションモードを使用するかどうかを指定します。このフラグが true に設定されている場合、Spring JmsTemplate は sessionTransacted を true に設定し、acknowledgeMode は InOut 操作に使用される JmsTemplate でトランザクションされます。Spring JMS からの注意: JTA トランザクション内では、createQueue、createTopic メソッドに渡されるパラメーターは考慮されません。Java EE トランザクションコンテキストに応じて、コンテナーはこれらの値を独自に決定します。同様に、この場合、Spring JMS は既存の JMS セッションで動作するため、これらのパラメーターはローカルで管理されるトランザクション内でも考慮されません。このフラグを true に設定すると、管理対象トランザクションの外部で実行されている場合は短いローカル JMS トランザクションが使用され、管理対象トランザクション (XA トランザクション以外) が存在する場合は同期されたローカル JMS トランザクションが使用されます。これには、ローカル JMS トランザクションがメイントランザクション (ネイティブ JDBC トランザクションの場合もある) と一緒に管理され、JMS トランザクションがメイントランザクションの直後にコミットされるという効果があります。 | false | boolean |
| lazyCreateTransactionManager (transaction (advanced)) | true の場合、オプション transacted=true のときに transactionManager が挿入されていない場合、Camel は JmsTransactionManager を作成します。 | true | boolean |
| transactionManager (transaction (advanced)) | 使用する Spring トランザクションマネージャー。 | PlatformTransactionManager | |
| transactionName (transaction (advanced)) | 使用するトランザクションの名前。 | String | |
| transactionTimeout (transaction (advanced)) | トランザクションモードを使用している場合の、トランザクションのタイムアウト値 (秒単位)。 | -1 | int |
2.6. 使用方法 リンクのコピーリンクがクリップボードにコピーされました!
AMQP コンポーネントは JMS コンポーネントから継承されるため、前者の使用法は後者とほぼ同じです。
AMQP コンポーネントの使用
// Consuming from AMQP queue
from("amqp:queue:incoming").
to(...);
// Sending message to the AMQP topic
from(...).
to("amqp:topic:notify");
2.7. AMQP コンポーネントの設定 リンクのコピーリンクがクリップボードにコピーされました!
AMQP 1.0 コンポーネントの作成
AMQPComponent amqp = AMQPComponent.amqpComponent("amqp://localhost:5672");
AMQPComponent authorizedAmqp = AMQPComponent.amqpComponent("amqp://localhost:5672", "user", "password");
AMQP コンポーネントを自動的に設定するために、org.apache.camel.component.amqp.AMQPConnectionDetails のインスタンスをレジストリーに追加することもできます。たとえば、Spring Boot の場合、Bean を定義するだけです。
AMQP 接続の詳細の自動設定
@Bean
AMQPConnectionDetails amqpConnection() {
return new AMQPConnectionDetails("amqp://localhost:5672");
}
@Bean
AMQPConnectionDetails securedAmqpConnection() {
return new AMQPConnectionDetails("amqp://localhost:5672", "username", "password");
}
同様に、Camel-CDI を使用する場合は、CDI producer メソッドも使用できます。
CDI の AMQP 接続の詳細の自動設定
@Produces
AMQPConnectionDetails amqpConnection() {
return new AMQPConnectionDetails("amqp://localhost:5672");
}
また、AMQP 接続の詳細を読み取るために信頼することもできます。ファクトリーメソッド AMQPConnectionDetails.discoverAMQP() は、以下のスニペットで示されているように、Kubernetes に似た規則で Camel プロパティーを読み取ろうとします。
AMQP 接続の詳細の自動設定
export AMQP_SERVICE_HOST = "mybroker.com"
export AMQP_SERVICE_PORT = "6666"
export AMQP_SERVICE_USERNAME = "username"
export AMQP_SERVICE_PASSWORD = "password"
...
@Bean
AMQPConnectionDetails amqpConnection() {
return AMQPConnectionDetails.discoverAMQP();
}
AMQP 固有のオプションを有効にする
たとえば、amqp.traceFrames を有効にする必要がある場合は、次の例のように、オプションを URI に追加することで有効にできます。
AMQPComponent amqp = AMQPComponent.amqpComponent("amqp://localhost:5672?amqp.traceFrames=true");
QPID JMS クライアント設定 を参照してください。
2.8. トピックの使用 リンクのコピーリンクがクリップボードにコピーされました!
camel-amqp でトピックを使用するには、以下に示すように、topic:// をトピック接頭辞として使用するようにコンポーネントを設定する必要があります。
<bean id="amqp" class="org.apache.camel.component.amqp.AmqpComponent">
<property name="connectionFactory">
<bean class="org.apache.qpid.jms.JmsConnectionFactory" factory-method="createFromURL">
<property name="remoteURI" value="amqp://localhost:5672" />
<property name="topicPrefix" value="topic://" /> <!-- only necessary when connecting to ActiveMQ over AMQP 1.0 -->
</bean>
</property>
</bean>
AMQPComponent#amqpComponent () メソッドと AMQPConnectionDetails の両方がトピック接頭辞を使用してコンポーネントを事前設定するため、明示的に設定する必要がないことに注意してください。
2.9. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 101 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.amqp.accept-messages-while-stopping | consumer が停止中にメッセージを受け入れるかどうかを指定します。実行時に JMS ルートを開始および停止するが、キューにメッセージが入れられている場合は、このオプションを有効にすることを検討してください。このオプションが false の場合は、JMS ルートを停止すると、メッセージが拒否される可能性があり、JMS ブローカは再配信を試行する必要がありますが、これも拒否される可能性があり、最終的にメッセージは JMS ブローカー上のデッドレターキューに移動される可能性があります。これを回避するには、このオプションを有効にすることを推奨します。 | false | Boolean |
| camel.component.amqp.acknowledgement-mode-name | JMS 確認応答名。SESSION_TRANSACTED、CLIENT_ACKNOWLEDGE、AUTO_ACKNOWLEDGE、DUPS_OK_ACKNOWLEDGE のいずれかです。 | AUTO_ACKNOWLEDGE | String |
| camel.component.amqp.allow-additional-headers | このオプションは、JMS 仕様に従って無効な値を持つ可能性がある追加のヘッダーを許可するために使用されます。たとえば、WMQ などの一部のメッセージシステムは、バイト配列またはその他の無効な型の値を含む接頭辞 JMS_IBM_MQMD_ を使用するヘッダー名でこれを行います。コンマで区切られた複数のヘッダー名を指定し、ワイルドカードマッチングの接尾辞として使用できます。 | String | |
| camel.component.amqp.allow-auto-wired-connection-factory | 接続ファクトリーが設定されていない場合に、レジストリーから ConnectionFactory を自動検出するかどうか。ConnectionFactory のインスタンスが 1 つだけ見つかった場合は、それが使用されます。これはデフォルトで有効になっています。 | true | Boolean |
| camel.component.amqp.allow-auto-wired-destination-resolver | 宛先リゾルバーが設定されていない場合に、レジストリーから DestinationResolver を自動検出するかどうか。DestinationResolver のインスタンスが 1 つだけ見つかった場合は、それが使用されます。これはデフォルトで有効になっています。 | true | Boolean |
| camel.component.amqp.allow-null-body | ボディーのないメッセージの送信を許可するかどうか。このオプションが false でメッセージボディーが null の場合は、JMSException が出力されます。 | true | Boolean |
| camel.component.amqp.allow-reply-manager-quick-stop | JmsConfiguration#isAcceptMessagesWhileStopping が有効で、org.apache.camel.CamelContext が現在停止している場合に、要求/応答メッセージングのリプライマネージャーで使用される DefaultMessageListenerContainer が、DefaultMessageListenerContainer.runningAllowed フラグを迅速に停止できるようにするかどうか。このクイック停止機能は、通常の JMS consumer ではデフォルトで有効になっていますが、応答マネージャーを有効にするには、このフラグを有効にする必要があります。 | false | Boolean |
| camel.component.amqp.allow-serialized-headers | シリアル化されたヘッダーを含めるかどうかを制御します。transferExchange が true の場合にのみ適用されます。これには、オブジェクトがシリアライズ可能である必要があります。Camel はシリアル化できないオブジェクトを除外し、WARN レベルでログに記録します。 | false | Boolean |
| camel.component.amqp.always-copy-message | true の場合、メッセージが producer に渡されて送信されると、Camel は常にメッセージの JMS メッセージコピーを作成します。replyToDestinationSelectorName が設定されている場合など、状況によってはメッセージをコピーする必要があります (ちなみに、replyToDestinationSelectorName が設定されている場合、Camel は alwaysCopyMessage オプションを true に設定します)。 | false | Boolean |
| camel.component.amqp.artemis-consumer-priority | consumer の優先度を使用すると、優先度の高い consumer がアクティブなときにメッセージを受信できるようになります。通常、キューに接続されているアクティブな consumer は、ラウンドロビン方式でキューからメッセージを受け取ります。consumer の優先度が使用されているとき、同じ優先度の高いアクティブな consumer が複数存在する場合は、メッセージがラウンドロビンで配信されます。メッセージは、優先度の高い consumer がメッセージを消費するために利用できるクレジットを持っていない場合、またはそれらの優先度の高い consumer がメッセージの受け入れを拒否した場合にのみ、優先度の低い consumer に送信されます (たとえば、consumer に関連するセレクターの基準を満たさないため)。 | Integer | |
| camel.component.amqp.artemis-streaming-enabled | Apache Artemis ストリーミングモード用に最適化するかどうか。これにより、JMS StreamMessage タイプで Artemis を使用する場合のメモリーオーバーヘッドを削減できます。このオプションは、Apache Artemis が使用されている場合にのみ有効にする必要があります。 | false | Boolean |
| camel.component.amqp.async-consumer | JmsConsumer が Exchange を非同期的に処理するかどうか。有効にすると、JmsConsumer は JMS キューから次のメッセージを取得できますが、前のメッセージは (非同期ルーティングエンジンによって) 非同期に処理されます。これは、メッセージが 100% 厳密に順序どおりに処理されない可能性があることを意味します。無効になっている場合 (デフォルト)、JmsConsumer が JMS キューから次のメッセージを取得する前に Exchange が完全に処理されます。transacted が有効になっている場合、トランザクションは同期的に実行する必要があるため、asyncConsumer=true は非同期的に実行されないことに注意してください (Camel 3.0 は非同期トランザクションをサポートする場合があります)。 | false | Boolean |
| camel.component.amqp.async-start-listener | ルートの開始時に JmsConsumer メッセージリスナーを非同期で開始するかどうか。たとえば、JmsConsumer がリモート JMS ブローカーへの接続を取得できない場合は、再試行中やフェイルオーバー中にブロックされる可能性があります。これにより、ルートの開始時に Camel がブロックされます。このオプションを true に設定すると、ルートの起動を許可します。一方、JmsConsumer は非同期モードで専用のスレッドを使用して JMS ブローカーに接続します。このオプションを使用する場合は、接続を確立できない場合は例外が WARN レベルでログに記録され、consumer はメッセージを受信できず、ルートを再起動して再試行できます。 | false | Boolean |
| camel.component.amqp.async-stop-listener | ルートを停止するときに、JmsConsumer メッセージリスナーを非同期的に停止するかどうか。 | false | Boolean |
| camel.component.amqp.auto-startup | consumer コンテナーを自動起動するかどうかを指定します。 | true | Boolean |
| camel.component.amqp.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.amqp.cache-level | 基礎となる JMS リソースの ID によってキャッシュレベルを設定します。詳細は、cacheLevelName オプションを参照してください。 | Integer | |
| camel.component.amqp.cache-level-name | 基礎となる JMS リソースのキャッシュレベルを名前で設定します。可能な値は、CACHE_AUTO、CACHE_CONNECTION、CACHE_CONSUMER、CACHE_NONE、および CACHE_SESSION です。デフォルト設定は CACHE_AUTO です。詳細は、Spring のドキュメントとトランザクションキャッシュレベルを参照してください。 | CACHE_AUTO | String |
| camel.component.amqp.client-id | 使用する JMS クライアント ID を設定します。この値を指定する場合は、一意である必要があり、単一の JMS 接続インスタンスでのみ使用できることに注意してください。通常、JMS 1.1 の永続トピックサブスクリプションの場合にのみ必要です。 | String | |
| camel.component.amqp.concurrent-consumers | JMS から消費する場合の同時 consumer のデフォルト数を指定します (JMS を介した要求/応答ではありません)。スレッドの動的なスケールアップ/ダウンを制御するには、maxMessagesPerTask オプションも参照してください。JMS を介して要求/応答を行う場合は、オプション replyToConcurrentConsumers を使用して、応答メッセージリスナーの同時 consumer の数を制御します。 | 1 | Integer |
| camel.component.amqp.configuration | 共有 JMS 設定を使用するには。オプションは org.apache.camel.component.jms.JmsConfiguration タイプです。 | JmsConfiguration | |
| camel.component.amqp.connection-factory | 使用する接続ファクトリー。コンポーネントまたはエンドポイントで接続ファクトリーを設定する必要があります。オプションは javax.jms.ConnectionFactory タイプです。 | ConnectionFactory | |
| camel.component.amqp.consumer-type | 使用する consumer タイプ。Simple、Default、または Custom のいずれかです。consumer タイプによって、使用する Spring JMS リスナーが決まります。デフォルトは org.springframework.jms.listener.DefaultMessageListenerContainer を使用し、Simple は org.springframework.jms.listener.SimpleMessageListenerContainer を使用します。Custom を指定した場合は、messageListenerContainerFactory オプションで定義された MessageListenerContainerFactory によって、使用する org.springframework.jms.listener.AbstractMessageListenerContainer が決まります。 | ConsumerType | |
| camel.component.amqp.correlation-property | InOut 交換パターンを使用する場合、JMSCorrelationID JMS プロパティーの代わりにこの JMS プロパティーを使用してメッセージを関連付けます。設定されたメッセージがこのプロパティーの値のみに関連付けられる場合、JMSCorrelationID プロパティーは無視され、Camel によって設定されません。 | String | |
| camel.component.amqp.default-task-executor-type | consumer エンドポイントとプロデューサエンドポイントの ReplyTo consumer の両方に対して、DefaultMessageListenerContainer で使用するデフォルトの TaskExecutor タイプを指定します。可能な値: SimpleAsync (Spring の SimpleAsyncTaskExecutor を使用) または ThreadPool (Spring の ThreadPoolTaskExecutor を最適な値で使用 - キャッシュされたスレッドプールのようなもの)。設定されていない場合は、デフォルトで以前の動作になり、consumer エンドポイントにはキャッシュされたスレッドプールが使用され、応答 consumer には SimpleAsync が使用されます。ThreadPool の使用は、同時 consumer が動的に増減するエラスティック設定でスレッドのゴミを減らすために推奨されます。 | DefaultTaskExecutorType | |
| camel.component.amqp.delivery-delay | JMS の送信呼び出しに使用する配信遅延を設定します。このオプションには、JMS 2.0 準拠のブローカーが必要です。 | -1 | Long |
| camel.component.amqp.delivery-mode | 使用する配信モードを指定します。可能な値は、javax.jms.DeliveryMode で定義された値です。NON_PERSISTENT = 1 および PERSISTENT = 2。 | Integer | |
| camel.component.amqp.delivery-persistent | デフォルトで永続配信を使用するかどうかを指定します。 | true | Boolean |
| camel.component.amqp.destination-resolver | 独自のリゾルバーを使用できるようにするプラグ可能な org.springframework.jms.support.destination.DestinationResolver (たとえば、JNDI レジストリーで実際の宛先を検索するため)。オプションは org.springframework.jms.support.destination.DestinationResolver 型です。 | DestinationResolver | |
| camel.component.amqp.disable-reply-to | Camel がメッセージの JMSReplyTo ヘッダーを無視するかどうかを指定します。true の場合、Camel は JMSReplyTo ヘッダーで指定された宛先に返信を送り返しません。Camel にルートから消費させたいが、コード内の別のコンポーネントが応答メッセージを処理するため、Camel に自動的に応答メッセージを送り返したくない場合は、このオプションを使用できます。Camel を異なるメッセージブローカー間のプロキシーとして使用し、あるシステムから別のシステムにメッセージをルーティングする場合にも、このオプションを使用できます。 | false | Boolean |
| camel.component.amqp.disable-time-to-live | このオプションを使用して、有効期限を強制的に無効にします。たとえば、JMS を介して要求/応答を行う場合、Camel はデフォルトで、送信されるメッセージの存続時間として requestTimeout 値を使用します。問題は、送信側システムと受信側システムのクロックを同期させる必要があるため、同期していることです。これをアーカイブするのは必ずしも簡単ではありません。したがって、disableTimeToLive=true を使用して、送信されたメッセージに有効期限の値を設定しないようにすることができます。その後、メッセージは受信側システムで期限切れになりません。詳細は、以下の生存時間のセクションを参照してください。 | false | Boolean |
| camel.component.amqp.durable-subscription-name | 永続トピックサブスクリプションを指定するための永続サブスクライバー名。clientId オプションも設定する必要があります。 | String | |
| camel.component.amqp.eager-loading-of-properties | メッセージが読み込まれるとすぐに JMS プロパティーとペイロードの熱心な読み込みを有効にします。これは、JMS プロパティーが必要ない場合があるため一般的に非効率的ですが、基盤となる JMS プロバイダーと JMS プロパティーの使用に関する問題を早期に発見できる場合があります。オプション eagerPoisonBody も参照してください。 | false | Boolean |
| camel.component.amqp.eager-poison-body | eagerLoadingOfProperties が有効であり、JMS メッセージペイロード (JMS 本文または JMS プロパティー) が有害 (読み取り/マッピングできない) である場合は、代わりにこのテキストをメッセージボディーとして設定し、メッセージを処理できるようにします (有害の原因は、Exchange では例外としてすでに保存されています)。これは、eagerPoisonBody=false を設定することでオフにすることができます。オプション eagerLoadingOfProperties も参照してください。 | $\{exception.message} による JMS メッセージへの影響 | String |
| camel.component.amqp.enabled | amqp コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.amqp.error-handler | Message の処理中にキャッチされない例外が出力された場合に呼び出される org.springframework.util.ErrorHandler を指定します。デフォルトでは、errorHandler が設定されていない場合、これらの例外は WARN レベルでログに記録されます。errorHandlerLoggingLevel および errorHandlerLogStackTrace オプションを使用して、ログレベルとスタックトレースをログに記録するかどうかを設定できます。これにより、カスタム errorHandler をコーディングするよりも設定がはるかに簡単になります。オプションは org.springframework.util.ErrorHandler 型です。 | ErrorHandler | |
| camel.component.amqp.error-handler-log-stack-trace | デフォルトの errorHandler でスタックトレースをログに記録するかどうかを制御できます。 | true | Boolean |
| camel.component.amqp.error-handler-logging-level | キャッチされていない例外をログに記録するためのデフォルトの errorHandler ログレベルを設定できます。 | LoggingLevel | |
| camel.component.amqp.exception-listener | 基礎となる JMS 例外の通知を受ける JMS 例外リスナーを指定します。オプションは javax.jms.ExceptionListener 型です。 | ExceptionListener | |
| camel.component.amqp.explicit-qos-enabled | メッセージの送信時に、deliveryMode、priority、または timeToLive のサービス品質を使用する必要があるかどうかを設定します。このオプションは、Spring の JmsTemplate に基づいています。deliveryMode、priority、および timeToLive オプションは、現在のエンドポイントに適用されます。これは、メッセージの粒度で動作し、Camel In メッセージヘッダーから排他的に QoS プロパティーを読み取る preserveMessageQos オプションとは対照的です。 | false | Boolean |
| camel.component.amqp.expose-listener-session | メッセージを消費するときにリスナーセッションを公開するかどうかを指定します。 | false | Boolean |
| camel.component.amqp.force-send-original-message | mapJmsMessage=false を使用すると、ルート中にヘッダーに触れると (get または set)、Camel は新しい JMS メッセージを作成して新しい JMS 宛先に送信します。Camel が受信した元の JMS メッセージを強制的に送信するには、このオプションを true に設定します。 | false | Boolean |
| camel.component.amqp.format-date-headers-to-iso8601 | JMS 日付プロパティーを ISO 8601 標準に従ってフォーマットするかどうかを設定します。 | false | Boolean |
| camel.component.amqp.header-filter-strategy | カスタムの org.apache.camel.spi.HeaderFilterStrategy を使用して、Camel メッセージとの間でヘッダーをフィルターします。このオプションは org.apache.camel.spi.HeaderFilterStrategy タイプです。 | HeaderFilterStrategy | |
| camel.component.amqp.idle-consumer-limit | 常にアイドル状態にできる consumer の数の制限を指定します。 | 1 | Integer |
| camel.component.amqp.idle-task-execution-limit | 実行中にメッセージを受信していない、受信タスクのアイドル実行の制限を指定します。この制限に達すると、タスクはシャットダウンし、他の実行中のタスクに受信を任せます (動的スケジューリングの場合。maxConcurrentConsumers 設定を参照してください)。Spring から入手できる追加のドキュメントがあります。 | 1 | Integer |
| camel.component.amqp.include-all-jmsx-properties | JMS から Camel Message へのマッピング時に JMSXxxx プロパティーをすべて含めるかどうか。これを true に設定すると、JMSXAppID や JMSXUserID などのプロパティーが含まれます。注記: カスタムの headerFilterStrategy を使用している場合、このオプションは適用されません。 | false | Boolean |
| camel.component.amqp.include-amqp-annotations | AMQP から Camel メッセージへのマッピング時に AMQP アノテーションを含めるかどうか。これを true に設定すると、JMS_AMQP_MA_ 接頭辞を含む AMQP メッセージアノテーションがメッセージヘッダーにマップされます。Apache Qpid JMS API の制限により、現在、配信アノテーションは無視されます。 | false | Boolean |
| camel.component.amqp.include-sent-jms-message-id | InOnly を使用して JMS 宛先に送信する場合にのみ適用されます (例: ファイアアンドフォーゲット)。このオプションを有効にすると、メッセージが JMS 宛先に送信されたときに JMS クライアントによって使用された実際の JMSMessageID で Camel Exchange が強化されます。 | false | Boolean |
| camel.component.amqp.jms-key-format-strategy | JMS 仕様に準拠できるように、JMS キーをエンコードおよびデコードするためのプラグ可能な戦略。Camel は、追加設定なしで、default と passthrough の 2 つの実装を提供します。デフォルトのストラテジーでは、ドットとハイフン(. および -)を安全にマーシャリングします。パススルー戦略では、キーはそのまま残ります。JMS ヘッダーキーに不正な文字が含まれているかどうかは問題にならない JMS ブローカーに使用できます。org.apache.camel.component.jms.JmsKeyFormatStrategy の独自の実装を提供し、# 表記を使用して参照できます。 | JmsKeyFormatStrategy | |
| camel.component.amqp.jms-message-type | JMS メッセージの送信に特定の javax.jms.Message 実装を強制的に使用できるようにします。可能な値は、Bytes、Map、Object、Stream、Text です。デフォルトでは、Camel は In body タイプから使用する JMS メッセージタイプを決定します。このオプションで指定できます。 | JmsMessageType | |
| camel.component.amqp.lazy-create-transaction-manager | true の場合、オプション transacted=true のときに transactionManager が挿入されていない場合、Camel は JmsTransactionManager を作成します。 | true | Boolean |
| camel.component.amqp.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.amqp.map-jms-message | Camel が受信した JMS メッセージを適切なペイロードタイプ (javax.jms.TextMessage を文字列など) に自動マップするかどうかを指定します。 | true | Boolean |
| camel.component.amqp.max-concurrent-consumers | JMS から消費する場合の同時 consumer の最大数を指定します (JMS を介した要求/応答ではありません)。スレッドの動的なスケールアップ/ダウンを制御するには、maxMessagesPerTask オプションも参照してください。JMS を介して要求/応答を行う場合は、オプション replyToMaxConcurrentConsumers を使用して、応答メッセージリスナーの同時 consumer の数を制御します。 | Integer | |
| camel.component.amqp.max-messages-per-task | タスクあたりのメッセージ数。-1 は無制限です。同時 consumer の範囲 (例: min max) を使用する場合、このオプションを使用して値を 100 などに設定し、必要な作業が少ない場合に consumer が縮小する速度を制御できます。 | -1 | Integer |
| camel.component.amqp.message-converter | カスタム Spring org.springframework.jms.support.converter.MessageConverter を使用して、javax.jms.Message との間でどのようにマッピングするかを制御できるようにします。オプションは org.springframework.jms.support.converter.MessageConverter 型です。 | MessageConverter | |
| camel.component.amqp.message-created-strategy | Camel が JMS メッセージを送信しているときに、Camel が javax.jms.Message オブジェクトの新しいインスタンスを作成するときに呼び出される、指定された MessageCreatedStrategy を使用します。オプションは org.apache.camel.component.jms.MessageCreatedStrategy タイプです。 | MessageCreatedStrategy | |
| camel.component.amqp.message-id-enabled | 送信時に、メッセージ ID を追加するかどうかを指定します。これは、JMS ブローカーへの単なるヒントです。JMS プロバイダーがこのヒントを受け入れる場合、これらのメッセージのメッセージ ID を null に設定する必要があります。プロバイダーがヒントを無視する場合、メッセージ ID は通常の一意の値に設定する必要があります。 | true | Boolean |
| camel.component.amqp.message-listener-container-factory | メッセージを消費するために使用する org.springframework.jms.listener.AbstractMessageListenerContainer を決定するために使用される MessageListenerContainerFactory のレジストリー ID。これを設定すると、consumerType が自動的に Custom に設定されます。オプションは org.apache.camel.component.jms.MessageListenerContainerFactory タイプです。 | MessageListenerContainerFactory | |
| camel.component.amqp.message-timestamp-enabled | メッセージの送信時にデフォルトでタイムスタンプを有効にするかどうかを指定します。これは、JMS ブローカーへの単なるヒントです。JMS プロバイダーがこのヒントを受け入れる場合、これらのメッセージのタイムスタンプをゼロに設定する必要があります。プロバイダーがヒントを無視する場合は、タイムスタンプを通常の値に設定する必要があります。 | true | Boolean |
| camel.component.amqp.password | ConnectionFactory で使用するパスワード。また、ConnectionFactory でユーザー名およびパスワードを直接設定することもできます。 | String | |
| camel.component.amqp.preserve-message-qos | JMS エンドポイントの QoS 設定ではなく、メッセージで指定された QoS 設定を使用してメッセージを送信する場合は、true に設定します。次の 3 つのヘッダーは、JMSPriority、JMSDeliveryMode、および JMSExpiration と見なされます。それらのすべてまたは一部のみを指定できます。指定されていない場合、Camel は代わりにエンドポイントからの値を使用するようにフォールバックします。したがって、このオプションを使用すると、ヘッダーはエンドポイントからの値をオーバーライドします。対照的に、explicitQosEnabled オプションは、エンドポイントに設定されたオプションのみを使用し、メッセージヘッダーの値は使用しません。 | false | Boolean |
| camel.component.amqp.priority | 1 より大きい値は、送信時のメッセージの優先度を指定します (1 が最低の優先度で、9 が最高の優先度です)。このオプションを有効にするには、explicitQosEnabled オプションも有効にする必要があります。 | 4 | Integer |
| camel.component.amqp.pub-sub-no-local | 独自の接続によってパブリッシュされたメッセージの配信を禁止するかどうかを指定します。 | false | Boolean |
| camel.component.amqp.queue-browse-strategy | キューを参照するときにカスタム QueueBrowseStrategy を使用するには。オプションは org.apache.camel.component.jms.QueueBrowseStrategy タイプです。 | QueueBrowseStrategy | |
| camel.component.amqp.receive-timeout | メッセージ受信のタイムアウト (ミリ秒単位)。オプションはロング型です。 | 1000 | Long |
| camel.component.amqp.recovery-interval | リカバリーの試行の間隔を指定します。つまり、接続が更新されるタイミング(ミリ秒単位)を指定します。デフォルトは 5000 ミリ秒、つまり 5 秒です。オプションはロング型です。 | 5000 | Long |
| camel.component.amqp.reply-to | 明示的な ReplyTo 宛先を提供します (consumer の Message.getJMSReplyTo() の着信値をオーバーライドします)。 | String | |
| camel.component.amqp.reply-to-cache-level-name | JMS を介して要求/応答を行うときに、応答 consumer のキャッシュレベルを名前で設定します。このオプションは、固定応答キュー (一時的ではない) を使用する場合にのみ適用されます。Camel はデフォルトで次を使用します: 排他的または replyToSelectorName と共有の CACHE_CONSUMER。そして、replyToSelectorName なしで共有するための CACHE_SESSION。IBM WebSphere などの一部の JMS ブローカーは、replyToCacheLevelName=CACHE_NONE を機能させるために設定する必要がある場合があります。注: 一時キューを使用する場合、CACHE_NONE は許可されず、CACHE_CONSUMER や CACHE_SESSION などのより高い値を使用する必要があります。 | String | |
| camel.component.amqp.reply-to-concurrent-consumers | JMS を介して要求/応答を行うときの同時 consumer のデフォルト数を指定します。スレッドの動的なスケールアップ/ダウンを制御するには、maxMessagesPerTask オプションも参照してください。 | 1 | Integer |
| camel.component.amqp.reply-to-consumer-type | 応答 consumer の consumer タイプ (要求/応答を行う場合)。Simple、Default、または Custom のいずれかになります。consumer タイプによって、使用する Spring JMS リスナーが決まります。デフォルトは org.springframework.jms.listener.DefaultMessageListenerContainer を使用し、Simple は org.springframework.jms.listener.SimpleMessageListenerContainer を使用します。Custom を指定した場合は、messageListenerContainerFactory オプションで定義された MessageListenerContainerFactory によって、使用する org.springframework.jms.listener.AbstractMessageListenerContainer が決まります。 | ConsumerType | |
| camel.component.amqp.reply-to-delivery-persistent | 返信に対してデフォルトで永続的な配信を使用するかどうかを指定します。 | true | Boolean |
| camel.component.amqp.reply-to-destination-selector-name | 使用する固定名を使用して JMS セレクターを設定し、共有キューを使用している場合 (つまり、一時的な応答キューを使用していない場合) に、他の応答から自分の応答を除外できるようにします。 | String | |
| camel.component.amqp.reply-to-max-concurrent-consumers | JMS を介した要求/応答を使用する場合の同時 consumer の最大数を指定します。スレッドの動的なスケールアップ/ダウンを制御するには、maxMessagesPerTask オプションも参照してください。 | Integer | |
| camel.component.amqp.reply-to-on-timeout-max-concurrent-consumers | JMS 経由の要求/応答を使用するときにタイムアウトが発生したときに、ルーティングを継続するための同時 consumer の最大数を指定します。 | 1 | Integer |
| camel.component.amqp.reply-to-override | JMS メッセージで明示的な ReplyTo 宛先を提供します。これは、replyTo の設定をオーバーライドします。メッセージをリモート Queue に転送し、ReplyTo 宛先から応答メッセージを受け取る場合に便利です。 | String | |
| camel.component.amqp.reply-to-same-destination-allowed | JMS consumer が、consumer が使用しているのと同じ宛先に応答メッセージを送信できるかどうか。これにより、同じメッセージを消費してそれ自体に送り返すことで、無限ループが回避されます。 | false | Boolean |
| camel.component.amqp.reply-to-type | JMS を介して要求/応答を行うときに、replyTo キューに使用する戦略の種類を明示的に指定できます。可能な値は、Temporary、Shared、または Exclusive です。デフォルトでは、Camel は一時キューを使用します。ただし、replyTo が設定されている場合は、デフォルトで Shared が使用されます。このオプションを使用すると、共有キューの代わりに専用キューを使用できます。詳細は、Camel JMS のドキュメントを参照してください。特に、クラスター化された環境で実行する場合の影響に関する注意事項と、共有応答キューは代替の一時および排他的キューよりもパフォーマンスが低いという事実を参照してください。 | ReplyToType | |
| camel.component.amqp.request-timeout | InOut Exchange パターン使用時の応答待ちタイムアウト (ミリ秒単位)。デフォルトは 20 秒です。ヘッダー CamelJmsRequestTimeout を含めて、このエンドポイントで設定されたタイムアウト値をオーバーライドし、メッセージごとに個別のタイムアウト値を持つことができます。requestTimeoutCheckerInterval オプションも参照してください。オプションはロング型です。 | 20000 | Long |
| camel.component.amqp.request-timeout-checker-interval | JMS を介してリクエスト/リプライを行うときに、Camel がタイムアウトになった Exchange をチェックする頻度を設定します。デフォルトでは、Camel は 1 秒に 1 回確認します。ただし、タイムアウトが発生したときに迅速に対応する必要がある場合は、この間隔を短くして、より頻繁にチェックすることができます。タイムアウトは、オプション requestTimeout によって決定されます。オプションはロング型です。 | 1000 | Long |
| camel.component.amqp.selector | 使用する JMS セレクターを設定します。 | String | |
| camel.component.amqp.stream-message-type-enabled | StreamMessage タイプを有効にするかどうかを設定します。ファイル、InputStream などのストリーミングの種類のメッセージペイロードは、BytesMessage または StreamMessage として送信されます。このオプションは、どの種類が使用されるかを制御します。デフォルトでは、BytesMessage が使用され、メッセージペイロード全体がメモリーに読み込まれます。このオプションを有効にすると、メッセージペイロードがチャンク単位でメモリーに読み込まれ、データがなくなるまで各チャンクが StreamMessage に書き込まれます。 | false | Boolean |
| camel.component.amqp.subscription-durable | サブスクリプションを永続化するかどうかを設定します。使用する永続サブスクリプション名は、subscriptionName プロパティーで指定できます。デフォルトは false です。通常、subscriptionName 値と組み合わせて永続的なサブスクリプションを登録するには、これを true に設定します (メッセージリスナークラス名がサブスクリプション名として十分でない場合)。トピック (pub-sub ドメイン) をリッスンする場合にのみ意味があるため、このメソッドは pubSubDomain フラグも切り替えます。 | false | Boolean |
| camel.component.amqp.subscription-name | 作成するサブスクリプションの名前を設定します。共有または永続的なサブスクリプションを持つトピック (pub-sub ドメイン) の場合に適用されます。サブスクリプション名は、このクライアントの JMS クライアント ID 内で一意である必要があります。デフォルトは、指定されたメッセージリスナーのクラス名です。注: 共有サブスクリプション (JMS 2.0 が必要) を除き、サブスクリプションごとに 1 つの同時 consumer (このメッセージリスナコンテナーのデフォルト) のみが許可されます。 | String | |
| camel.component.amqp.subscription-shared | サブスクリプションを共有するかどうかを設定します。使用する共有サブスクリプション名は、subscriptionName プロパティーで指定できます。デフォルトは false です。通常は subscriptionName 値と組み合わせて共有サブスクリプションを登録するには、これを true に設定します (メッセージリスナークラス名がサブスクリプション名として十分でない場合)。共有サブスクリプションも永続的である可能性があるため、このフラグを subscriptionDurable と組み合わせることもできます (多くの場合は組み合わせます)。トピック (pub-sub ドメイン) をリッスンする場合にのみ意味があるため、このメソッドは pubSubDomain フラグも切り替えます。JMS 2.0 互換のメッセージブローカーが必要です。 | false | Boolean |
| camel.component.amqp.synchronous | 同期処理を厳密に使用するかどうかを設定します。 | false | Boolean |
| camel.component.amqp.task-executor | メッセージを消費するためのカスタムタスクエグゼキュータを指定できます。オプションは org.springframework.core.task.TaskExecutor 型です。 | TaskExecutor | |
| camel.component.amqp.test-connection-on-startup | 起動時に接続をテストするかどうかを指定します。これにより、Camel の起動時に、すべての JMS consumer が JMS ブローカーへの有効な接続を持つことが保証されます。接続を許可できない場合、Camel は起動時に例外を出力します。これにより、接続に失敗した状態で Camel が開始されなくなります。JMS producer もテストされています。 | false | Boolean |
| camel.component.amqp.time-to-live | メッセージの送信時に、メッセージの有効期限をミリ秒単位で指定します。 | -1 | Long |
| camel.component.amqp.transacted | トランザクションモードを使用するかどうかを指定します。 | false | Boolean |
| camel.component.amqp.transacted-in-out | InOut 操作 (リクエストリプライ) がデフォルトでトランザクションモードを使用するかどうかを指定します。このフラグが true に設定されている場合、Spring JmsTemplate は sessionTransacted を true に設定し、acknowledgeMode は InOut 操作に使用される JmsTemplate でトランザクションされます。Spring JMS からの注意: JTA トランザクション内では、createQueue、createTopic メソッドに渡されるパラメーターは考慮されません。Java EE トランザクションコンテキストに応じて、コンテナーはこれらの値を独自に決定します。同様に、この場合、Spring JMS は既存の JMS セッションで動作するため、これらのパラメーターはローカルで管理されるトランザクション内でも考慮されません。このフラグを true に設定すると、管理対象トランザクションの外部で実行されている場合は短いローカル JMS トランザクションが使用され、管理対象トランザクション (XA トランザクション以外) が存在する場合は同期されたローカル JMS トランザクションが使用されます。これには、ローカル JMS トランザクションがメイントランザクション (ネイティブ JDBC トランザクションの場合もある) と一緒に管理され、JMS トランザクションがメイントランザクションの直後にコミットされるという効果があります。 | false | Boolean |
| camel.component.amqp.transaction-manager | 使用する Spring トランザクションマネージャー。オプションは org.springframework.transaction.PlatformTransactionManager 型です。 | PlatformTransactionManager | |
| camel.component.amqp.transaction-name | 使用するトランザクションの名前。 | String | |
| camel.component.amqp.transaction-timeout | トランザクションモードを使用している場合の、トランザクションのタイムアウト値 (秒単位)。 | -1 | Integer |
| camel.component.amqp.transfer-exception | 有効で、Request Reply メッセージング (InOut) を使用していて、Exchange が consumer 側で失敗した場合、原因となった例外が javax.jms.ObjectMessage として応答で返されます。クライアントが Camel の場合、返された Exception は再出力されます。これにより、Camel JMS をルーティングのブリッジとして使用できます。たとえば、永続的なキューを使用して堅牢なルーティングを有効にできます。transferExchange も有効にしている場合は、このオプションが優先されることに注意してください。キャッチされた例外はシリアライズ可能である必要があります。consumer 側の元の Exception は、producer に返されるときに org.apache.camel.RuntimeCamelException などの外部例外にラップできます。データは Java オブジェクトのシリアライゼーションを使用しており、受信側がクラスレベルでデータをデシリアライズできる必要があるため、これは注意して使用してください。 | false | Boolean |
| camel.component.amqp.transfer-exchange | 本文とヘッダーだけでなく、電信送金で交換を転送できます。次のフィールドが転送されます: In body、Out body、Fault body、In ヘッダー、Out ヘッダー、Fault ヘッダー、交換プロパティー、交換例外。これには、オブジェクトがシリアライズ可能である必要があります。Camel はシリアル化できないオブジェクトを除外し、WARN レベルでログに記録します。プロデューサ側と consumer 側の両方でこのオプションを有効にする必要があるため、Camel はペイロードが Exchange であり、通常のペイロードではないことを認識します。データは Java オブジェクトのシリアライゼーションを使用しており、レシーバーがクラスレベルでデータをデシリアライズできる必要があるため、これは注意して使用してください。これにより、互換性のある Camel バージョンを使用する必要がある producer と consumer の間の強い結合が強制されます。 | false | Boolean |
| camel.component.amqp.use-message-id-as-correlation-id | InOut メッセージの JMSCorrelationID として JMSMessageID を常に使用するかどうかを指定します。 | false | Boolean |
| camel.component.amqp.username | ConnectionFactory で使用するユーザー名。また、ConnectionFactory でユーザー名およびパスワードを直接設定することもできます。 | String | |
| camel.component.amqp.wait-for-provision-correlation-to-be-updated-counter | JMS を介して要求/応答を行う場合、およびオプション useMessageIDAsCorrelationID が有効な場合に、暫定相関 ID が実際の相関 ID に更新されるのを待機する回数。 | 50 | Integer |
| camel.component.amqp.wait-for-provision-correlation-to-be-updated-thread-sleeping-time | 暫定相関 ID が更新されるのを待機するたびにスリープする間隔 (ミリ単位)。オプションはロング型です。 | 100 | Long |
第3章 Avro リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントは、avro のデータ形式を提供するので、Apache Avro のバイナリーデータ形式を使用したメッセージのシリアル化と逆シリアル化が可能になります。Camel 3.2 以降、rpc 機能は別の camel-avro-rpc コンポーネントに移動されました。
Maven、ant などを使用して、スキーマから簡単にクラスを生成できます。詳細には、Apache Avro のドキュメント を参照してください。
3.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で camel-avro を使用する場合は、自動設定をサポートするために次の Maven 依存関係を追加します。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-avro-starter</artifactId>
</dependency>
3.2. Avro データ形式オプション リンクのコピーリンクがクリップボードにコピーされました!
Avro データ形式は、以下にリストされている 1 つのオプションをサポートしています。
| 名前 | デフォルト | Java タイプ | 説明 |
|---|---|---|---|
| instanceClassName |
| マーシャリングとアンマーシャリングに使用するクラス名。 |
3.3. Avro データ形式の使用 リンクのコピーリンクがクリップボードにコピーされました!
avro データ形式の使用は、ルートでマーシャリングまたはアンマーシャリングするクラスを指定するのと同様に簡単です。
AvroDataFormat format = new AvroDataFormat(Value.SCHEMA$);
from("direct:in").marshal(format).to("direct:marshal");
from("direct:back").unmarshal(format).to("direct:unmarshal");
ここで、値は Avro Maven プラグインで生成されたクラス
または XML です。
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:in"/>
<marshal>
<avro instanceClass="org.apache.camel.dataformat.avro.Message"/>
</marshal>
<to uri="log:out"/>
</route>
</camelContext>
別の方法として、コンテキスト内でデータ形式を指定し、ルートから参照することもできます。
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<dataFormats>
<avro id="avro" instanceClass="org.apache.camel.dataformat.avro.Message"/>
</dataFormats>
<route>
<from uri="direct:in"/>
<marshal><custom ref="avro"/></marshal>
<to uri="log:out"/>
</route>
</camelContext>
同じ方法で、avro データ形式を使用してアンマーシャリングできます。
3.4. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
Spring Boot で avro を使用する場合は、自動設定をサポートするために Maven 依存関係を必ず追加してください。コンポーネントは、以下に記載される 2 つのオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.dataformat.avro.enabled | avro データ形式の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.dataformat.avro.instance-class-name | マーシャリングとアンマーシャリングに使用するクラス名。 | String |
第4章 Avro Jackson リンクのコピーリンクがクリップボードにコピーされました!
Jackson Avro は、Jackson ライブラリー と Avro 拡張機能 を使用して、Avro ペイロードを Java オブジェクトにアンマーシャリングするか、Java オブジェクトを Avro ペイロードにマーシャリングするデータ形式です。
Jackson に精通している場合、この Avro データ形式は対応する JSON と同じように動作するため、JSON シリアライゼーション/デシリアライゼーションのアノテーションが付けられたクラスで使用できます。
from("kafka:topic").
unmarshal().avro(AvroLibrary.Jackson, JsonNode.class).
to("log:info");
4.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で avro-jackson を使用する場合は、自動設定をサポートするために Maven 依存関係を必ず追加してください。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-jackson-avro-starter</artifactId>
</dependency>
4.2. SchemaResolver の設定 リンクのコピーリンクがクリップボードにコピーされました!
Avro シリアル化はスキーマベースであるため、このデータ形式では、マーシャリング/アンマーシャリングされる各交換のスキーマを検索できる SchemaResolver オブジェクトを提供する必要があります。
単一の SchemaResolver をレジストリーに追加すると、自動的に検索されます。または、カスタム SchemaResolver への参照を明示的に指定できます。
4.3. Avro Jackson オプション リンクのコピーリンクがクリップボードにコピーされました!
Avro Jackson データ形式は、以下に示す 18 のオプションをサポートしています。
| 名前 | デフォルト | Java タイプ | 説明 |
|---|---|---|---|
| objectMapper |
| Jackson を使用する場合は、指定された ID で既存の ObjectMapper を検索して使用します。 | |
| useDefaultObjectMapper |
| レジストリーからデフォルトの Jackson ObjectMapper を検索して使用するかどうか。 | |
| unmarshalType |
| アンマーシャリング時に使用する Java 型のクラス名。 | |
| jsonView |
| POJO を JSON にマーシャリングする際に、JSON 出力から特定のフィールドを除外する場合があります。Jackson では、JSON ビューを使用してこれを実現できます。このオプションは、JsonView アノテーションを持つクラスを参照するためのものです。 | |
| include |
| pojo を JSON にマーシャリングする必要があり、pojo に null 値を持つフィールドがいくつかある場合。これらの null 値をスキップする場合は、このオプションを NON_NULL に設定できます。 | |
| allowJmsType |
| JMS ユーザーが JMS 仕様の JMSType ヘッダーを使用して、アンマーシャリングに使用する FQN クラス名を指定できるようにするために使用されます。 | |
| collectionType |
| 使用するレジストリーを参照するカスタムコレクションタイプを参照します。このオプションはあまり使用しないでください。ただし、デフォルトとして java.util.Collection に基づくものとは異なるコレクションタイプを使用できます。 | |
| useList |
| Map の List または Pojo の List にアンマーシャリングします。 | |
| moduleClassNames |
| カスタム Jackson モジュール com.fasterxml.jackson.databind.Module を使用するには、FQN クラス名を持つ文字列として指定します。複数のクラスはコンマで区切ることができます。 | |
| moduleRefs |
| Camel レジストリーから参照されるカスタム Jackson モジュールを使用します。複数のモジュールはコンマで区切ることができます。 | |
| enableFeatures |
| Jackson com.fasterxml.jackson.databind.ObjectMapper で有効にする機能のセット。機能は、com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature、または com.fasterxml.jackson.databind.MapperFeature の列挙型と一致する名前である必要があります。複数の機能はコンマで区切ることができます。 | |
| disableFeatures |
| Jackson com.fasterxml.jackson.databind.ObjectMapper で無効にする機能のセット。機能は、com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature、または com.fasterxml.jackson.databind.MapperFeature の列挙型と一致する名前である必要があります。複数の機能はコンマで区切ることができます。 | |
| allowUnmarshallType |
| 有効にすると、Jackson はアンマーシャリング中に CamelJacksonUnmarshalType ヘッダーの使用を試みることができます。これは、使用する必要がある場合にのみ有効にする必要があります。 | |
| timezone |
| 設定されている場合、Jackson はマーシャリング/アンマーシャリング時にタイムゾーンを使用します。 | |
| autoDiscoverObjectMapper |
| true に設定すると、Jackson は objectMapper をレジストリーで検索します。 | |
| contentTypeHeader |
| データ形式が Content-Type ヘッダーにデータ形式のタイプを設定する必要があるかどうか。たとえば、XML にマーシャリングするデータ形式の場合は application/xml、JSON にマーシャリングするデータ形式の場合は application/json です。 | |
| schemaResolver |
| 転送中のデータのスキーマを検索するために使用されるオプションのスキーマリゾルバー。 | |
| autoDiscoverSchemaResolver |
| 無効にしない場合、SchemaResolver はレジストリーで検索されます。 |
4.4. カスタム AvroMapper の使用 リンクのコピーリンクがクリップボードにコピーされました!
マッピング設定をさらに制御する必要がある場合は、カスタム AvroMapper を使用するように JacksonAvroDataFormat を設定できます。
レジストリーに AvroMapper を 1 つ設定すると、Camel が自動的に検索し、この AvroMapper を使用します。
4.5. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 19 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.dataformat.avro-jackson.allow-jms-type | JMS ユーザーが JMS 仕様の JMSType ヘッダーを使用して、アンマーシャリングに使用する FQN クラス名を指定できるようにするために使用されます。 | false | Boolean |
| camel.dataformat.avro-jackson.allow-unmarshall-type | 有効にすると、Jackson はアンマーシャリング中に CamelJacksonUnmarshalType ヘッダーの使用を試みることができます。これは、使用する必要がある場合にのみ有効にする必要があります。 | false | Boolean |
| camel.dataformat.avro-jackson.auto-discover-object-mapper | true に設定すると、Jackson は objectMapper をレジストリーで検索します。 | false | Boolean |
| camel.dataformat.avro-jackson.auto-discover-schema-resolver | 無効にしない場合、SchemaResolver はレジストリーで検索されます。 | true | Boolean |
| camel.dataformat.avro-jackson.collection-type | 使用するレジストリーを参照するカスタムコレクションタイプを参照します。このオプションはあまり使用しないでください。ただし、デフォルトとして java.util.Collection に基づくものとは異なるコレクションタイプを使用できます。 | String | |
| camel.dataformat.avro-jackson.content-type-header | データ形式が Content-Type ヘッダーにデータ形式のタイプを設定する必要があるかどうか。たとえば、XML にマーシャリングするデータ形式の場合は application/xml、JSON にマーシャリングするデータ形式の場合は application/json です。 | true | Boolean |
| camel.dataformat.avro-jackson.disable-features | Jackson com.fasterxml.jackson.databind.ObjectMapper で無効にする機能のセット。機能は、com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature、または com.fasterxml.jackson.databind.MapperFeature の列挙型と一致する名前である必要があります。複数の機能はコンマで区切ることができます。 | String | |
| camel.dataformat.avro-jackson.enable-features | Jackson com.fasterxml.jackson.databind.ObjectMapper で有効にする機能のセット。機能は、com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature、または com.fasterxml.jackson.databind.MapperFeature の列挙型と一致する名前である必要があります。複数の機能はコンマで区切ることができます。 | String | |
| camel.dataformat.avro-jackson.enabled | avro-jackson データ形式の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.dataformat.avro-jackson.include | pojo を JSON にマーシャリングする必要があり、pojo に null 値を持つフィールドがいくつかある場合。これらの null 値をスキップする場合は、このオプションを NON_NULL に設定できます。 | String | |
| camel.dataformat.avro-jackson.json-view | POJO を JSON にマーシャリングする際に、JSON 出力から特定のフィールドを除外する場合があります。Jackson では、JSON ビューを使用してこれを実現できます。このオプションは、JsonView アノテーションを持つクラスを参照するためのものです。 | String | |
| camel.dataformat.avro-jackson.module-class-names | カスタム Jackson モジュール com.fasterxml.jackson.databind.Module を使用するには、FQN クラス名を持つ文字列として指定します。複数のクラスはコンマで区切ることができます。 | String | |
| camel.dataformat.avro-jackson.module-refs | Camel レジストリーから参照されるカスタム Jackson モジュールを使用します。複数のモジュールはコンマで区切ることができます。 | String | |
| camel.dataformat.avro-jackson.object-mapper | Jackson を使用する場合は、指定された ID で既存の ObjectMapper を検索して使用します。 | String | |
| camel.dataformat.avro-jackson.schema-resolver | 転送中のデータのスキーマを検索するために使用されるオプションのスキーマリゾルバー。 | String | |
| camel.dataformat.avro-jackson.timezone | 設定されている場合、Jackson はマーシャリング/アンマーシャリング時にタイムゾーンを使用します。 | String | |
| camel.dataformat.avro-jackson.unmarshal-type | アンマーシャリング時に使用する Java 型のクラス名。 | String | |
| camel.dataformat.avro-jackson.use-default-object-mapper | レジストリーからデフォルトの Jackson ObjectMapper を検索して使用するかどうか。 | true | Boolean |
| camel.dataformat.avro-jackson.use-list | Map の List または Pojo の List にアンマーシャリングします。 | false | Boolean |
第5章 AWS CloudWatch リンクのコピーリンクがクリップボードにコピーされました!
producer のみサポート対象
AWS2 Cloudwatch コンポーネントを使用すると、メッセージを Amazon CloudWatch メトリクスに送信できます。Amazon API の実装は AWS SDK によって提供されます。
前提条件
有効な Amazon Web Services 開発者アカウントを持っていて、Amazon CloudWatch を使用するためにサインアップしている必要がある。詳細は、Amazon CloudWatch を参照してください。
5.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で aws2-cw を使用する場合は、自動設定をサポートするために次の Maven 依存関係を pom.xml に追加します。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-aws2-cw-starter</artifactId>
</dependency>
5.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
aws2-cw://namespace[?options]
メトリクスが存在しない場合は作成されます。URI には、?options=value&option2=value&… という形式でクエリーオプションを追加できます。
5.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
5.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
5.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
5.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
AWS CloudWatch コンポーネントは、以下に示す 18 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| amazonCwClient (producer) | Autowired: AmazonCloudWatch をクライアントとして使用します。 | CloudWatchClient | |
| configuration (producer) | コンポーネントの設定。 | Cw2Configuration | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| name (producer) | メトリクス名。 | String | |
| overrideEndpoint (producer) | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | boolean |
| proxyHost (producer) | CW クライアントをインスタンス化する際にプロキシーホストを定義します。 | String | |
| proxyPort (producer) | CW クライアントをインスタンス化する際にプロキシーポートを定義します。 | Integer | |
| proxyProtocol (producer) | CW クライアントをインスタンス化する際にプロキシープロトコルを定義します。 列挙値:
| HTTPS | Protocol |
| region (producer) | CW クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| timestamp (producer) | メトリクスのタイムスタンプ。 | Instant | |
| trustAllCertificates (producer) | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | boolean |
| unit (producer) | メトリクスユニット。 | String | |
| uriEndpointOverride (producer) | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| useDefaultCredentialsProvider (producer) | デフォルトのクレデンシャルプロバイダー経由でクレデンシャルをロードすること、または静的クレデンシャルが渡されることを S3 クライアントは想定すべきかどうかを設定します。 | false | boolean |
| value (producer) | メトリクス値。 | double | |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| accessKey (security) | Amazon AWS Access Key。 | String | |
| secretKey (security) | Amazon AWS Secret Key。 | String |
5.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
AWS CloudWatch エンドポイントは、URI 構文を使用して設定されます。
aws2-cw:namespace
パスおよびクエリーパラメーターを使用します。
5.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| namespace (producer) | 必須。メトリクス namespace。 | String |
5.5.2. クエリーパラメーター(16 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| amazonCwClient (producer) | Autowired: AmazonCloudWatch をクライアントとして使用します。 | CloudWatchClient | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| name (producer) | メトリクス名。 | String | |
| overrideEndpoint (producer) | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | boolean |
| proxyHost (producer) | CW クライアントをインスタンス化する際にプロキシーホストを定義します。 | String | |
| proxyPort (producer) | CW クライアントをインスタンス化する際にプロキシーポートを定義します。 | Integer | |
| proxyProtocol (producer) | CW クライアントをインスタンス化する際にプロキシープロトコルを定義します。 列挙値:
| HTTPS | Protocol |
| region (producer) | CW クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| timestamp (producer) | メトリクスのタイムスタンプ。 | Instant | |
| trustAllCertificates (producer) | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | boolean |
| unit (producer) | メトリクスユニット。 | String | |
| uriEndpointOverride (producer) | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| useDefaultCredentialsProvider (producer) | デフォルトのクレデンシャルプロバイダー経由でクレデンシャルをロードすること、または静的クレデンシャルが渡されることを S3 クライアントは想定すべきかどうかを設定します。 | false | boolean |
| value (producer) | メトリクス値。 | double | |
| accessKey (security) | Amazon AWS Access Key。 | String | |
| secretKey (security) | Amazon AWS Secret Key。 | String |
必要な CW コンポーネントオプション
Amazon の CloudWatch にアクセスするには、レジストリーに amazonCwClient を指定するか、accessKey と secretKey を指定する必要があります。
5.6. 使用方法 リンクのコピーリンクがクリップボードにコピーされました!
5.6.1. 静的認証情報とデフォルトの認証情報プロバイダーの比較 リンクのコピーリンクがクリップボードにコピーされました!
useDefaultCredentialsProvider オプションを指定し、これを true に設定することにより、明示的な静的認証情報の使用を回避することが可能です。
- Java システムプロパティー - aws.accessKeyId および aws.secretKey
- 環境変数: AWS_ACCESS_KEY_ID および AWS_SECRET_ACCESS_KEY。
- AWS STS の Web ID トークン。
- 共有認証情報および設定ファイル。
- Amazon ECS コンテナー認証情報 - 環境変数 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI が設定されている場合は、Amazon ECS からロードされます。
- Amazon EC2 インスタンスプロファイルの認証情報。
これに関する詳細情報は、AWS 認証情報のドキュメント を参照してください。
5.6.2. CW producer によって評価されるメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 型 | 説明 |
|---|---|---|
|
|
| Amazon CW メトリクス名。 |
|
|
| Amazon CW メトリクス値。 |
|
|
| Amazon CW メトリクスユニット。 |
|
|
| Amazon CW メトリクス namespace。 |
|
|
| Amazon CW メトリクスのタイムスタンプ。 |
|
|
| Amazon CW メトリクスディメンション名。 |
|
|
| Amazon CW メトリクスディメンション値。 |
|
|
| ディメンション名とディメンション値のマップ。 |
5.6.3. 高度な CloudWatchClient 設定 リンクのコピーリンクがクリップボードにコピーされました!
CloudWatchClient インスタンス設定をさらに制御する必要がある場合は、独自のインスタンスを作成し、URI から参照できます。
from("direct:start")
.to("aws2-cw://namespace?amazonCwClient=#client");
#client は、レジストリー内の CloudWatchClient を参照します。
5.7. 例 リンクのコピーリンクがクリップボードにコピーされました!
5.7.1. producer の例 リンクのコピーリンクがクリップボードにコピーされました!
from("direct:start")
.to("aws2-cw://http://camel.apache.org/aws-cw");
次に、以下のようなものを送信します。
exchange.getIn().setHeader(Cw2Constants.METRIC_NAME, "ExchangesCompleted");
exchange.getIn().setHeader(Cw2Constants.METRIC_VALUE, "2.0");
exchange.getIn().setHeader(Cw2Constants.METRIC_UNIT, "Count");
5.8. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 19 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.aws2-cw.access-key | Amazon AWS Access Key。 | String | |
| camel.component.aws2-cw.amazon-cw-client | AmazonCloudWatch をクライアントとして使用します。このオプションは software.amazon.awssdk.services.cloudwatch.CloudWatchClient タイプです。 | CloudWatchClient | |
| camel.component.aws2-cw.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.aws2-cw.configuration | コンポーネントの設定。このオプションは org.apache.camel.component.aws2.cw.Cw2Configuration タイプです。 | Cw2Configuration | |
| camel.component.aws2-cw.enabled | aws2-cw コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.aws2-cw.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.aws2-cw.name | メトリクス名。 | String | |
| camel.component.aws2-cw.override-endpoint | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | Boolean |
| camel.component.aws2-cw.proxy-host | CW クライアントをインスタンス化する際にプロキシーホストを定義します。 | String | |
| camel.component.aws2-cw.proxy-port | CW クライアントをインスタンス化する際にプロキシーポートを定義します。 | Integer | |
| camel.component.aws2-cw.proxy-protocol | CW クライアントをインスタンス化する際にプロキシープロトコルを定義します。 | Protocol | |
| camel.component.aws2-cw.region | CW クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| camel.component.aws2-cw.secret-key | Amazon AWS Secret Key。 | String | |
| camel.component.aws2-cw.timestamp | メトリクスのタイムスタンプ。オプションは java.time.Instant タイプです。 | Instant | |
| camel.component.aws2-cw.trust-all-certificates | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | Boolean |
| camel.component.aws2-cw.unit | メトリクスユニット。 | String | |
| camel.component.aws2-cw.uri-endpoint-override | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| camel.component.aws2-cw.use-default-credentials-provider | デフォルトのクレデンシャルプロバイダー経由でクレデンシャルをロードすること、または静的クレデンシャルが渡されることを S3 クライアントは想定すべきかどうかを設定します。 | false | Boolean |
| camel.component.aws2-cw.value | メトリクス値。 | double |
第6章 AWS DynamoDB リンクのコピーリンクがクリップボードにコピーされました!
producer のみサポート対象
AWS2 DynamoDB コンポーネントは、サービスとの間でのデータの保存および取得をサポートしています。
前提条件
有効な Amazon Web Services 開発者アカウントを持っていて、Amazon DynamoDB を使用するためにサインアップしている必要がある。詳細は、Amazon DynamoDB を参照してください。
6.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で aws2-ddb を使用する場合は、自動設定をサポートするために次の Maven 依存関係を pom.xml に追加します。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-aws2-ddb-starter</artifactId>
</dependency>
6.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
aws2-ddb://domainName[?options]
URI には、?options=value&option2=value&… という形式でクエリーオプションを追加できます。
6.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
6.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
6.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
6.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
AWS DynamoDB コンポーネントは 22 のオプションをサポートします。これは以下に記載されています。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| amazonDDBClient (producer) | Autowired: AmazonDynamoDB をクライアントとして使用します。 | DynamoDbClient | |
| configuration (producer) | コンポーネントの設定。 | Ddb2Configuration | |
| consistentRead (producer) | データの読み取り時に強力な整合性を適用するべきかどうかを決定します。 | false | boolean |
| enabledInitialDescribeTable (producer) | DDB エンドポイントの最初の Describe テーブル操作を行うべきかどうかを設定します。 | true | boolean |
| keyAttributeName (producer) | テーブルの作成時の属性名。 | String | |
| keyAttributeType (producer) | テーブル作成時の属性タイプ。 | String | |
| keyScalarType (producer) | キースケーラータイプ。S (String)、N (Number)、および B (Bytes) にすることができます。 | String | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| operation (producer) | 実行する操作。 列挙値:
| PutItem | Ddb2Operations |
| overrideEndpoint (producer) | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | boolean |
| proxyHost (producer) | DDB クライアントをインスタンス化する際にプロキシーホストを定義します。 | String | |
| proxyPort (producer) | DynamoDB クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | Integer | |
| proxyProtocol (producer) | DDB クライアントをインスタンス化する際にプロキシープロトコルを定義します。 列挙値:
| HTTPS | Protocol |
| readCapacity (producer) | テーブルからリソースを読み取るために予約するプロビジョニングされたスループット。 | Long | |
| region (producer) | DDB クライアントが機能する必要があるリージョン。 | String | |
| trustAllCertificates (producer) | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | boolean |
| uriEndpointOverride (producer) | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| useDefaultCredentialsProvider (producer) | デフォルトのクレデンシャルプロバイダー経由でクレデンシャルをロードすること、または静的クレデンシャルが渡されることを S3 クライアントは想定すべきかどうかを設定します。 | false | boolean |
| writeCapacity (producer) | テーブルにリソースを書き込むために予約するプロビジョニングされたスループット。 | Long | |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| accessKey (security) | Amazon AWS Access Key。 | String | |
| secretKey (security) | Amazon AWS Secret Key。 | String |
6.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
AWS DynamoDB エンドポイントは、URI 構文を使用して設定します。
aws2-ddb:tableName
パスおよびクエリーパラメーターを使用します。
6.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| tableName (producer) | 必須。現在作業中のテーブルの名前。 | String |
6.5.2. クエリーパラメーター(20 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| amazonDDBClient (producer) | Autowired: AmazonDynamoDB をクライアントとして使用します。 | DynamoDbClient | |
| consistentRead (producer) | データの読み取り時に強力な整合性を適用するべきかどうかを決定します。 | false | boolean |
| enabledInitialDescribeTable (producer) | DDB エンドポイントの最初の Describe テーブル操作を行うべきかどうかを設定します。 | true | boolean |
| keyAttributeName (producer) | テーブルの作成時の属性名。 | String | |
| keyAttributeType (producer) | テーブル作成時の属性タイプ。 | String | |
| keyScalarType (producer) | キースケーラータイプ。S (String)、N (Number)、および B (Bytes) にすることができます。 | String | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| operation (producer) | 実行する操作。 列挙値:
| PutItem | Ddb2Operations |
| overrideEndpoint (producer) | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | boolean |
| proxyHost (producer) | DDB クライアントをインスタンス化する際にプロキシーホストを定義します。 | String | |
| proxyPort (producer) | DynamoDB クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | Integer | |
| proxyProtocol (producer) | DDB クライアントをインスタンス化する際にプロキシープロトコルを定義します。 列挙値:
| HTTPS | Protocol |
| readCapacity (producer) | テーブルからリソースを読み取るために予約するプロビジョニングされたスループット。 | Long | |
| region (producer) | DDB クライアントが機能する必要があるリージョン。 | String | |
| trustAllCertificates (producer) | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | boolean |
| uriEndpointOverride (producer) | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| useDefaultCredentialsProvider (producer) | デフォルトのクレデンシャルプロバイダー経由でクレデンシャルをロードすること、または静的クレデンシャルが渡されることを S3 クライアントは想定すべきかどうかを設定します。 | false | boolean |
| writeCapacity (producer) | テーブルにリソースを書き込むために予約するプロビジョニングされたスループット。 | Long | |
| accessKey (security) | Amazon AWS Access Key。 | String | |
| secretKey (security) | Amazon AWS Secret Key。 | String |
必要な DDB コンポーネントオプション
Amazon の DynamoDB にアクセスするには、レジストリーに amazonDDBClient を指定するか、accessKey と secretKey を指定する必要があります。
6.6. 使用方法 リンクのコピーリンクがクリップボードにコピーされました!
6.6.1. 静的認証情報とデフォルトの認証情報プロバイダーの比較 リンクのコピーリンクがクリップボードにコピーされました!
useDefaultCredentialsProvider オプションを指定し、これを true に設定することにより、明示的な静的認証情報の使用を回避することが可能です。
- Java システムプロパティー - aws.accessKeyId および aws.secretKey
- 環境変数: AWS_ACCESS_KEY_ID および AWS_SECRET_ACCESS_KEY。
- AWS STS の Web ID トークン。
- 共有認証情報および設定ファイル。
- Amazon ECS コンテナー認証情報 - 環境変数 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI が設定されている場合は、Amazon ECS からロードされます。
- Amazon EC2 インスタンスプロファイルの認証情報。
これに関する詳細情報は、AWS 認証情報のドキュメント を参照してください。
6.6.2. DDB producer によって評価されるメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 型 | 説明 |
|---|---|---|
|
|
| プライマリーキーによって取得するテーブル名と対応する項目のマップ。 |
|
|
| この操作のテーブル名。 |
|
|
| テーブル内の各項目を一意に識別するプライマリーキー。 |
|
|
| 変更前または変更後の属性の名前および値のペアを取得する場合は、このパラメーターを使用します (NONE、ALL_OLD、UPDATED_OLD、ALL_NEW、UPDATED_NEW)。 |
|
|
| 条件変更の属性を指定します。 |
|
|
| 属性名が指定されていない場合、すべての属性が返されます。 |
|
|
| true に設定すると、一貫性のある読み取りが発行されます。それ以外の場合は、最終的に一貫性が使用されます。 |
|
|
| 設定されている場合、クエリー操作のセカンダリーインデックスとして使用されます。 |
|
|
| アイテムの属性のマップ。アイテムを定義するプライマリーキー値を含める必要があります。 |
|
|
| true に設定すると、Amazon DynamoDB は、一致する項目とその属性のリストではなく、クエリーパラメーターに一致する項目の総数を返します。 |
|
|
| このヘッダーはクエリーの選択基準を指定し、2 つの古いヘッダー CamelAwsDdbHashKeyValue および CamelAwsDdbScanRangeKeyCondition をマージします。 |
|
|
| 以前のクエリーを続行するアイテムのプライマリーキー。 |
|
|
| 複合プライマリーキーのハッシュコンポーネントの値。 |
|
|
| 返すアイテムの最大数。 |
|
|
| クエリーに使用する属性値および比較 Operator のコンテナー。 |
|
|
| インデックスの順方向または逆方向のトラバーサルを指定します。 |
|
|
| スキャン結果を評価し、目的の値のみを返します。 |
|
|
| 更新の新しい値とアクションへの属性名のマップ。 |
6.6.3. BatchGetItems 操作中に設定されたメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 型 | 説明 |
|---|---|---|
|
|
| テーブル名およびテーブルの各項目属性。 |
|
|
| テーブルのマップと、現在の応答で処理されなかった対応するキーが含まれます。 |
6.6.4. DeleteItem 操作時に設定されたメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 型 | 説明 |
|---|---|---|
|
|
| 操作によって返される属性の一覧。 |
6.6.5. DeleteTable 操作時に設定されたメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 型 | 説明 |
|---|---|---|
|
| ||
|
| このテーブルの ProvisionedThroughput プロパティーの値 | |
|
|
| このテーブルの DateTime の作成。 |
|
|
| このテーブルのアイテム数。 |
|
|
| このテーブルのプライマリーキーを識別する KeySchema。Camel 2.16.0 以降、このヘッダーのタイプは List<KeySchemaElement> であり、KeySchema ではありません。 |
|
|
| テーブル名。 |
|
|
| テーブルサイズ(バイト単位)。 |
|
|
| テーブルのステータス: CREATING、UPDATING、DELETING、ACTIVE |
6.6.6. DescribeTable 操作中に設定されたメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 型 | 説明 |
|---|---|---|
|
| \{{ProvisionedThroughputDescription}} | このテーブルの ProvisionedThroughput プロパティーの値 |
|
|
| このテーブルの DateTime の作成。 |
|
|
| このテーブルのアイテム数。 |
|
| \{{KeySchema}} | このテーブルのプライマリーキーを識別する KeySchema。 |
|
|
| テーブル名。 |
|
|
| テーブルサイズ(バイト単位)。 |
|
|
| テーブルのステータス: CREATING、UPDATING、DELETING、ACTIVE |
|
|
| このテーブルの ReadCapacityUnits プロパティー。 |
|
|
| このテーブルの WriteCapacityUnits プロパティー。 |
6.6.7. GetItem 操作時に設定されたメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 型 | 説明 |
|---|---|---|
|
|
| 操作によって返される属性の一覧。 |
6.6.8. PutItem 操作中に設定されたメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 型 | 説明 |
|---|---|---|
|
|
| 操作によって返される属性の一覧。 |
6.6.9. Query 操作時に設定されたメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 型 | 説明 |
|---|---|---|
|
|
| 操作によって返される属性の一覧。 |
|
|
| 前の結果セットを含む、クエリー操作が停止した項目のプライマリーキー。 |
|
|
| 操作中に消費された、テーブルのプロビジョニングされたスループットのキャパシティーユニットの数。 |
|
|
| 応答のアイテム数。 |
6.6.10. Scan 操作時に設定されたメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 型 | 説明 |
|---|---|---|
|
|
| 操作によって返される属性の一覧。 |
|
|
| 前の結果セットを含む、クエリー操作が停止した項目のプライマリーキー。 |
|
|
| 操作中に消費された、テーブルのプロビジョニングされたスループットのキャパシティーユニットの数。 |
|
|
| 応答のアイテム数。 |
|
|
| フィルターが適用される前の完全なスキャン内のアイテムの数。 |
6.6.11. UpdateItem 操作時に設定されたメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 型 | 説明 |
|---|---|---|
|
|
| 操作によって返される属性の一覧。 |
6.6.12. 高度な AmazonDynamoDB 設定 リンクのコピーリンクがクリップボードにコピーされました!
AmazonDynamoDB インスタンス設定をさらに制御する必要がある場合は、独自のインスタンスを作成し、URI から参照できます。
from("direct:start")
.to("aws2-ddb://domainName?amazonDDBClient=#client");
#client は、レジストリー内の DynamoDbClient を参照します。
6.7. サポートされる producer 操作 リンクのコピーリンクがクリップボードにコピーされました!
- BatchGetItems
- DeleteItem
- DeleteTable
- DescribeTable
- GetItem
- PutItem
- クエリー
- スキャン
- UpdateItem
- UpdateTable
6.8. 例 リンクのコピーリンクがクリップボードにコピーされました!
6.8.1. producer の例 リンクのコピーリンクがクリップボードにコピーされました!
- PutItem: このオペレーションは DynamoDB にエントリーを作成します
from("direct:start")
.setHeader(Ddb2Constants.OPERATION, Ddb2Operations.PutItem)
.setHeader(Ddb2Constants.CONSISTENT_READ, "true")
.setHeader(Ddb2Constants.RETURN_VALUES, "ALL_OLD")
.setHeader(Ddb2Constants.ITEM, attributeMap)
.setHeader(Ddb2Constants.ATTRIBUTE_NAMES, attributeMap.keySet());
.to("aws2-ddb://" + tableName + "?keyAttributeName=" + attributeName + "&keyAttributeType=" + KeyType.HASH
+ "&keyScalarType=" + ScalarAttributeType.S
+ "&readCapacity=1&writeCapacity=1");
Maven ユーザーは、以下の依存関係を pom.xml に追加する必要があります。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws2-ddb</artifactId>
<version>${camel-version}</version>
</dependency>
{camel-version} は Camel の実際のバージョンに置き換える必要があります。
6.9. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 40 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.aws2-ddb.access-key | Amazon AWS Access Key。 | String | |
| camel.component.aws2-ddb.amazon-d-d-b-client | AmazonDynamoDB をクライアントとして使用します。このオプションは software.amazon.awssdk.services.dynamodb.DynamoDbClient タイプです。 | DynamoDbClient | |
| camel.component.aws2-ddb.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.aws2-ddb.configuration | コンポーネントの設定。このオプションは apache.camel.component.aws2.ddb.Ddb2Configuration タイプです。 | Ddb2Configuration | |
| camel.component.aws2-ddb.consistent-read | データの読み取り時に強力な整合性を適用するべきかどうかを決定します。 | false | Boolean |
| camel.component.aws2-ddb.enabled | aws2-ddb コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.aws2-ddb.enabled-initial-describe-table | DDB エンドポイントの最初の Describe テーブル操作を行うべきかどうかを設定します。 | true | Boolean |
| camel.component.aws2-ddb.key-attribute-name | テーブルの作成時の属性名。 | String | |
| camel.component.aws2-ddb.key-attribute-type | テーブル作成時の属性タイプ。 | String | |
| camel.component.aws2-ddb.key-scalar-type | キースケーラータイプ。S (String)、N (Number)、および B (Bytes) にすることができます。 | String | |
| camel.component.aws2-ddb.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.aws2-ddb.operation | 実行する操作。 | Ddb2Operations | |
| camel.component.aws2-ddb.override-endpoint | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | Boolean |
| camel.component.aws2-ddb.proxy-host | DDB クライアントをインスタンス化する際にプロキシーホストを定義します。 | String | |
| camel.component.aws2-ddb.proxy-port | DynamoDB クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | Integer | |
| camel.component.aws2-ddb.proxy-protocol | DDB クライアントをインスタンス化する際にプロキシープロトコルを定義します。 | Protocol | |
| camel.component.aws2-ddb.read-capacity | テーブルからリソースを読み取るために予約するプロビジョニングされたスループット。 | Long | |
| camel.component.aws2-ddb.region | DDB クライアントが機能する必要があるリージョン。 | String | |
| camel.component.aws2-ddb.secret-key | Amazon AWS Secret Key。 | String | |
| camel.component.aws2-ddb.trust-all-certificates | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | Boolean |
| camel.component.aws2-ddb.uri-endpoint-override | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| camel.component.aws2-ddb.use-default-credentials-provider | デフォルトのクレデンシャルプロバイダー経由でクレデンシャルをロードすること、または静的クレデンシャルが渡されることを S3 クライアントは想定すべきかどうかを設定します。 | false | Boolean |
| camel.component.aws2-ddb.write-capacity | テーブルにリソースを書き込むために予約するプロビジョニングされたスループット。 | Long | |
| camel.component.aws2-ddbstream.access-key | Amazon AWS Access Key。 | String | |
| camel.component.aws2-ddbstream.amazon-dynamo-db-streams-client | このエンドポイントに対するすべての要求に使用する Amazon DynamoDB クライアント。このオプションは software.amazon.awssdk.services.dynamodb.streams.DynamoDbStreamsClient タイプです。 | DynamoDbStreamsClient | |
| camel.component.aws2-ddbstream.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.aws2-ddbstream.bridge-error-handler | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | Boolean |
| camel.component.aws2-ddbstream.configuration | コンポーネントの設定。このオプションは org.apache.camel.component.aws2.ddbstream.Ddb2StreamConfiguration タイプです。 | Ddb2StreamConfiguration | |
| camel.component.aws2-ddbstream.enabled | aws2-ddbstream コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.aws2-ddbstream.max-results-per-request | 各ポーリングでフェッチされる最大レコード数。 | Integer | |
| camel.component.aws2-ddbstream.override-endpoint | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | Boolean |
| camel.component.aws2-ddbstream.proxy-host | DDBStreams クライアントをインスタンス化する際にプロキシーホストを定義します。 | String | |
| camel.component.aws2-ddbstream.proxy-port | DDBStreams クライアントをインスタンス化する際にプロキシーホストを定義します。 | Integer | |
| camel.component.aws2-ddbstream.proxy-protocol | DDBStreams クライアントをインスタンス化する際にプロキシーホストを定義します。 | Protocol | |
| camel.component.aws2-ddbstream.region | DDBStreams クライアントが機能する必要があるリージョン。 | String | |
| camel.component.aws2-ddbstream.secret-key | Amazon AWS Secret Key。 | String | |
| camel.component.aws2-ddbstream.stream-iterator-type | DynamoDB ストリーム内でレコードの取得を開始する場所を定義します。FROM_START を使用すると、ストリームがリアルタイムに追いつく前に大幅な遅延が発生する可能性があることに注意してください。 | Ddb2StreamConfiguration$StreamIteratorType | |
| camel.component.aws2-ddbstream.trust-all-certificates | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | Boolean |
| camel.component.aws2-ddbstream.uri-endpoint-override | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| camel.component.aws2-ddbstream.use-default-credentials-provider | デフォルトのクレデンシャルプロバイダー経由でクレデンシャルをロードすること、または静的クレデンシャルが渡されることを DynamoDB Streams クライアントは想定すべきかどうかを設定します。 | false | Boolean |
第7章 AWS キネシス リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
AWS2 Kinesis コンポーネントは、Amazon Kinesis (バッチはサポートされていません) サービスとのメッセージの送受信をサポートしています。
AWS2 Kinesis コンポーネントは、同期クライアントと非同期クライアントもサポートします。したがって、接続 (クライアント) を非同期にする必要がある場合は、'asyncClient' オプション (DSL にもあります) を true に設定します。
前提条件
有効な Amazon Web Services 開発者アカウントを持っていて、Amazon Kinesis を使用するためにサインアップしている必要がある。詳細は、AWS Kinesis を参照してください。
7.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で aws2-kinesis を使用する場合は、自動設定をサポートするために次の Maven 依存関係を pom.xml に追加します。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-aws2-kinesis-starter</artifactId>
</dependency>
7.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
aws2-kinesis://stream-name[?options]
ストリームは、使用する前に作成する必要があります。URI には、?options=value&option2=value&… という形式でクエリーオプションを追加できます。
7.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
7.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
7.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
7.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
AWS Kinesis コンポーネントは、以下に示す 28 個のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| amazonKinesisClient (common) | Autowired このエンドポイントに対するすべての要求に使用する Amazon Kinesis クライアント。 | KinesisClient | |
| cborEnabled (common) | このオプションは、実行中に CBOR_ENABLED プロパティーを設定します。 | true | boolean |
| configuration (common) | コンポーネントの設定。 | Kinesis2Configuration | |
| overrideEndpoint (common) | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | boolean |
| proxyHost (common) | Kinesis クライアントをインスタンス化する際にプロキシーホストを定義します。 | String | |
| proxyPort (common) | Kinesis クライアントをインスタンス化する際にプロキシーポートを定義します。 | Integer | |
| proxyProtocol (common) | Kinesis クライアントをインスタンス化する際にプロキシープロトコルを定義します。 列挙値:
| HTTPS | Protocol |
| region (common) | Kinesis Firehose クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| trustAllCertificates (common) | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | boolean |
| uriEndpointOverride (common) | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| useDefaultCredentialsProvider (common) | デフォルトのクレデンシャルプロバイダー経由でクレデンシャルをロードすること、または静的クレデンシャルが渡されることを Kinesis クライアントは想定すべきかどうかを設定します。 | false | boolean |
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| iteratorType (consumer) | Kinesis ストリーム内でレコードの取得を開始する場所を定義します。 列挙値:
| TRIM_HORIZON | ShardIteratorType |
| maxResultsPerRequest (consumer) | 各ポーリングでフェッチされる最大レコード数。 | 1 | int |
| resumeStrategy (consumer) | AWS Kinesis の再開戦略を定義します。デフォルトの戦略は、指定されている場合は、sequenceNumber を読み取ります。 | KinesisUserConfigurationResumeStrategy | KinesisResumeStrategy |
| sequenceNumber (consumer) | ポーリングを開始するシーケンス番号。iteratorType が AFTER_SEQUENCE_NUMBER または AT_SEQUENCE_NUMBER に設定されている場合に必要です。 | String | |
| shardClosed (consumer) | シャード (shard) が閉じられた場合の動作を定義します。使用できる値は ignore、silent、および fail です。ignore の場合、メッセージはログに記録され、consumer は最初から再起動します。silent の場合は、ログには記録されず、consumer は最初から起動します。fail の場合は、ReachedClosedStateException が発生します。 列挙値:
| ignore | Kinesis2ShardClosedStrategyEnum |
| shardId (consumer) | Kinesis ストリームでどの shardId からレコードを取得するかを定義します。 | String | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| asyncClient (advanced) | KinesisAsyncClient インスタンスが必要な場合は true に設定します。 | false | boolean |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| healthCheckConsumerEnabled (health) | このコンポーネントからのすべてのコンシューマーベースのヘルスチェックを有効または無効にするために使用します。 | true | boolean |
| healthCheckProducerEnabled (health) |
このコンポーネントからのすべてのプロデューサーベースのヘルスチェックを有効または無効にするために使用します。注記: Camel では、すべてのプロデューサーベースのヘルスチェックがデフォルトで無効になっています。 | true | boolean |
| accessKey (security) | Amazon AWS Access Key。 | String | |
| profileCredentialsName (security) | プロファイル認証情報プロバイダーを使用する場合、このパラメーターがプロファイル名を設定します。 | String | |
| secretKey (security) | Amazon AWS Secret Key。 | String | |
| sessionToken (security) | ユーザーに IAM ロールが想定される場合に使用される Amazon AWS セッショントークン。 | String | |
| trustAllCertificates (security) | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | boolean |
| useDefaultCredentialsProvider (security) | デフォルトのクレデンシャルプロバイダー経由でクレデンシャルをロードすること、または静的クレデンシャルが渡されることを Kinesis クライアントは想定すべきかどうかを設定します。 | false | boolean |
| useProfileCredentialsProvider (security) | Kinesis クライアントがプロファイル認証情報プロバイダーを通じて認証情報をロードするかどうかを設定します。 | false | boolean |
| useSessionCredentials (security) | Kinesis クライアントがセッション認証情報を使用するかどうかを設定します。これは、ユーザーが Kinesis で操作を実行するために IAM ロールを引き受ける必要がある場合に役立ちます。 | false | boolean |
7.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
AWS Kinesis エンドポイントは、URI 構文を使用して設定します。
aws2-kinesis:streamName
パスおよびクエリーパラメーターを使用します。
7.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| streamName (common) | 必須 ストリームの名前。 | String |
7.5.2. クエリーパラメーター (42 パラメーター): リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| amazonKinesisClient (common) | Autowired このエンドポイントに対するすべての要求に使用する Amazon Kinesis クライアント。 | KinesisClient | |
| cborEnabled (common) | このオプションは、実行中に CBOR_ENABLED プロパティーを設定します。 | true | boolean |
| overrideEndpoint (common) | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | boolean |
| proxyHost (common) | Kinesis クライアントをインスタンス化する際にプロキシーホストを定義します。 | String | |
| proxyPort (common) | Kinesis クライアントをインスタンス化する際にプロキシーポートを定義します。 | Integer | |
| proxyProtocol (common) | Kinesis クライアントをインスタンス化する際にプロキシープロトコルを定義します。 列挙値:
| HTTPS | Protocol |
| region (common) | Kinesis Firehose クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| trustAllCertificates (common) | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | boolean |
| uriEndpointOverride (common) | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| useDefaultCredentialsProvider (common) | デフォルトのクレデンシャルプロバイダー経由でクレデンシャルをロードすること、または静的クレデンシャルが渡されることを Kinesis クライアントは想定すべきかどうかを設定します。 | false | boolean |
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| iteratorType (consumer) | Kinesis ストリーム内でレコードの取得を開始する場所を定義します。 列挙値:
| TRIM_HORIZON | ShardIteratorType |
| maxResultsPerRequest (consumer) | 各ポーリングでフェッチされる最大レコード数。 | 1 | int |
| resumeStrategy (consumer) | AWS Kinesis の再開戦略を定義します。デフォルトの戦略は、指定されている場合は、sequenceNumber を読み取ります。 | KinesisUserConfigurationResumeStrategy | KinesisResumeStrategy |
| sendEmptyMessageWhenIdle (consumer) | ポーリング consumer がファイルをポーリングしなかった場合、このオプションを有効にして、代わりに空のメッセージ (ボディーなし) を送信できます。 | false | boolean |
| sequenceNumber (consumer) | ポーリングを開始するシーケンス番号。iteratorType が AFTER_SEQUENCE_NUMBER または AT_SEQUENCE_NUMBER に設定されている場合に必要です。 | String | |
| shardClosed (consumer) | シャード (shard) が閉じられた場合の動作を定義します。使用できる値は ignore、silent、および fail です。ignore の場合、メッセージはログに記録され、consumer は最初から再起動します。silent の場合は、ログには記録されず、consumer は最初から起動します。fail の場合は、ReachedClosedStateException が発生します。 列挙値:
| ignore | Kinesis2ShardClosedStrategyEnum |
| shardId (consumer) | Kinesis ストリームでどの shardId からレコードを取得するかを定義します。 | String | |
| exceptionHandler (consumer (advanced)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (advanced)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| pollStrategy (consumer (advanced)) | プラグ可能な org.apache.camel.PollingConsumerPollingStrategy を使用すると、エクスチェンジが作成され、Camel でルーティングされる前に、通常はポーリング操作中に発生するエラー処理を制御するカスタム実装が提供できます。 | PollingConsumerPollStrategy | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| asyncClient (advanced) | KinesisAsyncClient インスタンスが必要な場合は true に設定します。 | false | boolean |
| backoffErrorThreshold (scheduler) | backoffMultipler が開始する前に発生する必要がある後続のエラーポーリング (エラーによって失敗した) の数。 | int | |
| backoffIdleThreshold (scheduler) | backoffMultipler が開始する前に発生する必要がある後続のアイドルポーリングの数。 | int | |
| backoffMultiplier (scheduler) | 後続のアイドル状態/エラーが連続して発生した場合に、スケジュールされたポーリング consumer のバックオフを許可します。乗数は、実際に次の試行が行われる前にスキップされるポーリングの数です。このオプションが使用されている場合は、backoffIdleThreshold や backoffErrorThreshold も設定する必要があります。 | int | |
| delay (scheduler) | 次のポーリングまでの時間 (ミリ秒単位)。 | 500 | long |
| greedy (scheduler) | greedy が有効で、以前の実行が 1 つ以上のメッセージをポーリングした場合、ScheduledPollConsumer は即座に再度実行されます。 | false | boolean |
| initialDelay (scheduler) | 最初のポーリングが開始されるまでの時間 (ミリ秒単位)。 | 1000 | long |
| repeatCount (scheduler) | 実行の最大数を指定します。そのため、これを 1 に設定するとスケジューラーは 1 度だけ実行されます。これを 5 に設定した場合、5 回だけ実行されます。0 または負の値を設定すると、無制限に実行されます。 | 0 | long |
| runLoggingLevel (scheduler) | consumer はポーリング時に開始/完了のログ行を記録します。このオプションを使用すると、ログレベルを設定できます。 列挙値:
| TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | consumer に使用するカスタム/共有スレッドプールを設定できます。デフォルトでは、各 consumer に独自の単一スレッドのスレッドプールがあります。 | ScheduledExecutorService | |
| scheduler (scheduler) | camel-spring または camel-quartz コンポーネントから cron スケジューラーを使用します。スケジューラーにビルドされた値 spring または quartz を使用。 | none | オブジェクト |
| schedulerProperties (scheduler) | カスタムスケジューラーまたは Quartz や Spring ベースのスケジューラーを使用する場合に、追加のプロパティーを設定します。 | マップ | |
| startScheduler (scheduler) | スケジューラーを自動起動するかどうか。 | true | boolean |
| timeUnit (scheduler) | initialDelay および delay オプションの時間単位。 列挙値:
| MILLISECONDS | TimeUnit |
| useFixedDelay (scheduler) | 固定遅延または固定レートを使用するかどうかを制御します。詳細は、JDK の ScheduledExecutorService を参照してください。 | true | boolean |
| accessKey (security) | Amazon AWS Access Key。 | String | |
| profileCredentialsName (security) | プロファイル認証情報プロバイダーを使用する場合、このパラメーターがプロファイル名を設定します。 | String | |
| secretKey (security) | Amazon AWS Secret Key。 | String | |
| sessionToken (security) | ユーザーに IAM ロールが想定される場合に使用される Amazon AWS セッショントークン。 | String | |
| trustAllCertificates (security) | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | boolean |
| useDefaultCredentialsProvider (security) | デフォルトのクレデンシャルプロバイダー経由でクレデンシャルをロードすること、または静的クレデンシャルが渡されることを Kinesis クライアントは想定すべきかどうかを設定します。 | false | boolean |
| useProfileCredentialsProvider (security) | Kinesis クライアントがプロファイル認証情報プロバイダーを通じて認証情報をロードするかどうかを設定します。 | false | boolean |
| useSessionCredentials (security) | Kinesis クライアントがセッション認証情報を使用するかどうかを設定します。これは、ユーザーが Kinesis で操作を実行するために IAM ロールを引き受ける必要がある場合に役立ちます。 | false | boolean |
必要な Kinesis コンポーネントオプション
プロキシーおよび関連する認証情報が設定された状態で、レジストリーに KinesisClient を提供する必要があります。
7.6. バッチ consumer リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントは、Batch Consumer を実装します。
これにより、たとえば、このバッチに存在するメッセージの数を知ることができ、たとえば、Aggregator にこの数のメッセージを集約させることができます。
コンシューマーは、Amazon Kinesis の特定の単一シャードまたは利用可能なすべてのシャード (複数のシャードの消費) を消費できます。したがって、DSL 設定の 'shardId' プロパティーを空のままにしておくと、使用可能なすべてのシャードが消費されます。そうでない場合は、shardId に対応する指定されたシャードのみが消費されます。
7.7. 使用方法 リンクのコピーリンクがクリップボードにコピーされました!
7.7.1. 静的認証情報とデフォルトの認証情報プロバイダーの比較 リンクのコピーリンクがクリップボードにコピーされました!
useDefaultCredentialsProvider オプションを指定し、これを true に設定することにより、明示的な静的認証情報の使用を回避することが可能です。
デフォルトの認証情報プロバイダーの評価順序は次のとおりです。
-
Java system properties -
aws.accessKeyIdandaws.secretKey -
環境変数:
AWS_ACCESS_KEY_IDおよびAWS_SECRET_ACCESS_KEY。 - AWS STS の Web ID トークン。
- 共有認証情報および設定ファイル。
-
Amazon ECS コンテナー認証情報 - 環境変数
AWS_CONTAINER_CREDENTIALS_RELATIVE_URIが設定されている場合は、Amazon ECS からロードされます。 - Amazon EC2 インスタンスプロファイルの認証情報。
useProfileCredentialsProvider オプションを true に指定し、profileCredentialsName をプロファイル名に指定することで、プロファイル認証情報プロバイダーを使用することもできます。
同時に使用できるのは、静的、デフォルト、およびプロファイルの認証情報のうち 1 つだけです。
詳細は、AWS 認証情報のドキュメント を参照してください。
7.8. メッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 |
|---|---|
| CamelAwsKinesisSequenceNumber (common) 定数: SEQUENCE_NUMBER | PutRecord syntax で定義されたレコードのシーケンス番号。 |
| CamelAwsKinesisApproximateArrivalTimestamp (common) Constant: APPROX_ARRIVAL_TIME | AWS がレコードの到着時間として割り当てた時間。 |
| CamelAwsKinesisPartitionKey (common) 定数: PARTITION_KEY | データレコードが割り当てられているストリーム内のシャードを識別します。 |
| CamelMessageTimestamp (common) Constant: MESSAGE_TIMESTAMP | メッセージのタイムスタンプ。 |
| CamelAwsKinesisShardId (common) Constant: SHARD_ID | データレコードが配置されたシャードのシャード ID。 |
7.8.1. AmazonKinesis の設定 リンクのコピーリンクがクリップボードにコピーされました!
次にamazonKinesisClient URI オプションで KinesisClient を参照する必要があります。
from("aws2-kinesis://mykinesisstream?amazonKinesisClient=#kinesisClient")
.to("log:out?showAll=true");
7.8.2. AWS 認証情報の指定 リンクのコピーリンクがクリップボードにコピーされました!
新しい ClientConfiguration インスタンスを作成するときのデフォルトである DefaultAWSCredentialsProviderChain を使用して認証情報を取得することを推奨しますが、createClient (…) を呼び出すときに別の AWSCredentialsProvider を指定できます。
7.8.3. AWS Kinesis KCL コンシューマー リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントは、Kinesis Data Stream から消費するための KCL (Kinesis クライアントライブラリー) もサポートします。この機能を有効にするには、エンドポイントで 2 つの異なるパラメーターを設定します。
from("aws2-kinesis://mykinesisstream?asyncClient=true&useDefaultCredentialsProvider=true&useKclConsumers=true")
.to("log:out?showAll=true");
この機能により、KCL、DynamoDB テーブル、CloudWatch アラームを組み合わせて使用して、シャードイテレーションのチェックポイントを自動的に作成できるようになります。これは、AWS 認証情報を使用するだけですぐに使用できます。
KCL を使用する AWS Kinesis コンシューマーの起動には約 60 - 70 秒かかります。
7.9. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 50 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.aws2-kinesis-firehose.access-key | Amazon AWS Access Key。 | String | |
| camel.component.aws2-kinesis-firehose.amazon-kinesis-firehose-client | このエンドポイントのすべてのリクエストに使用する Amazon Kinesis Firehose クライアント。オプションは、software.amazon.awssdk.services.firehose.FirehoseClient タイプです。 | FirehoseClient | |
| camel.component.aws2-kinesis-firehose.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.aws2-kinesis-firehose.cbor-enabled | このオプションは、実行中に CBOR_ENABLED プロパティーを設定します。 | true | Boolean |
| camel.component.aws2-kinesis-firehose.configuration | コンポーネントの設定。オプションは org.apache.camel.component.aws2.firehose.KinesisFirehose2Configuration タイプです。 | KinesisFirehose2Configuration | |
| camel.component.aws2-kinesis-firehose.enabled | aws2-kinesis-firehose コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.aws2-kinesis-firehose.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.aws2-kinesis-firehose.operation | ユーザーがレコードだけを送信したくない場合に行う操作。 | KinesisFirehose2Operations | |
| camel.component.aws2-kinesis-firehose.override-endpoint | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | Boolean |
| camel.component.aws2-kinesis-firehose.profile-credentials-name | プロファイル認証情報プロバイダーを使用する場合、このパラメーターがプロファイル名を設定します。 | String | |
| camel.component.aws2-kinesis-firehose.proxy-host | Kinesis Firehose クライアントをインスタンス化するときにプロキシーホストを定義するには。 | String | |
| camel.component.aws2-kinesis-firehose.proxy-port | Kinesis Firehose クライアントをインスタンス化するときにプロキシーポートを定義するには。 | Integer | |
| camel.component.aws2-kinesis-firehose.proxy-protocol | Kinesis Firehose クライアントをインスタンス化するときにプロキシープロトコルを定義するには。 | Protocol | |
| camel.component.aws2-kinesis-firehose.region | Kinesis Firehose クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| camel.component.aws2-kinesis-firehose.secret-key | Amazon AWS Secret Key。 | String | |
| camel.component.aws2-kinesis-firehose.session-token | ユーザーに IAM ロールが想定される場合に使用される Amazon AWS セッショントークン。 | String | |
| camel.component.aws2-kinesis-firehose.trust-all-certificates | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | Boolean |
| camel.component.aws2-kinesis-firehose.uri-endpoint-override | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| camel.component.aws2-kinesis-firehose.use-default-credentials-provider | デフォルトのクレデンシャルプロバイダー経由でクレデンシャルをロードすること、または静的クレデンシャルが渡されることを Kinesis Firehose クライアントは想定すべきかどうかを設定します。 | false | Boolean |
| camel.component.aws2-kinesis-firehose.use-profile-credentials-provider | Kinesis Firehose クライアントがプロファイル認証情報プロバイダーを通じて認証情報をロードするかどうかを設定します。 | false | Boolean |
| camel.component.aws2-kinesis-firehose.use-session-credentials | Kinesis Firehose クライアントがセッション認証情報を使用するかどうかを設定します。これは、ユーザーが Kinesis Firehose で操作を実行するために IAM ロールを引き受ける必要がある場合に便利です。 | false | Boolean |
| camel.component.aws2-kinesis.access-key | Amazon AWS Access Key。 | String | |
| camel.component.aws2-kinesis.amazon-kinesis-client | このエンドポイントに対するすべての要求に使用する Amazon Kinesis クライアント。オプションは、software.amazon.awssdk.services.kinesis.KinesisClient タイプです。 | KinesisClient | |
| camel.component.aws2-kinesis.async-client | KinesisAsyncClient インスタンスが必要な場合は true に設定します。 | false | Boolean |
| camel.component.aws2-kinesis.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.aws2-kinesis.bridge-error-handler | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | Boolean |
| camel.component.aws2-kinesis.cbor-enabled | このオプションは、実行中に CBOR_ENABLED プロパティーを設定します。 | true | Boolean |
| camel.component.aws2-kinesis.configuration | コンポーネントの設定。オプションは org.apache.camel.component.aws2.kinesis.Kinesis2Configuration タイプです。 | Kinesis2Configuration | |
| camel.component.aws2-kinesis.enabled | aws2-kinesis コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.aws2-kinesis.health-check-consumer-enabled | このコンポーネントからのすべてのコンシューマーベースのヘルスチェックを有効または無効にするために使用します。 | true | Boolean |
| camel.component.aws2-kinesis.health-check-producer-enabled |
このコンポーネントからのすべてのプロデューサーベースのヘルスチェックを有効または無効にするために使用します。注記: Camel はデフォルトで、すべてのプロデューサーベースのヘルスチェックを無効にしています。 | true | Boolean |
| camel.component.aws2-kinesis.iterator-type | Kinesis ストリーム内でレコードの取得を開始する場所を定義します。 | ShardIteratorType | |
| camel.component.aws2-kinesis.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.aws2-kinesis.max-results-per-request | 各ポーリングでフェッチされる最大レコード数。 | 1 | Integer |
| camel.component.aws2-kinesis.override-endpoint | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | Boolean |
| camel.component.aws2-kinesis.profile-credentials-name | プロファイル認証情報プロバイダーを使用する場合、このパラメーターがプロファイル名を設定します。 | String | |
| camel.component.aws2-kinesis.proxy-host | Kinesis クライアントをインスタンス化する際にプロキシーホストを定義します。 | String | |
| camel.component.aws2-kinesis.proxy-port | Kinesis クライアントをインスタンス化する際にプロキシーポートを定義します。 | Integer | |
| camel.component.aws2-kinesis.proxy-protocol | Kinesis クライアントをインスタンス化する際にプロキシープロトコルを定義します。 | Protocol | |
| camel.component.aws2-kinesis.region | Kinesis Firehose クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| camel.component.aws2-kinesis.resume-strategy | AWS Kinesis の再開戦略を定義します。デフォルトの戦略は、指定されている場合は、sequenceNumber を読み取ります。オプションは org.apache.camel.component.aws2.kinesis.consumer.KinesisResumeStrategy タイプです。 | KinesisResumeStrategy | |
| camel.component.aws2-kinesis.secret-key | Amazon AWS Secret Key。 | String | |
| camel.component.aws2-kinesis.sequence-number | ポーリングを開始するシーケンス番号。iteratorType が AFTER_SEQUENCE_NUMBER または AT_SEQUENCE_NUMBER に設定されている場合に必要です。 | String | |
| camel.component.aws2-kinesis.session-token | ユーザーに IAM ロールが想定される場合に使用される Amazon AWS セッショントークン。 | String | |
| camel.component.aws2-kinesis.shard-closed | シャード (shard) が閉じられた場合の動作を定義します。使用できる値は ignore、silent、および fail です。ignore の場合、メッセージはログに記録され、consumer は最初から再起動します。silent の場合は、ログには記録されず、consumer は最初から起動します。fail の場合は、ReachedClosedStateException が発生します。 | Kinesis2ShardClosedStrategyEnum | |
| camel.component.aws2-kinesis.shard-id | Kinesis ストリームでどの shardId からレコードを取得するかを定義します。 | String | |
| camel.component.aws2-kinesis.trust-all-certificates | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | Boolean |
| camel.component.aws2-kinesis.uri-endpoint-override | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| camel.component.aws2-kinesis.use-default-credentials-provider | デフォルトのクレデンシャルプロバイダー経由でクレデンシャルをロードすること、または静的クレデンシャルが渡されることを Kinesis クライアントは想定すべきかどうかを設定します。 | false | Boolean |
| camel.component.aws2-kinesis.use-profile-credentials-provider | Kinesis クライアントがプロファイル認証情報プロバイダーを通じて認証情報をロードするかどうかを設定します。 | false | Boolean |
| camel.component.aws2-kinesis.use-session-credentials | Kinesis クライアントがセッション認証情報を使用するかどうかを設定します。これは、ユーザーが Kinesis で操作を実行するために IAM ロールを引き受ける必要がある場合に役立ちます。 | false | Boolean |
第8章 AWS 2 Lambda リンクのコピーリンクがクリップボードにコピーされました!
producer のみサポート対象
AWS2 Lambda コンポーネントは、AWS Lambda 関数の作成、取得、一覧表示、削除、および呼び出しをサポートしています。
前提条件
有効な Amazon Web Services 開発者アカウントを持っていて、Amazon Lambda を使用するためにサインアップしている必要がある。詳細は、AWS Lambda を参照してください。
Lambda 関数を作成するときは、少なくとも AWSLambdaBasicExecuteRole ポリシーがアタッチされた IAM ロールを指定する必要があります。
8.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で aws2-lambda を使用する場合は、自動設定をサポートするために次の Maven 依存関係を pom.xml に追加します。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-aws2-lambda-starter</artifactId>
</dependency>
8.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
aws2-lambda://functionName[?options]
URI には、options=value&option2=value&… という形式でクエリーオプションを追加できます。
8.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
8.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
8.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
8.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
AWS Lambda コンポーネントは、以下に示す 16 のオプションをサポートしています。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| configuration (producer) | コンポーネントの設定。 | Lambda2 設定 | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| operation (producer) | 実行する操作。listFunctions、getFunction、createFunction、deleteFunction、または invokeFunction のいずれかです。 列挙値:
| invokeFunction | Lambda2Operations |
| overrideEndpoint (producer) | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | boolean |
| pojoRequest (producer) | POJO リクエストをボディーとして使用するかどうか。 | false | boolean |
| region (producer) | Lambda クライアントが動作する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| trustAllCertificates (producer) | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | boolean |
| uriEndpointOverride (producer) | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| useDefaultCredentialsProvider (producer) | Lambda クライアントがデフォルトの認証情報プロバイダーを介して認証情報をロードすることを期待するか、静的認証情報が渡されることを期待するかを設定します。 | false | boolean |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| awsLambdaClient (advanced) | Autowired 既存の設定済みの AwsLambdaClient をクライアントとして使用します。 | LambdaClient | |
| proxyHost (プロキシー) | Lambda クライアントをインスタンス化するときにプロキシーホストを定義します。 | String | |
| proxyPort (プロキシー) | Lambda クライアントをインスタンス化するときにプロキシーポートを定義します。 | Integer | |
| proxyProtocol (プロキシー) | Lambda クライアントをインスタンス化するときにプロキシープロトコルを定義します。 列挙値:
| HTTPS | Protocol |
| accessKey (security) | Amazon AWS Access Key。 | String | |
| secretKey (security) | Amazon AWS Secret Key。 | String |
8.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
AWS Lambda エンドポイントは、URI 構文を使用して設定されます。
aws2-lambda:function
パスおよびクエリーパラメーターを使用します。
8.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| function (producer) | 必須 Lambda 関数の名前。 | String |
8.5.2. クエリーパラメーター (14 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| operation (producer) | 実行する操作。listFunctions、getFunction、createFunction、deleteFunction、または invokeFunction のいずれかです。 列挙値:
| invokeFunction | Lambda2Operations |
| overrideEndpoint (producer) | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | boolean |
| pojoRequest (producer) | POJO リクエストをボディーとして使用するかどうか。 | false | boolean |
| region (producer) | Lambda クライアントが動作する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| trustAllCertificates (producer) | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | boolean |
| uriEndpointOverride (producer) | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| useDefaultCredentialsProvider (producer) | Lambda クライアントがデフォルトの認証情報プロバイダーを介して認証情報をロードすることを期待するか、静的認証情報が渡されることを期待するかを設定します。 | false | boolean |
| awsLambdaClient (advanced) | Autowired 既存の設定済みの AwsLambdaClient をクライアントとして使用します。 | LambdaClient | |
| proxyHost (プロキシー) | Lambda クライアントをインスタンス化するときにプロキシーホストを定義します。 | String | |
| proxyPort (プロキシー) | Lambda クライアントをインスタンス化するときにプロキシーポートを定義します。 | Integer | |
| proxyProtocol (プロキシー) | Lambda クライアントをインスタンス化するときにプロキシープロトコルを定義します。 列挙値:
| HTTPS | Protocol |
| accessKey (security) | Amazon AWS Access Key。 | String | |
| secretKey (security) | Amazon AWS Secret Key。 | String |
必要な Lambda コンポーネントオプション
Amazon Lambda サービスにアクセスするには、レジストリーに awsLambdaClient を指定するか、accessKey と secretKey を指定する必要があります。
8.6. 使用方法 リンクのコピーリンクがクリップボードにコピーされました!
8.6.1. 静的認証情報とデフォルトの認証情報プロバイダーの比較 リンクのコピーリンクがクリップボードにコピーされました!
useDefaultCredentialsProvider オプションを指定し、これを true に設定することにより、明示的な静的認証情報の使用を回避することが可能です。
- Java システムプロパティー - aws.accessKeyId および aws.secretKey
- 環境変数: AWS_ACCESS_KEY_ID および AWS_SECRET_ACCESS_KEY。
- AWS STS の Web ID トークン。
- 共有認証情報および設定ファイル。
- Amazon ECS コンテナー認証情報 - 環境変数 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI が設定されている場合は、Amazon ECS からロードされます。
- Amazon EC2 インスタンスプロファイルの認証情報。
これに関する詳細情報は、AWS 認証情報のドキュメント を参照してください。
8.6.2. Lambda producer によって評価されるメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| 操作 | ヘッダー | 型 | 説明 | 必須 |
|---|---|---|---|---|
| すべて |
|
| 実行する操作。クエリーパラメーターとして渡されたオーバーライド操作 | はい |
| createFunction |
|
| デプロイパッケージを含む .zip ファイルが保存される Amazon S3 バケット名。このバケットは、Lambda 関数を作成しているのと同じ AWS リージョンに存在する必要があります。 | いいえ |
| createFunction |
|
| アップロードする Amazon S3 オブジェクト (デプロイパッケージ) のキー名。 | いいえ |
| createFunction |
| String | アップロードする Amazon S3 オブジェクト (デプロイパッケージ) のバージョン。 | いいえ |
| createFunction |
|
| zip ファイル (デプロイメントパッケージ) のローカルパス。zip ファイルの内容をメッセージ本文に入れることもできます。 | いいえ |
| createFunction |
|
| Lambda が関数を実行して他のアマゾンウェブサービス (AWS) リソースにアクセスするときに引き受ける IAM ロールの Amazon リソースネーム (ARN)。 | はい |
| createFunction |
| String | アップロードする Lambda 関数のランタイム環境。(nodejs、nodejs4.3、nodejs6.10、java8、python2.7、python3.6、dotnetcore1.0、odejs4.3-edge) | はい |
| createFunction |
|
| 実行を開始するために Lambda が呼び出すコード内の関数。Node.js の場合は、関数の module-name.export 値です。Java の場合は、package.class-name::handler または package.class-name にすることができます。 | はい |
| createFunction |
|
| ユーザー提供の説明。 | いいえ |
| createFunction |
|
| Amazon SQS キューまたは Amazon SNS トピックのターゲット ARN (Amazon リソースネーム) を含む親オブジェクト。 | いいえ |
| createFunction |
|
| 関数用に設定したメモリーサイズ (MB 単位)。64 MB の倍数である必要があります。 | いいえ |
| createFunction |
|
| 関数の環境変数を暗号化するために使用される KMS キーの Amazon リソースネーム (ARN)。指定しない場合、AWS Lambda はデフォルトのサービスキーを使用します。 | いいえ |
| createFunction |
|
| このブール値パラメーターを使用して、AWS Lambda に Lambda 関数を作成し、バージョンをアトミック操作として発行するようにリクエストできます。 | いいえ |
| createFunction |
|
| Lambda が関数を終了する関数実行時間。デフォルトは 3 秒です。 | いいえ |
| createFunction |
|
| 関数のトレース設定 (Active または PassThrough)。 | いいえ |
| createFunction |
|
| 環境の設定を表すキーと値のペア。 | いいえ |
| createFunction |
|
| 新しい関数に割り当てられたタグ (キーと値のペア) のリスト。 | いいえ |
| createFunction |
|
| Lambda 関数が VPC 内のリソースにアクセスする場合、VPC 内の 1 つ以上のセキュリティーグループ ID のリスト。 | いいえ |
| createFunction |
|
| Lambda 関数が VPC 内のリソースにアクセスする場合、VPC 内の 1 つ以上のサブネット ID のリスト。 | いいえ |
| createAlias |
|
| エイリアスに設定する関数のバージョン | はい |
| createAlias |
|
| エイリアスに設定する関数名 | はい |
| createAlias |
|
| エイリアスに設定する関数の説明 | いいえ |
| deleteAlias |
|
| エイリアスの関数名 | はい |
| getAlias |
|
| エイリアスの関数名 | はい |
| listAliases |
|
| エイリアスに設定する関数のバージョン | いいえ |
8.7. 利用可能な操作のリスト リンクのコピーリンクがクリップボードにコピーされました!
- listFunctions
- getFunction
- createFunction
- deleteFunction
- invokeFunction
- updateFunction
- createEventSourceMapping
- deleteEventSourceMapping
- listEventSourceMapping
- listTags
- tagResource
- untagResource
- publishVersion
- listVersions
- createAlias
- deleteAlias
- getAlias
- listAliases
8.8. 例 リンクのコピーリンクがクリップボードにコピーされました!
8.8.1. producer の例 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントがどのように機能するかを完全に理解するには、これらの 統合テスト を参照してください。
8.8.2. producer の例 リンクのコピーリンクがクリップボードにコピーされました!
- CreateFunction: AWS Lambda で関数を作成します
from("direct:createFunction").to("aws2-lambda://GetHelloWithName?operation=createFunction").to("mock:result");
そして送ることで
template.send("direct:createFunction", ExchangePattern.InOut, new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
exchange.getIn().setHeader(Lambda2Constants.RUNTIME, "nodejs6.10");
exchange.getIn().setHeader(Lambda2Constants.HANDLER, "GetHelloWithName.handler");
exchange.getIn().setHeader(Lambda2Constants.DESCRIPTION, "Hello with node.js on Lambda");
exchange.getIn().setHeader(Lambda2Constants.ROLE,
"arn:aws:iam::643534317684:role/lambda-execution-role");
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(
classLoader
.getResource("org/apache/camel/component/aws2/lambda/function/node/GetHelloWithName.zip")
.getFile());
FileInputStream inputStream = new FileInputStream(file);
exchange.getIn().setBody(inputStream);
}
});
8.9. POJO を本体として使用する リンクのコピーリンクがクリップボードにコピーされました!
複数のオプションがあるため、AWS リクエストの作成が複雑になる場合があります。POJO を本体として使用する可能性を紹介します。AWS Lambda には、送信できる複数の操作があります。Get Function リクエストの例として、次のようなことができます。
from("direct:getFunction")
.setBody(GetFunctionRequest.builder().functionName("test").build())
.to("aws2-lambda://GetHelloWithName?awsLambdaClient=#awsLambdaClient&operation=getFunction&pojoRequest=true")
このようにして、この操作に特に関連するヘッダーやオプションを渡す必要なく、リクエストを直接渡します。
8.10. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Maven ユーザーは、以下の依存関係を pom.xml に追加する必要があります。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws2-lambda</artifactId>
<version>${camel-version}</version>
</dependency>
{camel-version} は Camel の実際のバージョンに置き換える必要があります。
8.11. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 17 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.aws2-lambda.access-key | Amazon AWS Access Key。 | String | |
| camel.component.aws2-lambda.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.aws2-lambda.aws-lambda-client | 既存の設定済みの AwsLambdaClient をクライアントとして使用するには。オプションは、software.amazon.awssdk.services.lambda.LambdaClient タイプです。 | LambdaClient | |
| camel.component.aws2-lambda.configuration | コンポーネントの設定。オプションは org.apache.camel.component.aws2.lambda.Lambda2Configuration タイプです。 | Lambda2 設定 | |
| camel.component.aws2-lambda.enabled | aws2-lambda コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.aws2-lambda.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.aws2-lambda.operation | 実行する操作。listFunctions、getFunction、createFunction、deleteFunction、または invokeFunction のいずれかです。 | Lambda2Operations | |
| camel.component.aws2-lambda.override-endpoint | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | Boolean |
| camel.component.aws2-lambda.pojo-request | POJO リクエストをボディーとして使用するかどうか。 | false | Boolean |
| camel.component.aws2-lambda.proxy-host | Lambda クライアントをインスタンス化するときにプロキシーホストを定義します。 | String | |
| camel.component.aws2-lambda.proxy-port | Lambda クライアントをインスタンス化するときにプロキシーポートを定義します。 | Integer | |
| camel.component.aws2-lambda.proxy-protocol | Lambda クライアントをインスタンス化するときにプロキシープロトコルを定義します。 | Protocol | |
| camel.component.aws2-lambda.region | Lambda クライアントが動作する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| camel.component.aws2-lambda.secret-key | Amazon AWS Secret Key。 | String | |
| camel.component.aws2-lambda.trust-all-certificates | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | Boolean |
| camel.component.aws2-lambda.uri-endpoint-override | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| camel.component.aws2-lambda.use-default-credentials-provider | Lambda クライアントがデフォルトの認証情報プロバイダーを介して認証情報をロードすることを期待するか、静的認証情報が渡されることを期待するかを設定します。 | false | Boolean |
第9章 AWS S3 ストレージサービス リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
AWS2 S3 コンポーネントは、Amazon の S3 サービスとの間でのオブジェクトの保存と取得をサポートしています。
前提条件
有効な Amazon Web Services 開発者アカウントを持っていて、Amazon S3 を使用するためにサインアップしている必要がある。詳細は、https://aws.amazon.com/s3 [Amazon S3] のリンクを参照してください。
9.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で aws2-s3 を使用する場合は、自動設定をサポートするために次の Maven 依存関係を pom.xml に追加します。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-aws2-s3-starter</artifactId>
</dependency>
9.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
aws2-s3://bucketNameOrArn[?options]
バケットがまだ存在しない場合は作成されます。URI には、次の形式でクエリーオプションを追加できます。
options=value&option2=value&…
9.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
9.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
9.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
9.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
AWS S3 Storage Service コンポーネントは、以下に示す 50 のオプションをサポートしています。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| amazonS3Client (common) | Autowired レジストリーの com.amazonaws.services.s3.AmazonS3 への参照。 | S3Client | |
| amazonS3Presigner (common) | Autowired リクエストの S3 Presigner。主に createDownloadLink 操作で使用されます。 | S3Presigner | |
| autoCreateBucket (common) | S3 バケット bucketName の自動作成の設定。moveAfterRead オプションが有効になっている場合も適用され、destinationBucket が存在しない場合は作成されます。 | false | boolean |
| configuration (common) | コンポーネントの設定。 | AWS2S3 設定 | |
| overrideEndpoint (common) | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | boolean |
| pojoRequest (common) | POJO リクエストをボディーとして使用するかどうか。 | false | boolean |
| policy (common) | com.amazonaws.services.s3.AmazonS3#setBucketPolicy() メソッドに設定されるこのキューのポリシー。 | String | |
| proxyHost (common) | SQS クライアントをインスタンス化するときにプロキシーホストを定義します。 | String | |
| proxyPort (common) | クライアント定義内で使用されるプロキシーポートを指定します。 | Integer | |
| proxyProtocol (common) | S3 クライアントをインスタンス化するときにプロキシープロトコルを定義します。 列挙値:
| HTTPS | Protocol |
| region (common) | S3 クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| trustAllCertificates (common) | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | boolean |
| uriEndpointOverride (common) | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| useDefaultCredentialsProvider (common) | デフォルトのクレデンシャルプロバイダー経由でクレデンシャルをロードすること、または静的クレデンシャルが渡されることを S3 クライアントは想定すべきかどうかを設定します。 | false | boolean |
| customerAlgorithm (common (advanced)) | CustomerKey が有効になっている場合に使用するカスタマーアルゴリズムを定義します。 | String | |
| customerKeyId (common (advanced)) | CustomerKey が有効になっている場合に使用するカスタマーキーの ID を定義します。 | String | |
| customerKeyMD5 (common (advanced)) | CustomerKey が有効になっている場合に使用するカスタマーキーの MD5 を定義します。 | String | |
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| deleteAfterRead (consumer) | 取得後に S3 からオブジェクトを削除します。削除は、エクスチェンジがコミットされた場合にのみ実行されます。ロールバックが発生すると、オブジェクトは削除されません。このオプションが false の場合、同じオブジェクトがポーリングで繰り返し取得されます。そのため、ルートで Idempotent Consumer EIP を使用して重複を除外する必要があります。AWS2S3Constants#BUCKET_NAME および AWS2S3Constants#KEY ヘッダーを使用してフィルターすることも、AWS2S3Constants#KEY ヘッダーのみを使用してフィルターすることもできます。 | true | boolean |
| delimiter (consumer) | 対象のオブジェクトのみを消費するために com.amazonaws.services.s3.model.ListObjectsRequest で使用される区切り文字。 | String | |
| destinationBucket (consumer) | moveAfterRead が true に設定されている場合にオブジェクトを移動する必要がある宛先バケットを定義します。 | String | |
| destinationBucketPrefix (consumer) | オブジェクトを移動する必要があり、moveAfterRead が true に設定されている場合に使用する宛先バケット接頭辞を定義します。 | String | |
| destinationBucketSuffix (consumer) | オブジェクトを移動する必要があり、moveAfterRead が true に設定されている場合に使用する宛先バケット接尾辞を定義します。 | String | |
| doneFileName (consumer) | 指定すると、Camel は完了したファイルが存在する場合にのみファイルを消費します。 | String | |
| fileName (consumer) | 指定のファイル名を持つバケットからオブジェクトを取得します。 | String | |
| ignoreBody (consumer) | true の場合、S3 オブジェクトボディは完全に無視されます。false に設定されている場合、S3 オブジェクトはボディに配置されます。これを true に設定すると、includeBody オプションで定義された動作がオーバーライドされます。 | false | boolean |
| includeBody (consumer) | true の場合、S3Object エクスチェンジが消費され、ボディーに配置され、閉じられます。false の場合、S3Object ストリームは raw でボディーに配置され、ヘッダーは S3 オブジェクトメタデータで設定されます。このオプションは、autocloseBody オプションと密接に関係します。S3Object ストリームが消費されるため includeBody を true に設定した場合、includeBody が false であっても閉じられるため、S3Object ストリームを閉じるのは呼び出し側が判断します。しかし、includeBody が false の場合に autocloseBody を true に設定すると、エクスチェンジの完了時に S3Object ストリームを自動的に閉じるようにスケジュールされます。 | true | boolean |
| includeFolders (consumer) | true の場合、フォルダー/ディレクトリーが消費されます。false の場合は無視され、エクスチェンジは作成されません。 | true | boolean |
| moveAfterRead (consumer) | オブジェクトの取得後に S3 バケットから別のバケットに移動します。操作を実行するには、destinationBucket オプションを設定する必要があります。copy bucket 操作は、エクスチェンジがコミットされた場合にのみ実行されます。ロールバックが発生した場合、オブジェクトは移動しません。 | false | boolean |
| prefix (consumer) | 対象のオブジェクトのみを消費するために com.amazonaws.services.s3.model.ListObjectsRequest で使用される接頭辞。 | String | |
| autocloseBody (consumer (advanced)) | このオプションが true で、includeBody が false の場合、エクスチェンジの完了時に S3Object.close() メソッドが呼び出されます。このオプションは includeBody オプションと密接に関係しています。includeBody を false に設定し、autocloseBody を false に設定した場合、S3Object ストリームを閉じるのは呼び出し側が判断します。autocloseBody を true に設定すると、S3Object ストリームが自動的に閉じられます。 | true | boolean |
| batchMessageNumber (producer) | ストリーミングのアップロードモードでバッチを作成するメッセージの数 | 10 | int |
| batchSize (producer) | ストリーミングのアップロードモードのバッチサイズ (バイト単位) | 1000000 | int |
| deleteAfterWrite (producer) | S3 ファイルのアップロード後にファイルオブジェクトを削除します。 | false | boolean |
| keyName (producer) | endpoint パラメーター経由でバケットの要素のキー名を設定します。 | String | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| multiPartUpload (producer) | true の場合、Camel はマルチパート形式のファイルをアップロードし、パートサイズは partSize のオプションによって決定されます。 | false | boolean |
| namingStrategy (producer) | ストリーミングのアップロードモードで使用する命名ストラテジー。 列挙値:
| progressive | AWSS3NamingStrategyEnum |
| operation (producer) | ユーザーがアップロードだけをしたくない場合に行う操作。 列挙値:
| AWS2S3Operations | |
| partSize (producer) | マルチパートのアップロードで使用される partSize を設定します。デフォルトのサイズは 25M です。 | 26214400 | long |
| restartingPolicy (producer) | ストリーミングのアップロードモードで使用する再起動ポリシー。 列挙値:
| override | AWSS3RestartingPolicyEnum |
| storageClass (producer) | com.amazonaws.services.s3.model.PutObjectRequest リクエストに設定するストレージクラス。 | String | |
| streamingUploadMode (producer) | ストリームモードが true の場合、バケットへのアップロードはストリーミングで行われます。 | false | boolean |
| streamingUploadTimeout (producer) | ストリーミングアップロードモードが true の場合、このオプションはタイムアウトを設定してアップロードを完了します。 | long | |
| awsKMSKeyId (producer (advanced)) | KMS が有効になっている場合に使用する KMS キーの ID を定義します。 | String | |
| useAwsKMS (producer (advanced)) | KMS を使用する必要があるかどうかを定義します。 | false | boolean |
| useCustomerKey (producer (advanced)) | カスタマーキーを使用する必要があるかどうかを定義します。 | false | boolean |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| accessKey (security) | Amazon AWS Access Key。 | String | |
| secretKey (security) | Amazon AWS Secret Key。 | String |
9.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
AWS S3 Storage Service エンドポイントは、URI 構文を使用して設定されます。
aws2-s3://bucketNameOrArn
パスおよびクエリーパラメーターを使用します。
9.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| bucketNameOrArn (common) | 必須 のバケット名または ARN。 | String |
9.5.2. クエリーパラメーター (68 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| amazonS3Client (common) | Autowired レジストリーの com.amazonaws.services.s3.AmazonS3 への参照。 | S3Client | |
| amazonS3Presigner (common) | Autowired リクエストの S3 Presigner。主に createDownloadLink 操作で使用されます。 | S3Presigner | |
| autoCreateBucket (common) | S3 バケット bucketName の自動作成の設定。moveAfterRead オプションが有効になっている場合も適用され、destinationBucket が存在しない場合は作成されます。 | false | boolean |
| overrideEndpoint (common) | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | boolean |
| pojoRequest (common) | POJO リクエストをボディーとして使用するかどうか。 | false | boolean |
| policy (common) | com.amazonaws.services.s3.AmazonS3#setBucketPolicy() メソッドに設定されるこのキューのポリシー。 | String | |
| proxyHost (common) | SQS クライアントをインスタンス化するときにプロキシーホストを定義します。 | String | |
| proxyPort (common) | クライアント定義内で使用されるプロキシーポートを指定します。 | Integer | |
| proxyProtocol (common) | S3 クライアントをインスタンス化するときにプロキシープロトコルを定義します。 列挙値:
| HTTPS | Protocol |
| region (common) | S3 クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| trustAllCertificates (common) | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | boolean |
| uriEndpointOverride (common) | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| useDefaultCredentialsProvider (common) | デフォルトのクレデンシャルプロバイダー経由でクレデンシャルをロードすること、または静的クレデンシャルが渡されることを S3 クライアントは想定すべきかどうかを設定します。 | false | boolean |
| customerAlgorithm (common (advanced)) | CustomerKey が有効になっている場合に使用するカスタマーアルゴリズムを定義します。 | String | |
| customerKeyId (common (advanced)) | CustomerKey が有効になっている場合に使用するカスタマーキーの ID を定義します。 | String | |
| customerKeyMD5 (common (advanced)) | CustomerKey が有効になっている場合に使用するカスタマーキーの MD5 を定義します。 | String | |
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| deleteAfterRead (consumer) | 取得後に S3 からオブジェクトを削除します。削除は、エクスチェンジがコミットされた場合にのみ実行されます。ロールバックが発生すると、オブジェクトは削除されません。このオプションが false の場合、同じオブジェクトがポーリングで繰り返し取得されます。そのため、ルートで Idempotent Consumer EIP を使用して重複を除外する必要があります。AWS2S3Constants#BUCKET_NAME および AWS2S3Constants#KEY ヘッダーを使用してフィルターすることも、AWS2S3Constants#KEY ヘッダーのみを使用してフィルターすることもできます。 | true | boolean |
| delimiter (consumer) | 対象のオブジェクトのみを消費するために com.amazonaws.services.s3.model.ListObjectsRequest で使用される区切り文字。 | String | |
| destinationBucket (consumer) | moveAfterRead が true に設定されている場合にオブジェクトを移動する必要がある宛先バケットを定義します。 | String | |
| destinationBucketPrefix (consumer) | オブジェクトを移動する必要があり、moveAfterRead が true に設定されている場合に使用する宛先バケット接頭辞を定義します。 | String | |
| destinationBucketSuffix (consumer) | オブジェクトを移動する必要があり、moveAfterRead が true に設定されている場合に使用する宛先バケット接尾辞を定義します。 | String | |
| doneFileName (consumer) | 指定すると、Camel は完了したファイルが存在する場合にのみファイルを消費します。 | String | |
| fileName (consumer) | 指定のファイル名を持つバケットからオブジェクトを取得します。 | String | |
| ignoreBody (consumer) | true の場合、S3 オブジェクトボディは完全に無視されます。false に設定されている場合、S3 オブジェクトはボディに配置されます。これを true に設定すると、includeBody オプションで定義された動作がオーバーライドされます。 | false | boolean |
| includeBody (consumer) | true の場合、S3Object エクスチェンジが消費され、ボディーに配置され、閉じられます。false の場合、S3Object ストリームは raw でボディーに配置され、ヘッダーは S3 オブジェクトメタデータで設定されます。このオプションは、autocloseBody オプションと密接に関係します。S3Object ストリームが消費されるため includeBody を true に設定した場合、includeBody が false であっても閉じられるため、S3Object ストリームを閉じるのは呼び出し側が判断します。しかし、includeBody が false の場合に autocloseBody を true に設定すると、エクスチェンジの完了時に S3Object ストリームを自動的に閉じるようにスケジュールされます。 | true | boolean |
| includeFolders (consumer) | true の場合、フォルダー/ディレクトリーが消費されます。false の場合は無視され、エクスチェンジは作成されません。 | true | boolean |
| maxConnections (consumer) | S3 クライアント設定の maxConnections パラメーターを設定します。 | 60 | int |
| maxMessagesPerPoll (consumer) | 各ポーリングのポーリング制限としてメッセージの最大数を取得します。各ポーリングのポーリング制限としてメッセージの最大数を取得します。デフォルト値は 10 です。0 または負の値を使用すると、無制限として設定されます。 | 10 | int |
| moveAfterRead (consumer) | オブジェクトの取得後に S3 バケットから別のバケットに移動します。操作を実行するには、destinationBucket オプションを設定する必要があります。copy bucket 操作は、エクスチェンジがコミットされた場合にのみ実行されます。ロールバックが発生した場合、オブジェクトは移動しません。 | false | boolean |
| prefix (consumer) | 対象のオブジェクトのみを消費するために com.amazonaws.services.s3.model.ListObjectsRequest で使用される接頭辞。 | String | |
| sendEmptyMessageWhenIdle (consumer) | ポーリング consumer がファイルをポーリングしなかった場合、このオプションを有効にして、代わりに空のメッセージ (ボディーなし) を送信できます。 | false | boolean |
| autocloseBody (consumer (advanced)) | このオプションが true で、includeBody が false の場合、エクスチェンジの完了時に S3Object.close() メソッドが呼び出されます。このオプションは includeBody オプションと密接に関係しています。includeBody を false に設定し、autocloseBody を false に設定した場合、S3Object ストリームを閉じるのは呼び出し側が判断します。autocloseBody を true に設定すると、S3Object ストリームが自動的に閉じられます。 | true | boolean |
| exceptionHandler (consumer (advanced)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (advanced)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| pollStrategy (consumer (advanced)) | プラグ可能な org.apache.camel.PollingConsumerPollingStrategy を使用すると、エクスチェンジが作成され、Camel でルーティングされる前に、通常はポーリング操作中に発生するエラー処理を制御するカスタム実装が提供できます。 | PollingConsumerPollStrategy | |
| batchMessageNumber (producer) | ストリーミングのアップロードモードでバッチを作成するメッセージの数 | 10 | int |
| batchSize (producer) | ストリーミングのアップロードモードのバッチサイズ (バイト単位) | 1000000 | int |
| deleteAfterWrite (producer) | S3 ファイルのアップロード後にファイルオブジェクトを削除します。 | false | boolean |
| keyName (producer) | endpoint パラメーター経由でバケットの要素のキー名を設定します。 | String | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| multiPartUpload (producer) | true の場合、Camel はマルチパート形式のファイルをアップロードし、パートサイズは partSize のオプションによって決定されます。 | false | boolean |
| namingStrategy (producer) | ストリーミングのアップロードモードで使用する命名ストラテジー。 列挙値:
| progressive | AWSS3NamingStrategyEnum |
| operation (producer) | ユーザーがアップロードだけをしたくない場合に行う操作。 列挙値:
| AWS2S3Operations | |
| partSize (producer) | マルチパートのアップロードで使用される partSize を設定します。デフォルトのサイズは 25M です。 | 26214400 | long |
| restartingPolicy (producer) | ストリーミングのアップロードモードで使用する再起動ポリシー。 列挙値:
| override | AWSS3RestartingPolicyEnum |
| storageClass (producer) | com.amazonaws.services.s3.model.PutObjectRequest リクエストに設定するストレージクラス。 | String | |
| streamingUploadMode (producer) | ストリームモードが true の場合、バケットへのアップロードはストリーミングで行われます。 | false | boolean |
| streamingUploadTimeout (producer) | ストリーミングアップロードモードが true の場合、このオプションはタイムアウトを設定してアップロードを完了します。 | long | |
| awsKMSKeyId (producer (advanced)) | KMS が有効になっている場合に使用する KMS キーの ID を定義します。 | String | |
| useAwsKMS (producer (advanced)) | KMS を使用する必要があるかどうかを定義します。 | false | boolean |
| useCustomerKey (producer (advanced)) | カスタマーキーを使用する必要があるかどうかを定義します。 | false | boolean |
| backoffErrorThreshold (scheduler) | backoffMultipler が開始する前に発生する必要がある後続のエラーポーリング (エラーによって失敗した) の数。 | int | |
| backoffIdleThreshold (scheduler) | backoffMultipler が開始する前に発生する必要がある後続のアイドルポーリングの数。 | int | |
| backoffMultiplier (scheduler) | 後続のアイドル状態/エラーが連続して発生した場合に、スケジュールされたポーリング consumer のバックオフを許可します。乗数は、実際に次の試行が行われる前にスキップされるポーリングの数です。このオプションが使用されている場合は、backoffIdleThreshold や backoffErrorThreshold も設定する必要があります。 | int | |
| delay (scheduler) | 次のポーリングまでの時間 (ミリ秒単位)。 | 500 | long |
| greedy (scheduler) | greedy が有効で、以前の実行が 1 つ以上のメッセージをポーリングした場合、ScheduledPollConsumer は即座に再度実行されます。 | false | boolean |
| initialDelay (scheduler) | 最初のポーリングが開始されるまでの時間 (ミリ秒単位)。 | 1000 | long |
| repeatCount (scheduler) | 実行の最大数を指定します。そのため、これを 1 に設定するとスケジューラーは 1 度だけ実行されます。これを 5 に設定した場合、5 回だけ実行されます。0 または負の値を設定すると、無制限に実行されます。 | 0 | long |
| runLoggingLevel (scheduler) | consumer はポーリング時に開始/完了のログ行を記録します。このオプションを使用すると、ログレベルを設定できます。 列挙値:
| TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | consumer に使用するカスタム/共有スレッドプールを設定できます。デフォルトでは、各 consumer に独自の単一スレッドのスレッドプールがあります。 | ScheduledExecutorService | |
| scheduler (scheduler) | camel-spring または camel-quartz コンポーネントから cron スケジューラーを使用します。スケジューラーにビルドされた値 spring または quartz を使用。 | none | オブジェクト |
| schedulerProperties (scheduler) | カスタムスケジューラーまたは Quartz や Spring ベースのスケジューラーを使用する場合に、追加のプロパティーを設定します。 | マップ | |
| startScheduler (scheduler) | スケジューラーを自動起動するかどうか。 | true | boolean |
| timeUnit (scheduler) | initialDelay および delay オプションの時間単位。 列挙値:
| MILLISECONDS | TimeUnit |
| useFixedDelay (scheduler) | 固定遅延または固定レートを使用するかどうかを制御します。詳細は、JDK の ScheduledExecutorService を参照してください。 | true | boolean |
| accessKey (security) | Amazon AWS Access Key。 | String | |
| secretKey (security) | Amazon AWS Secret Key。 | String |
必須の S3 コンポーネントオプション
Amazon の S3 にアクセスするには、レジストリーに amazonS3Client を指定するか、accessKey と secretKey を指定する必要があります。
9.6. バッチ consumer リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントは、Batch Consumer を実装します。
これにより、たとえば、このバッチに存在するメッセージの数を知ることができ、たとえば、Aggregator にこの数のメッセージを集約させることができます。
9.7. 使用方法 リンクのコピーリンクがクリップボードにコピーされました!
たとえば、バケット helloBucket からファイル hello.txt を読み取るには、次のスニペットを使用します。
from("aws2-s3://helloBucket?accessKey=yourAccessKey&secretKey=yourSecretKey&prefix=hello.txt")
.to("file:/var/downloaded");
9.7.1. S3 producer によって評価されるメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 型 | 説明 |
|---|---|---|
|
|
| このオブジェクトが保存されるバケット名、または現在の操作に使用されるバケット名 |
|
|
| 現在の操作に使用されるバケット宛先名 |
|
|
| このオブジェクトのコンテンツの長さ。 |
|
|
| このオブジェクトのコンテンツタイプ。 |
|
|
| このオブジェクトのコンテンツコントロール。 |
|
|
| このオブジェクトのコンテンツの配置。 |
|
|
| このオブジェクトのコンテンツエンコーディング。 |
|
|
| このオブジェクトの md5 チェックサム。 |
|
|
| 現在の操作に使用される宛先キー |
|
|
| このオブジェクトが格納されるキー、または現在の操作に使用されるキー |
|
|
| このオブジェクトの最終変更のタイムスタンプ。 |
|
|
| 実行する操作。許可されている値は、copyObject、deleteObject、listBuckets、deleteBucket、listObjects です。 |
|
|
| このオブジェクトのストレージクラス。 |
|
|
|
オブジェクトに適用されるデフォルトの ACL。許可されている値は、 |
|
|
|
適切に設定された Amazon S3 アクセスコントロールリストオブジェクト。詳細は、 |
|
| String | AWS が管理するキーを使用してオブジェクトを暗号化するときに、サーバー側の暗号化アルゴリズムを設定します。たとえば、AES256 を使用します。 |
|
|
| 現在の操作から格納または返されるオブジェクトのバージョン ID |
|
|
| S3 のオブジェクトと共に保存されるメタデータのマップ。メタデータの詳細。 |
9.7.2. S3 producer によって設定されたメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 型 | 説明 |
|---|---|---|
|
|
| 新しくアップロードされたオブジェクトの ETag 値。 |
|
|
| 新しくアップロードされたオブジェクトの オプション のバージョン ID。 |
9.7.3. S3 consumer によって設定されたメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 型 | 説明 |
|---|---|---|
|
|
| このオブジェクトが格納されるキー。 |
|
|
| このオブジェクトが含まれるバケットの名前。 |
|
|
| RFC 1864 に従って、関連付けられたオブジェクトの 16 進数でエンコードされた 128 ビット MD5 ダイジェスト。このデータは、呼び出し元によって受信されたデータが Amazon S3 によって送信されたデータと同じであることを確認するための整合性チェックとして使用されます。 |
|
|
| Last-Modified ヘッダーの値。Amazon S3 が関連付けられたオブジェクトへの変更を最後に記録した日時を示します。 |
|
|
| 関連する Amazon S3 オブジェクトのバージョン ID (利用可能な場合)。バージョン ID は、オブジェクトのバージョニングが有効になっている Amazon S3 バケットにオブジェクトがアップロードされた場合にのみ、オブジェクトに割り当てられます。 |
|
|
| 関連付けられたオブジェクトに格納されているコンテンツのタイプを示す Content-Type HTTP ヘッダー。このヘッダーの値は、標準の MIME タイプです。 |
|
|
| RFC 1864 に従って、関連付けられたオブジェクト (ヘッダーを含まないコンテンツ) の base64 でエンコードされた 128 ビット MD5 ダイジェスト。このデータは、Amazon S3 が受信したデータが発信者が送信したデータと同じであることを確認するためのメッセージ整合性チェックとして使用されます。 |
|
|
| 関連付けられたオブジェクトのサイズをバイト単位で示す Content-Length HTTP ヘッダー。 |
|
|
| オブジェクトに適用されたコンテンツエンコーディングと、Content-Type フィールドによって参照されるメディアタイプを取得するために適用する必要があるデコードメカニズムを指定する、オプション の Content-Encoding HTTP ヘッダー。 |
|
|
| オプション の Content-Disposition HTTP ヘッダー。保存するオブジェクトの推奨ファイル名などの表示情報を指定します。 |
|
|
| ユーザーが HTTP 要求/応答チェーンに沿ってキャッシュ動作を指定できるようにする、オプション の Cache-Control HTTP ヘッダー。 |
|
| String | AWS が管理するキーを使用してオブジェクトを暗号化するときのサーバー側の暗号化アルゴリズム。 |
|
|
| S3 のオブジェクトとともに保存されたメタデータのマップ。メタデータの詳細。 |
9.7.4. S3 producer の操作 リンクのコピーリンクがクリップボードにコピーされました!
Camel-AWS2-S3 コンポーネントは、producer 側で次の操作を提供します。
- copyObject
- deleteObject
- listBuckets
- deleteBucket
- listObjects
- getObject (これは S3Object インスタンスを返します)
- getObjectRange (これは S3Object インスタンスを返します)
- createDownloadLink
操作を明示的に指定しない場合、producer は次のことを行います。- 単一ファイルのアップロード - multiPartUpload オプションが有効な場合はマルチパートアップロード。
9.7.5. 高度な AmazonS3 設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel アプリケーションがファイアウォールの背後で実行されている場合、または S3Client インスタンス設定をより詳細に制御する必要がある場合は、独自のインスタンスを作成して、Camel aws2-s3 コンポーネント設定で参照できます。
from("aws2-s3://MyBucket?amazonS3Client=#client&delay=5000&maxMessagesPerPoll=5")
.to("mock:result");
9.7.6. S3 コンポーネントで KMS を使用する リンクのコピーリンクがクリップボードにコピーされました!
AWS インフラストラクチャーを使用して AWS KMS を使用してデータを暗号化/復号化するには、次の例のように 2.21.x で導入されたオプションを使用できます。
from("file:tmp/test?fileName=test.txt")
.setHeader(S3Constants.KEY, constant("testFile"))
.to("aws2-s3://mybucket?amazonS3Client=#client&useAwsKMS=true&awsKMSKeyId=3f0637ad-296a-3dfe-a796-e60654fb128c");
このようにして、KMS キー 3f0637ad-296a-3dfe-a796-e60654fb128c を使用してファイル test.txt を暗号化するよう S3 に依頼します。このファイルのダウンロードを要求すると、ダウンロードの直前に復号化が行われます。
9.7.7. 静的認証情報とデフォルトの認証情報プロバイダーの比較 リンクのコピーリンクがクリップボードにコピーされました!
useDefaultCredentialsProvider オプションを指定し、これを true に設定することにより、明示的な静的認証情報の使用を回避することが可能です。
- Java システムプロパティー - aws.accessKeyId および aws.secretKey
- 環境変数: AWS_ACCESS_KEY_ID および AWS_SECRET_ACCESS_KEY。
- AWS STS の Web ID トークン。
- 共有認証情報および設定ファイル。
- Amazon ECS コンテナー認証情報 - 環境変数 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI が設定されている場合は、Amazon ECS からロードされます。
- Amazon EC2 インスタンスプロファイルの認証情報。
これに関する詳細情報は、AWS 認証情報のドキュメント を参照してください。
9.7.8. S3 Producer 操作例 リンクのコピーリンクがクリップボードにコピーされました!
- 単一のアップロード: 本文の内容に基づいてファイルを S3 にアップロードします。
from("direct:start").process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
exchange.getIn().setHeader(S3Constants.KEY, "camel.txt");
exchange.getIn().setBody("Camel rocks!");
}
})
.to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client")
.to("mock:result");
この操作により、コンテンツ "Camel rocks!" を含むファイル camel.txt が mycamelbucket バケット内にアップロードされます。
- マルチパートアップロード: 本文のコンテンツに基づいて S3 へのファイルのマルチパートアップロードを実行します。
from("direct:start").process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
exchange.getIn().setHeader(AWS2S3Constants.KEY, "empty.txt");
exchange.getIn().setBody(new File("src/empty.txt"));
}
})
.to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&multiPartUpload=true&autoCreateBucket=true&partSize=1048576")
.to("mock:result");
この操作は、mycamelbucket バケット内のファイル src/empty.txt のコンテンツに基づいて、ファイル empty.txt のマルチパートアップロードを実行します。
- CopyObject: あるバケットから別のバケットにオブジェクトをコピーします
from("direct:start").process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
exchange.getIn().setHeader(S3Constants.BUCKET_DESTINATION_NAME, "camelDestinationBucket");
exchange.getIn().setHeader(S3Constants.KEY, "camelKey");
exchange.getIn().setHeader(S3Constants.DESTINATION_KEY, "camelDestinationKey");
}
})
.to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=copyObject")
.to("mock:result");
この操作は、ヘッダー camelDestinationKey で表された名前を持つオブジェクトを、バケット mycamelbucket から camelDestinationBucket バケットにコピーします。
- DeleteObject: バケットからオブジェクトを削除します
from("direct:start").process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
exchange.getIn().setHeader(S3Constants.KEY, "camelKey");
}
})
.to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=deleteObject")
.to("mock:result");
この操作により、オブジェクト camelKey がバケット mycamelbucket から削除されます。
- ListBuckets: このリージョン内のこのアカウントのバケットを一覧表示します
from("direct:start")
.to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=listBuckets")
.to("mock:result");
この操作は、このアカウントのバケットを一覧表示します
- DeleteBucket: URI パラメーターまたはヘッダーとして指定されたバケットを削除します
from("direct:start")
.to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=deleteBucket")
.to("mock:result");
この操作により、バケット mycamelbucket が削除されます
- ListObjects: 特定のバケット内のこのオペレーションリストオブジェクト
from("direct:start")
.to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=listObjects")
.to("mock:result");
この操作は、mycamelbucket バケット内のオブジェクトを一覧表示します
- GetObject: 特定のバケット内の単一のオブジェクトを取得します
from("direct:start").process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
exchange.getIn().setHeader(S3Constants.KEY, "camelKey");
}
})
.to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=getObject")
.to("mock:result");
このオペレーションは、mycamelbucket バケットの camelKey オブジェクトに関連する S3Object インスタンスを返します。
- GetObjectRange: 特定のバケット内の単一のオブジェクト範囲を取得します
from("direct:start").process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
exchange.getIn().setHeader(S3Constants.KEY, "camelKey");
exchange.getIn().setHeader(S3Constants.RANGE_START, "0");
exchange.getIn().setHeader(S3Constants.RANGE_END, "9");
}
})
.to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=getObjectRange")
.to("mock:result");
このオペレーションは、0 から 9 までのバイトを含む、mycamelbucket バケット内の camelKey オブジェクトに関連する S3Object インスタンスを返します。
- CreateDownloadLink: S3 Presigner を介してダウンロードリンクを返します。
from("direct:start").process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
exchange.getIn().setHeader(S3Constants.KEY, "camelKey");
}
})
.to("aws2-s3://mycamelbucket?accessKey=xxx&secretKey=yyy®ion=region&operation=createDownloadLink")
.to("mock:result");
この操作は、バケット mycamelbucket およびリージョン region 内のファイル camel-key のダウンロードリンク URL を返します。
9.8. ストリーミングアップロードモード リンクのコピーリンクがクリップボードにコピーされました!
ストリームモードを有効にすると、ユーザーはマルチパートアップロードを利用することで、データの次元を事前に知らなくても S3 にデータをアップロードできます。アップロードは、batchSize が完了したか、batchMessageNumber に達したときに完了します。次の 2 つの命名戦略が考えられます。
progressive
プログレッシブ戦略では、各ファイルには keyName オプションとプログレッシブカウンターで構成される名前が付けられ、最終的にはファイル拡張子 (存在する場合) が付けられます。
ランダム
ランダム戦略では、keyName の後に UUID が追加され、最終的にファイル拡張子が追加されます。
たとえば、以下のようになります。
from(kafka("topic1").brokers("localhost:9092"))
.log("Kafka Message is: ${body}")
.to(aws2S3("camel-bucket").streamingUploadMode(true).batchMessageNumber(25).namingStrategy(AWS2S3EndpointBuilderFactory.AWSS3NamingStrategyEnum.progressive).keyName("{{kafkaTopic1}}/{{kafkaTopic1}}.txt"));
from(kafka("topic2").brokers("localhost:9092"))
.log("Kafka Message is: ${body}")
.to(aws2S3("camel-bucket").streamingUploadMode(true).batchMessageNumber(25).namingStrategy(AWS2S3EndpointBuilderFactory.AWSS3NamingStrategyEnum.progressive).keyName("{{kafkaTopic2}}/{{kafkaTopic2}}.txt"));
バッチのデフォルトサイズは 1 Mb ですが、必要に応じて調整できます。
producer ルートを停止すると、producer はバッファリングされた残りのメッセージをフラッシュし、アップロードを完了します。
ストリーミングアップロードでは、producer を離れたところから再開できます。この機能は、プログレッシブ命名戦略を使用する場合にのみ重要であることに注意してください。
restartingPolicy を lastPart に設定することで、ファイルとコンテンツのアップロードを producer が残した最後のパーツ番号から再開します。
例
- プログレッシブ命名戦略でルートを開始し、keyname は camel.txt に等しく、batchMessageNumber は 20 に等しく、restartingPolicy は lastPart に等しい - 70 個のメッセージを送信します。
- ルートを停止
S3 バケットには、次の 4 つのファイルが表示されます: * camel.txt
- camel-1.txt
- camel-2.txt
camel-3.txt
最初の 3 つには 20 件のメッセージが含まれますが、最後の 1 つには 10 件しかありません。
- ルートを再開します。
- メッセージを 25 回送信します。
- ルートを停止します。
- バケットには他に 2 つのファイルがあります。camel-5.txt と camel-6.txt です。最初のファイルには 20 件のメッセージがあり、2 つ目のファイルには 5 件のメッセージがあります。
- どうぞ
ランダムな命名戦略を使用する場合、これは必要ありません。
反対に、オーバーライドの restartingPolicy を指定できます。その場合、バケットで以前に書いたものを (その特定の keyName に対して) オーバーライドできます。
ストリーミングアップロードモードでは、考慮される唯一の keyName オプションは endpoint オプションです。ヘッダーを使用すると NPE が出力されますが、これは設計によるものです。ヘッダーを設定すると、各交換でファイル名が変更される可能性があり、これはストリーミングアップロード producer の目的に反します。keyName は固定で静的である必要があります。選択した命名戦略によって、残りの作業が行われます。
もう 1 つの可能性は、batchMessageNumber および batchSize オプションで streamingUploadTimeout を指定することです。このオプションを使用すると、ユーザーは一定の時間が経過した後にファイルのアップロードを完了することができます。このように、アップロードの完了は、タイムアウト、メッセージ数、およびバッチサイズの 3 つの層で渡されます。
たとえば、以下のようになります。
from(kafka("topic1").brokers("localhost:9092"))
.log("Kafka Message is: ${body}")
.to(aws2S3("camel-bucket").streamingUploadMode(true).batchMessageNumber(25).streamingUploadTimeout(10000).namingStrategy(AWS2S3EndpointBuilderFactory.AWSS3NamingStrategyEnum.progressive).keyName("{{kafkaTopic1}}/{{kafkaTopic1}}.txt"));
この場合、アップロードは 10 秒後に完了します。
9.9. バケットの自動作成 リンクのコピーリンクがクリップボードにコピーされました!
オプション autoCreateBucket を使用すると、S3 バケットが存在しない場合に、ユーザーは S3 バケットの自動作成を回避できます。このオプションのデフォルトは true です。false に設定すると、AWS に存在しないバケットに対する操作は成功せず、エラーが返されます。
9.10. バケットと別のバケットの間でスタッフを移動する リンクのコピーリンクがクリップボードにコピーされました!
一部のユーザーは、このコンポーネントの copyObject 機能を使用せずに、バケットからコンテンツを消費し、コンテンツを別のバケットに移動することを好みます。この場合、consumer の受信交換から bucketName ヘッダーを削除することを忘れないでください。そうしないと、ファイルは常に同じ元のバケットで上書きされます。
9.11. MoveAfterRead consumer オプション リンクのコピーリンクがクリップボードにコピーされました!
deleteAfterRead に加えて、moveAfterRead という別のオプションが追加されました。このオプションを有効にすると、消費されたオブジェクトは削除されるだけでなく、ターゲットの destinationBucket に移動されます。これには、destinationBucket オプションを指定する必要があります。例として:
from("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&moveAfterRead=true&destinationBucket=myothercamelbucket")
.to("mock:result");
この場合、消費されたオブジェクトは myothercamelbucket バケットに移動され、元のバケットから削除されます (deleteAfterRead がデフォルトで true に設定されているため)。
ファイルを別のバケットに移動するときに、キーの接頭辞/接尾辞を使用することもできます。オプションは、destinationBucketPrefix と destinationBucketSuffix です。
上記の例を取ると、次のようなことができます。
from("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&moveAfterRead=true&destinationBucket=myothercamelbucket&destinationBucketPrefix=RAW(pre-)&destinationBucketSuffix=RAW(-suff)")
.to("mock:result");
この場合、消費されたオブジェクトは myothercamelbucket バケットに移動され、元のバケットから削除されます (deleteAfterRead がデフォルトで true に設定されているため)。
したがって、ファイル名が test の場合、myothercamelbucket に pre-test-suff というファイルが表示されます。
9.12. 顧客キーを暗号化として使用する リンクのコピーリンクがクリップボードにコピーされました!
また、カスタマーキーサポート (KMS を使用する代替手段) も導入しました。次のコードは例を示しています。
String key = UUID.randomUUID().toString();
byte[] secretKey = generateSecretKey();
String b64Key = Base64.getEncoder().encodeToString(secretKey);
String b64KeyMd5 = Md5Utils.md5AsBase64(secretKey);
String awsEndpoint = "aws2-s3://mycamel?autoCreateBucket=false&useCustomerKey=true&customerKeyId=RAW(" + b64Key + ")&customerKeyMD5=RAW(" + b64KeyMd5 + ")&customerAlgorithm=" + AES256.name();
from("direct:putObject")
.setHeader(AWS2S3Constants.KEY, constant("test.txt"))
.setBody(constant("Test"))
.to(awsEndpoint);
9.13. POJO を本体として使用する リンクのコピーリンクがクリップボードにコピーされました!
複数のオプションがあるため、AWS リクエストの作成が複雑になる場合があります。POJO を本体として使用する可能性を紹介します。AWS S3 には、送信できる複数の操作があります。たとえば、リストブローカーリクエストの場合、次のようなことができます。
from("direct:aws2-s3")
.setBody(ListObjectsRequest.builder().bucket(bucketName).build())
.to("aws2-s3://test?amazonS3Client=#amazonS3Client&operation=listObjects&pojoRequest=true")
このようにして、この操作に特に関連するヘッダーやオプションを渡す必要なく、リクエストを直接渡します。
9.14. S3 クライアントを作成し、コンポーネントをレジストリーに追加する リンクのコピーリンクがクリップボードにコピーされました!
S3 クライアントの設定もできる AWS2S3Configuration を使用して、高度な設定を実行する場合があります。次の例に示すように、コンポーネント設定で S3 クライアントを作成および設定できます。
String awsBucketAccessKey = "your_access_key";
String awsBucketSecretKey = "your_secret_key";
S3Client s3Client = S3Client.builder().credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create(awsBucketAccessKey, awsBucketSecretKey)))
.region(Region.US_EAST_1).build();
AWS2S3Configuration configuration = new AWS2S3Configuration();
configuration.setAmazonS3Client(s3Client);
configuration.setAutoDiscoverClient(true);
configuration.setBucketName("s3bucket2020");
configuration.setRegion("us-east-1");
これで、ルートを初期化する前に、(上で作成した設定オブジェクトを使用して) S3 コンポーネントを設定し、configure メソッドでレジストリーに追加できます。
AWS2S3Component s3Component = new AWS2S3Component(getContext());
s3Component.setConfiguration(configuration);
s3Component.setLazyStartProducer(true);
camelContext.addComponent("aws2-s3", s3Component);
これで、キャメルルートに実装されたすべての操作にコンポーネントが使用されます。
9.15. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Maven ユーザーは、以下の依存関係を pom.xml に追加する必要があります。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws2-s3</artifactId>
<version>${camel-version}</version>
</dependency>
{camel-version} は Camel の実際のバージョンに置き換える必要があります。
9.16. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 51 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.aws2-s3.access-key | Amazon AWS Access Key。 | String | |
| camel.component.aws2-s3.amazon-s3-client | レジストリーの com.amazonaws.services.s3.AmazonS3 への参照。オプションは、software.amazon.awssdk.services.s3.S3Client タイプです。 | S3Client | |
| camel.component.aws2-s3.amazon-s3-presigner | リクエストの S3 Presigner。主に createDownloadLink 操作で使用されます。オプションは、software.amazon.awssdk.services.s3.presigner.S3Presigner タイプです。 | S3Presigner | |
| camel.component.aws2-s3.auto-create-bucket | S3 バケット bucketName の自動作成の設定。moveAfterRead オプションが有効になっている場合も適用され、destinationBucket が存在しない場合は作成されます。 | false | Boolean |
| camel.component.aws2-s3.autoclose-body | このオプションが true で、includeBody が false の場合、エクスチェンジの完了時に S3Object.close() メソッドが呼び出されます。このオプションは includeBody オプションと密接に関係しています。includeBody を false に設定し、autocloseBody を false に設定した場合、S3Object ストリームを閉じるのは呼び出し側が判断します。autocloseBody を true に設定すると、S3Object ストリームが自動的に閉じられます。 | true | Boolean |
| camel.component.aws2-s3.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.aws2-s3.aws-k-m-s-key-id | KMS が有効になっている場合に使用する KMS キーの ID を定義します。 | String | |
| camel.component.aws2-s3.batch-message-number | ストリーミングのアップロードモードでバッチを作成するメッセージの数 | 10 | Integer |
| camel.component.aws2-s3.batch-size | ストリーミングのアップロードモードのバッチサイズ (バイト単位) | 1000000 | Integer |
| camel.component.aws2-s3.bridge-error-handler | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | Boolean |
| camel.component.aws2-s3.configuration | コンポーネントの設定。オプションは org.apache.camel.component.aws2.s3.AWS2S3Configuration タイプです。 | AWS2S3 設定 | |
| camel.component.aws2-s3.customer-algorithm | CustomerKey が有効になっている場合に使用するカスタマーアルゴリズムを定義します。 | String | |
| camel.component.aws2-s3.customer-key-id | CustomerKey が有効になっている場合に使用するカスタマーキーの ID を定義します。 | String | |
| camel.component.aws2-s3.customer-key-m-d5 | CustomerKey が有効になっている場合に使用するカスタマーキーの MD5 を定義します。 | String | |
| camel.component.aws2-s3.delete-after-read | 取得後に S3 からオブジェクトを削除します。削除は、エクスチェンジがコミットされた場合にのみ実行されます。ロールバックが発生すると、オブジェクトは削除されません。このオプションが false の場合、同じオブジェクトがポーリングで繰り返し取得されます。そのため、ルートで Idempotent Consumer EIP を使用して重複を除外する必要があります。AWS2S3Constants#BUClKET_NAME および AWS2S3Constants#KEY ヘッダーを使用してフィルターすることも、AWS2S3Constants#KEY ヘッダーのみを使用してフィルターすることもできます。 | true | Boolean |
| camel.component.aws2-s3.delete-after-write | S3 ファイルのアップロード後にファイルオブジェクトを削除します。 | false | Boolean |
| camel.component.aws2-s3.delimiter | 対象のオブジェクトのみを消費するために com.amazonaws.services.s3.model.ListObjectsRequest で使用される区切り文字。 | String | |
| camel.component.aws2-s3.destination-bucket | moveAfterRead が true に設定されている場合にオブジェクトを移動する必要がある宛先バケットを定義します。 | String | |
| camel.component.aws2-s3.destination-bucket-prefix | オブジェクトを移動する必要があり、moveAfterRead が true に設定されている場合に使用する宛先バケット接頭辞を定義します。 | String | |
| camel.component.aws2-s3.destination-bucket-suffix | オブジェクトを移動する必要があり、moveAfterRead が true に設定されている場合に使用する宛先バケット接尾辞を定義します。 | String | |
| camel.component.aws2-s3.done-file-name | 指定すると、Camel は完了したファイルが存在する場合にのみファイルを消費します。 | String | |
| camel.component.aws2-s3.enabled | aws2-c3 コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.aws2-s3.file-name | 指定のファイル名を持つバケットからオブジェクトを取得します。 | String | |
| camel.component.aws2-s3.ignore-body | true の場合、S3 オブジェクトボディは完全に無視されます。false に設定されている場合、S3 オブジェクトはボディに配置されます。これを true に設定すると、includeBody オプションで定義された動作がオーバーライドされます。 | false | Boolean |
| camel.component.aws2-s3.include-body | true の場合、S3Object エクスチェンジが消費され、ボディーに配置され、閉じられます。false の場合、S3Object ストリームは raw でボディーに配置され、ヘッダーは S3 オブジェクトメタデータで設定されます。このオプションは、autocloseBody オプションと密接に関係します。S3Object ストリームが消費されるため includeBody を true に設定した場合、includeBody が false であっても閉じられるため、S3Object ストリームを閉じるのは呼び出し側が判断します。しかし、includeBody が false の場合に autocloseBody を true に設定すると、エクスチェンジの完了時に S3Object ストリームを自動的に閉じるようにスケジュールされます。 | true | Boolean |
| camel.component.aws2-s3.include-folders | true の場合、フォルダー/ディレクトリーが消費されます。false の場合は無視され、エクスチェンジは作成されません。 | true | Boolean |
| camel.component.aws2-s3.key-name | endpoint パラメーター経由でバケットの要素のキー名を設定します。 | String | |
| camel.component.aws2-s3.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.aws2-s3.move-after-read | オブジェクトの取得後に S3 バケットから別のバケットに移動します。操作を実行するには、destinationBucket オプションを設定する必要があります。copy bucket 操作は、エクスチェンジがコミットされた場合にのみ実行されます。ロールバックが発生した場合、オブジェクトは移動しません。 | false | Boolean |
| camel.component.aws2-s3.multi-part-upload | true の場合、Camel はマルチパート形式のファイルをアップロードし、パートサイズは partSize のオプションによって決定されます。 | false | Boolean |
| camel.component.aws2-s3.naming-strategy | ストリーミングのアップロードモードで使用する命名ストラテジー。 | AWSS3NamingStrategyEnum | |
| camel.component.aws2-s3.operation | ユーザーがアップロードだけをしたくない場合に行う操作。 | AWS2S3Operations | |
| camel.component.aws2-s3.override-endpoint | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | Boolean |
| camel.component.aws2-s3.part-size | マルチパートのアップロードで使用される partSize を設定します。デフォルトのサイズは 25M です。 | 26214400 | Long |
| camel.component.aws2-s3.pojo-request | POJO リクエストをボディーとして使用するかどうか。 | false | Boolean |
| camel.component.aws2-s3.policy | com.amazonaws.services.s3.AmazonS3#setBucketPolicy() メソッドに設定されるこのキューのポリシー。 | String | |
| camel.component.aws2-s3.prefix | 対象のオブジェクトのみを消費するために com.amazonaws.services.s3.model.ListObjectsRequest で使用される接頭辞。 | String | |
| camel.component.aws2-s3.proxy-host | SQS クライアントをインスタンス化するときにプロキシーホストを定義します。 | String | |
| camel.component.aws2-s3.proxy-port | クライアント定義内で使用されるプロキシーポートを指定します。 | Integer | |
| camel.component.aws2-s3.proxy-protocol | S3 クライアントをインスタンス化するときにプロキシープロトコルを定義します。 | Protocol | |
| camel.component.aws2-s3.region | S3 クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| camel.component.aws2-s3.restarting-policy | ストリーミングのアップロードモードで使用する再起動ポリシー。 | AWSS3RestartingPolicyEnum | |
| camel.component.aws2-s3.secret-key | Amazon AWS Secret Key。 | String | |
| camel.component.aws2-s3.storage-class | com.amazonaws.services.s3.model.PutObjectRequest リクエストに設定するストレージクラス。 | String | |
| camel.component.aws2-s3.streaming-upload-mode | ストリームモードが true の場合、バケットへのアップロードはストリーミングで行われます。 | false | Boolean |
| camel.component.aws2-s3.streaming-upload-timeout | ストリーミングアップロードモードが true の場合、このオプションはタイムアウトを設定してアップロードを完了します。 | Long | |
| camel.component.aws2-s3.trust-all-certificates | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | Boolean |
| camel.component.aws2-s3.uri-endpoint-override | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| camel.component.aws2-s3.use-aws-k-m-s | KMS を使用する必要があるかどうかを定義します。 | false | Boolean |
| camel.component.aws2-s3.use-customer-key | カスタマーキーを使用する必要があるかどうかを定義します。 | false | Boolean |
| camel.component.aws2-s3.use-default-credentials-provider | デフォルトのクレデンシャルプロバイダー経由でクレデンシャルをロードすること、または静的クレデンシャルが渡されることを S3 クライアントは想定すべきかどうかを設定します。 | false | Boolean |
第10章 AWS Simple Notification System (SNS) リンクのコピーリンクがクリップボードにコピーされました!
producer のみサポート対象
AWS2 SNS コンポーネントを使用すると、メッセージを Amazon Simple Notification Topic に送信できます。Amazon API の実装は AWS SDK によって提供されます。
前提条件
有効な Amazon Web Services 開発者アカウントを持っていて、Amazon Kinesis を使用するためにサインアップしている必要がある。詳細は、Amazon SNS を参照してください。
10.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で aws2-sns を使用する場合は、自動設定をサポートするために次の Maven 依存関係を pom.xml に追加します。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-aws2-sns-starter</artifactId>
</dependency>
10.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
aws2-sns://topicNameOrArn[?options]
トピックがまだ存在しない場合は作成されます。URI には、?options=value&option2=value&… という形式でクエリーオプションを追加できます。
10.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
10.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
10.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
10.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
AWS Simple Notification System (SNS) コンポーネントは、以下に示す 24 のオプションをサポートしています。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| amazonSNSClient (producer) | Autowired AmazonSNS をクライアントとして使用します。 | SnsClient | |
| autoCreateTopic (producer) | トピックの自動作成を設定します。 | false | boolean |
| configuration (producer) | コンポーネントの設定。 | Sns2Configuration | |
| kmsMasterKeyId (producer) | Amazon SNS の AWS 管理のカスタマーマスターキー (CMK) の ID またはカスタム CMK の ID。 | String | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| messageDeduplicationIdStrategy (producer) | FIFO トピックのみ。メッセージに messageDeduplicationId を設定するストラテジー。useExchangeId または useContentBasedDeduplication のいずれかをオプションとして使用できます。useContentBasedDeduplication オプションでは、メッセージに messageDeduplicationId が設定されません。 列挙値:
| useExchangeId | String |
| messageGroupIdStrategy (producer) | FIFO トピックのみ。メッセージに messageGroupId を設定するストラテジー。useConstant、useExchangeId、usePropertyValue のいずれかをオプションとして使用できます。usePropertyValue オプションでは、CamelAwsMessageGroupId プロパティーの値が使用されます。 列挙値:
| String | |
| messageStructure (producer) | json などの使用するメッセージ構造。 | String | |
| overrideEndpoint (producer) | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | boolean |
| policy (producer) | このトピックのポリシー。デフォルトではクラスパスからロードされますが、classpath:、file:、または http: をプレフィックとして指定して、異なるシステムからリソースをロードすることもできます。 | String | |
| proxyHost (producer) | SNS クライアントをインスタンス化するときにプロキシーホストを定義します。 | String | |
| proxyPort (producer) | SNS クライアントをインスタンス化するときにプロキシーポートを定義します。 | Integer | |
| proxyProtocol (producer) | SNS クライアントをインスタンス化するときにプロキシープロトコルを定義します。 列挙値:
| HTTPS | Protocol |
| queueUrl (producer) | サブスクライブする queueUrl。 | String | |
| region (producer) | SNS クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| serverSideEncryptionEnabled (producer) | サーバー側の暗号化がトピックで有効であるかどうかを定義します。 | false | boolean |
| subject (producer) | メッセージヘッダー 'CamelAwsSnsSubject' が存在しない場合に使用されるサブジェクト。 | String | |
| subscribeSNStoSQS (producer) | SNS トピックと SQS との間のサブスクリプションを完了する必要があるかどうかを定義します。 | false | boolean |
| trustAllCertificates (producer) | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | boolean |
| uriEndpointOverride (producer) | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| useDefaultCredentialsProvider (producer) | SNS クライアントが AWS infra インスタンスでクレデンシャルのロードすること、または静的クレデンシャルが渡されることを SNS クライアントが想定すべきかどうかを設定します。 | false | boolean |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| accessKey (security) | Amazon AWS Access Key。 | String | |
| secretKey (security) | Amazon AWS Secret Key。 | String |
10.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
AWS Simple Notification System (SNS) エンドポイントは、URI 構文を使用して設定されます。
aws2-sns:topicNameOrArn
パスおよびクエリーパラメーターを使用します。
10.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| topicNameOrArn (producer) | 必須 のトピック名または ARN。 | String |
10.5.2. クエリーパラメーター (23 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| amazonSNSClient (producer) | Autowired AmazonSNS をクライアントとして使用します。 | SnsClient | |
| autoCreateTopic (producer) | トピックの自動作成を設定します。 | false | boolean |
| headerFilterStrategy (producer) | カスタムの HeaderFilterStrategy を使用して、ヘッダーから Camel または Camel からヘッダーにマッピングします。 | HeaderFilterStrategy | |
| kmsMasterKeyId (producer) | Amazon SNS の AWS 管理のカスタマーマスターキー (CMK) の ID またはカスタム CMK の ID。 | String | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| messageDeduplicationIdStrategy (producer) | FIFO トピックのみ。メッセージに messageDeduplicationId を設定するストラテジー。useExchangeId または useContentBasedDeduplication のいずれかをオプションとして使用できます。useContentBasedDeduplication オプションでは、メッセージに messageDeduplicationId が設定されません。 列挙値:
| useExchangeId | String |
| messageGroupIdStrategy (producer) | FIFO トピックのみ。メッセージに messageGroupId を設定するストラテジー。useConstant、useExchangeId、usePropertyValue のいずれかをオプションとして使用できます。usePropertyValue オプションでは、CamelAwsMessageGroupId プロパティーの値が使用されます。 列挙値:
| String | |
| messageStructure (producer) | json などの使用するメッセージ構造。 | String | |
| overrideEndpoint (producer) | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | boolean |
| policy (producer) | このトピックのポリシー。デフォルトではクラスパスからロードされますが、classpath:、file:、または http: をプレフィックとして指定して、異なるシステムからリソースをロードすることもできます。 | String | |
| proxyHost (producer) | SNS クライアントをインスタンス化するときにプロキシーホストを定義します。 | String | |
| proxyPort (producer) | SNS クライアントをインスタンス化するときにプロキシーポートを定義します。 | Integer | |
| proxyProtocol (producer) | SNS クライアントをインスタンス化するときにプロキシープロトコルを定義します。 列挙値:
| HTTPS | Protocol |
| queueUrl (producer) | サブスクライブする queueUrl。 | String | |
| region (producer) | SNS クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| serverSideEncryptionEnabled (producer) | サーバー側の暗号化がトピックで有効であるかどうかを定義します。 | false | boolean |
| subject (producer) | メッセージヘッダー 'CamelAwsSnsSubject' が存在しない場合に使用されるサブジェクト。 | String | |
| subscribeSNStoSQS (producer) | SNS トピックと SQS との間のサブスクリプションを完了する必要があるかどうかを定義します。 | false | boolean |
| trustAllCertificates (producer) | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | boolean |
| uriEndpointOverride (producer) | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| useDefaultCredentialsProvider (producer) | SNS クライアントが AWS infra インスタンスでクレデンシャルのロードすること、または静的クレデンシャルが渡されることを SNS クライアントが想定すべきかどうかを設定します。 | false | boolean |
| accessKey (security) | Amazon AWS Access Key。 | String | |
| secretKey (security) | Amazon AWS Secret Key。 | String |
必要な SNS コンポーネントオプション
Amazon の SNS にアクセスするには、レジストリーに amazonSNSClient を指定するか、accessKey と secretKey を指定する必要があります。
10.6. 使用方法 リンクのコピーリンクがクリップボードにコピーされました!
10.6.1. 静的認証情報とデフォルトの認証情報プロバイダーの比較 リンクのコピーリンクがクリップボードにコピーされました!
useDefaultCredentialsProvider オプションを指定し、これを true に設定することにより、明示的な静的認証情報の使用を回避することが可能です。
- Java システムプロパティー - aws.accessKeyId および aws.secretKey
- 環境変数: AWS_ACCESS_KEY_ID および AWS_SECRET_ACCESS_KEY。
- AWS STS の Web ID トークン。
- 共有認証情報および設定ファイル。
- Amazon ECS コンテナー認証情報 - 環境変数 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI が設定されている場合は、Amazon ECS からロードされます。
- Amazon EC2 インスタンスプロファイルの認証情報。
これに関する詳細情報は、AWS 認証情報のドキュメント を参照してください。
10.6.2. SNS producer によって評価されるメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 型 | 説明 |
|---|---|---|
|
|
|
Amazon SNS メッセージの件名。設定されていない場合は、 |
10.6.3. SNS producer によって設定されるメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 型 | 説明 |
|---|---|---|
|
|
| Amazon SNS メッセージ ID。 |
10.6.4. 高度な AmazonSNS 設定 リンクのコピーリンクがクリップボードにコピーされました!
SnsClient インスタンス設定をさらに制御する必要がある場合は、独自のインスタンスを作成し、URI から参照できます。
from("direct:start")
.to("aws2-sns://MyTopic?amazonSNSClient=#client");
#client は、レジストリー内の AmazonSNS を参照します。
10.6.5. AWS SNS トピックと AWS SQS キューの間にサブスクリプションを作成する リンクのコピーリンクがクリップボードにコピーされました!
次の方法で、SNS トピックへの SQS キューのサブスクリプションを作成できます。
from("direct:start")
.to("aws2-sns://test-camel-sns1?amazonSNSClient=#amazonSNSClient&subscribeSNStoSQS=true&queueUrl=https://sqs.eu-central-1.amazonaws.com/780410022472/test-camel");
#amazonSNSClient は、レジストリー内の SnsClient を参照します。subscribeSNStoSQS を true に指定し、既存の SQS キューの queueUrl を指定すると、SQS キューを SNS トピックにサブスクライブできます。
この時点で、SQS キューを介して SNS トピックからのメッセージを消費できます。
from("aws2-sqs://test-camel?amazonSQSClient=#amazonSQSClient&delay=50&maxMessagesPerPoll=5")
.to(...);
10.7. トピックの自動作成 リンクのコピーリンクがクリップボードにコピーされました!
オプション autoCreateTopic を使用すると、SNS トピックが存在しない場合に自動作成を回避できます。このオプションのデフォルトは true です。false に設定すると、AWS に存在しないトピックに対する操作は成功せず、エラーが返されます。
10.8. SNS FIFO リンクのコピーリンクがクリップボードにコピーされました!
SNS FIFO がサポートされています。SNS トピックにサブスクライブする SQS キューを作成する際に、覚えておくべき重要な点があります。SNS トピックがメッセージを SQS キューに送信できるようにする必要があります。
例
Order.fifo という SNS FIFO トピックと QueueSub.fifo という SQS キューを作成したとします。
QueueSub.fifo のアクセスポリシーでは、次のようなものを送信する必要があります。
{
"Version": "2008-10-17",
"Id": "__default_policy_ID",
"Statement": [
{
"Sid": "__owner_statement",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::780560123482:root"
},
"Action": "SQS:*",
"Resource": "arn:aws:sqs:eu-west-1:780560123482:QueueSub.fifo"
},
{
"Effect": "Allow",
"Principal": {
"Service": "sns.amazonaws.com"
},
"Action": "SQS:SendMessage",
"Resource": "arn:aws:sqs:eu-west-1:780560123482:QueueSub.fifo",
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:sns:eu-west-1:780410022472:Order.fifo"
}
}
}
]
}
これは、サブスクリプションを正しく機能させるための重要なステップです。
10.8.1. SNS Fifo トピックメッセージグループ Id 戦略とメッセージ重複排除 Id 戦略 リンクのコピーリンクがクリップボードにコピーされました!
何かを FIFO トピックに送信するときは、常にメッセージグループ ID 戦略を設定する必要があります。
コンテンツベースのメッセージ重複排除が SNS Fifo トピックで有効になっている場合、メッセージ重複排除 ID 戦略を設定する必要はありません。それ以外の場合は、設定する必要があります。
10.9. 例 リンクのコピーリンクがクリップボードにコピーされました!
10.9.1. producer の例 リンクのコピーリンクがクリップボードにコピーされました!
トピックへの送信
from("direct:start")
.to("aws2-sns://camel-topic?subject=The+subject+message&autoCreateTopic=true");
10.10. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Maven ユーザーは、以下の依存関係を pom.xml に追加する必要があります。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws2-sns</artifactId>
<version>${camel-version}</version>
</dependency>
{camel-version} は Camel の実際のバージョンに置き換える必要があります。
10.11. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 25 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.aws2-sns.access-key | Amazon AWS Access Key。 | String | |
| camel.component.aws2-sns.amazon-s-n-s-client | AmazonSNS をクライアントとして使用します。オプションは、software.amazon.awssdk.services.sns.SnsClient タイプです。 | SnsClient | |
| camel.component.aws2-sns.auto-create-topic | トピックの自動作成を設定します。 | false | Boolean |
| camel.component.aws2-sns.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.aws2-sns.configuration | コンポーネントの設定。オプションは org.apache.camel.component.aws2.sns.Sns2Configuration タイプです。 | Sns2Configuration | |
| camel.component.aws2-sns.enabled | aws2-sns コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.aws2-sns.kms-master-key-id | Amazon SNS の AWS 管理のカスタマーマスターキー (CMK) の ID またはカスタム CMK の ID。 | String | |
| camel.component.aws2-sns.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.aws2-sns.message-deduplication-id-strategy | FIFO トピックのみ。メッセージに messageDeduplicationId を設定するストラテジー。useExchangeId または useContentBasedDeduplication のいずれかをオプションとして使用できます。useContentBasedDeduplication オプションでは、メッセージに messageDeduplicationId が設定されません。 | useExchangeId | String |
| camel.component.aws2-sns.message-group-id-strategy | FIFO トピックのみ。メッセージに messageGroupId を設定するストラテジー。useConstant、useExchangeId、usePropertyValue のいずれかをオプションとして使用できます。usePropertyValue オプションでは、CamelAwsMessageGroupId プロパティーの値が使用されます。 | String | |
| camel.component.aws2-sns.message-structure | json などの使用するメッセージ構造。 | String | |
| camel.component.aws2-sns.override-endpoint | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | Boolean |
| camel.component.aws2-sns.policy | このトピックのポリシー。デフォルトではクラスパスからロードされますが、classpath:、file:、または http: をプレフィックとして指定して、異なるシステムからリソースをロードすることもできます。 | String | |
| camel.component.aws2-sns.proxy-host | SNS クライアントをインスタンス化するときにプロキシーホストを定義します。 | String | |
| camel.component.aws2-sns.proxy-port | SNS クライアントをインスタンス化するときにプロキシーポートを定義します。 | Integer | |
| camel.component.aws2-sns.proxy-protocol | SNS クライアントをインスタンス化するときにプロキシープロトコルを定義します。 | Protocol | |
| camel.component.aws2-sns.queue-url | サブスクライブする queueUrl。 | String | |
| camel.component.aws2-sns.region | SNS クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| camel.component.aws2-sns.secret-key | Amazon AWS Secret Key。 | String | |
| camel.component.aws2-sns.server-side-encryption-enabled | サーバー側の暗号化がトピックで有効であるかどうかを定義します。 | false | Boolean |
| camel.component.aws2-sns.subject | メッセージヘッダー 'CamelAwsSnsSubject' が存在しない場合に使用されるサブジェクト。 | String | |
| camel.component.aws2-sns.subscribe-s-n-sto-s-q-s | SNS トピックと SQS との間のサブスクリプションを完了する必要があるかどうかを定義します。 | false | Boolean |
| camel.component.aws2-sns.trust-all-certificates | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | Boolean |
| camel.component.aws2-sns.uri-endpoint-override | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| camel.component.aws2-sns.use-default-credentials-provider | SNS クライアントが AWS infra インスタンスでクレデンシャルのロードすること、または静的クレデンシャルが渡されることを SNS クライアントが想定すべきかどうかを設定します。 | false | Boolean |
第11章 AWS Simple Queue Service (SQS) リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
AWS2 SQS コンポーネントは、Amazon の SQS サービス へのメッセージの送受信をサポートしています。
前提条件
有効な Amazon Web Services 開発者アカウントを持っていて、Amazon SQS を使用するためにサインアップしている必要がある。詳細は、Amazon SQS を参照してください。
11.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で aws2-sqs を使用する場合は、自動設定をサポートするために次の Maven 依存関係を pom.xml に追加します。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-aws2-sqs-starter</artifactId>
</dependency>
11.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
aws2-sqs://queueNameOrArn[?options]
キューがまだ存在しない場合は作成されます。URI には、次の形式でクエリーオプションを追加できます。
?options=value&option2=value&…
11.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
11.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
11.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
11.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
AWS Simple Queue Service (SQS) コンポーネントは、以下に示す 43 のオプションをサポートしています。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| amazonAWSHost (common) | Amazon AWS クラウドのホスト名。 | amazonaws.com | String |
| amazonSQSClient (common) | Autowired AmazonSQS をクライアントとして使用します。 | SqsClient | |
| autoCreateQueue (common) | キューの自動作成の設定。 | false | boolean |
| configuration (common) | AWS SQS のデフォルト設定。 | Sqs2Configuration | |
| overrideEndpoint (common) | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | boolean |
| protocol (common) | SQS との通信に使用される基礎となるプロトコル。 | https | String |
| proxyProtocol (common) | SQS クライアントをインスタンス化するときにプロキシープロトコルを定義します。 列挙値:
| HTTPS | Protocol |
| queueOwnerAWSAccountId (common) | 異なるアカウント所有者でキューを接続する必要がある場合は、キュー所有者の aws アカウント ID を指定します。 | String | |
| region (common) | SQS クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| trustAllCertificates (common) | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | boolean |
| uriEndpointOverride (common) | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| useDefaultCredentialsProvider (common) | SQS クライアントが AWS infra インスタンスでクレデンシャルのロードすること、または静的クレデンシャルが渡されることを SQS クライアントが想定すべきかどうかを設定します。 | false | boolean |
| attributeNames (consumer) | 消費時に受け取る属性名のリスト。複数の値はコンマで区切ることができます。 | String | |
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| concurrentConsumers (consumer) | 複数のスレッドを使用して sqs キューをポーリングし、スループットを向上させることができます。 | 1 | int |
| defaultVisibilityTimeout (consumer) | デフォルトの表示タイムアウト (秒単位)。 | Integer | |
| deleteAfterRead (consumer) | メッセージが読まれた後、SQS からメッセージを削除します。 | true | boolean |
| deleteIfFiltered (consumer) | キー Sqs2Constants#SQS_DELETE_FILTERED (CamelAwsSqsDeleteFiltered) が true に設定されたプロパティーが交換にある場合に、DeleteMessage を SQS キューに送信するかどうか。 | true | boolean |
| extendMessageVisibility (consumer) | 有効にすると、スケジュールされたバックグラウンドタスクにより、SQS でのメッセージの可視性が拡張され続けます。これは、メッセージの処理に時間がかかる場合に必要です。true に設定した場合は、defaultVisibilityTimeout を設定する必要があります。 | false | boolean |
| kmsDataKeyReusePeriodSeconds (consumer) | AWS KMS を再度呼び出す前に、Amazon SQS がデータキーを再利用してメッセージを暗号化または復号できる時間の長さ (秒単位)。60 秒 (1 分) から 86,400 秒 (24 時間) までの秒を表す整数。デフォルトは 300 (5 分) です。 | Integer | |
| kmsMasterKeyId (consumer) | Amazon SQS の AWS 管理のカスタマーマスターキー (CMK) の ID またはカスタム CMK の ID。 | String | |
| messageAttributeNames (consumer) | 消費時に受け取るメッセージ属性名のリスト。複数の値はコンマで区切ることができます。 | String | |
| serverSideEncryptionEnabled (consumer) | サーバー側の暗号化がキューで有効であるかどうかを定義します。 | false | boolean |
| visibilityTimeout (consumer) | 受信したメッセージが、com.amazonaws.services.sqs.model.SetQueueAttributesRequest で設定する ReceiveMessage リクエストによって取得された後、後続の取得リクエストから非表示になる期間 (秒単位)。これは、defaultVisibilityTimeout とは異なる場合にのみ意味があります。キューの可視性タイムアウト属性を永続的に変更します。 | Integer | |
| waitTimeSeconds (consumer) | メッセージがキューに入れられて応答に含まれるまで、ReceiveMessage アクション呼び出しが待機する時間 (0 から 20) です。 | Integer | |
| batchSeparator (producer) | 文字列を渡してバッチメッセージ操作を送信するときに、区切り記号を設定します。 | , | String |
| delaySeconds (producer) | 数秒間メッセージの送信を遅延します。 | Integer | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| messageDeduplicationIdStrategy (producer) | FIFO キューの場合のみ。メッセージに messageDeduplicationId を設定するストラテジー。useExchangeId または useContentBasedDeduplication のいずれかをオプションとして使用できます。useContentBasedDeduplication オプションでは、メッセージに messageDeduplicationId が設定されません。 列挙値:
| useExchangeId | String |
| messageGroupIdStrategy (producer) | FIFO キューの場合のみ。メッセージに messageGroupId を設定するストラテジー。useConstant、useExchangeId、usePropertyValue のいずれかをオプションとして使用できます。usePropertyValue オプションでは、CamelAwsMessageGroupId プロパティーの値が使用されます。 列挙値:
| String | |
| operation (producer) | ユーザーがメッセージだけを送信したくない場合に行う操作。 列挙値:
| Sqs2Operations | |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| delayQueue (advanced) | delaySeconds オプションをキューまたは単一のメッセージに適用するかどうかを定義します。 | false | boolean |
| queueUrl (advanced) | queueUrl を明示的に定義します。queueUrl に影響を与えるその他のパラメーターはすべて無視されます。このパラメーターは、テストのために SQS の仮実装 (モック) に接続すること目的としています。 | String | |
| proxyHost (プロキシー) | SQS クライアントをインスタンス化するときにプロキシーホストを定義します。 | String | |
| proxyPort (プロキシー) | SQS クライアントをインスタンス化するときにプロキシーポートを定義します。 | Integer | |
| maximumMessageSize (キュー) | このキューの SQS メッセージに含めることができる maximumMessageSize (バイト単位)。 | Integer | |
| messageRetentionPeriod (queue) | このキューの SQS によってメッセージが保持される messageRetentionPeriod (秒単位)。 | Integer | |
| ポリシー (キュー) | このキューのポリシー。デフォルトではクラスパスからロードできますが、classpath:、file:、または http: の接頭辞を付けて、別のシステムからリソースをロードできます。 | String | |
| receiveMessageWaitTimeSeconds (queue) | 要求で WaitTimeSeconds を指定しない場合は、キュー属性 ReceiveMessageWaitTimeSeconds を使用して待機時間を決定します。 | Integer | |
| redrivePolicy (キュー) | DeadLetter キューにメッセージを送信するポリシーを指定します。Amazon ドキュメントで詳細を参照してください。 | String | |
| accessKey (security) | Amazon AWS Access Key。 | String | |
| secretKey (security) | Amazon AWS Secret Key。 | String |
11.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
AWS Simple Queue Service (SQS) エンドポイントは、URI 構文を使用して設定されます。
aws2-sqs:queueNameOrArn
パスおよびクエリーパラメーターを使用します。
11.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| queueNameOrArn (common) | 必須 のキュー名または ARN。 | String |
11.5.2. クエリーパラメーター (61 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| amazonAWSHost (common) | Amazon AWS クラウドのホスト名。 | amazonaws.com | String |
| amazonSQSClient (common) | Autowired AmazonSQS をクライアントとして使用します。 | SqsClient | |
| autoCreateQueue (common) | キューの自動作成の設定。 | false | boolean |
| headerFilterStrategy (common) | カスタムの HeaderFilterStrategy を使用して、ヘッダーから Camel または Camel からヘッダーにマッピングします。 | HeaderFilterStrategy | |
| overrideEndpoint (common) | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | boolean |
| protocol (common) | SQS との通信に使用される基礎となるプロトコル。 | https | String |
| proxyProtocol (common) | SQS クライアントをインスタンス化するときにプロキシープロトコルを定義します。 列挙値:
| HTTPS | Protocol |
| queueOwnerAWSAccountId (common) | 異なるアカウント所有者でキューを接続する必要がある場合は、キュー所有者の aws アカウント ID を指定します。 | String | |
| region (common) | SQS クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| trustAllCertificates (common) | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | boolean |
| uriEndpointOverride (common) | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| useDefaultCredentialsProvider (common) | SQS クライアントが AWS infra インスタンスでクレデンシャルのロードすること、または静的クレデンシャルが渡されることを SQS クライアントが想定すべきかどうかを設定します。 | false | boolean |
| attributeNames (consumer) | 消費時に受け取る属性名のリスト。複数の値はコンマで区切ることができます。 | String | |
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| concurrentConsumers (consumer) | 複数のスレッドを使用して sqs キューをポーリングし、スループットを向上させることができます。 | 1 | int |
| defaultVisibilityTimeout (consumer) | デフォルトの表示タイムアウト (秒単位)。 | Integer | |
| deleteAfterRead (consumer) | メッセージが読まれた後、SQS からメッセージを削除します。 | true | boolean |
| deleteIfFiltered (consumer) | キー Sqs2Constants#SQS_DELETE_FILTERED (CamelAwsSqsDeleteFiltered) が true に設定されたプロパティーが交換にある場合に、DeleteMessage を SQS キューに送信するかどうか。 | true | boolean |
| extendMessageVisibility (consumer) | 有効にすると、スケジュールされたバックグラウンドタスクにより、SQS でのメッセージの可視性が拡張され続けます。これは、メッセージの処理に時間がかかる場合に必要です。true に設定した場合は、defaultVisibilityTimeout を設定する必要があります。詳細は、Amazon ドキュメントを参照してください。 | false | boolean |
| kmsDataKeyReusePeriodSeconds (consumer) | AWS KMS を再度呼び出す前に、Amazon SQS がデータキーを再利用してメッセージを暗号化または復号できる時間の長さ (秒単位)。60 秒 (1 分) から 86,400 秒 (24 時間) までの秒を表す整数。デフォルトは 300 (5 分) です。 | Integer | |
| kmsMasterKeyId (consumer) | Amazon SQS の AWS 管理のカスタマーマスターキー (CMK) の ID またはカスタム CMK の ID。 | String | |
| maxMessagesPerPoll (consumer) | 各ポーリングのポーリング制限としてメッセージの最大数を取得します。デフォルトは無制限ですが、0 または負の数を使用して無制限として無効にします。 | int | |
| messageAttributeNames (consumer) | 消費時に受け取るメッセージ属性名のリスト。複数の値はコンマで区切ることができます。 | String | |
| sendEmptyMessageWhenIdle (consumer) | ポーリング consumer がファイルをポーリングしなかった場合、このオプションを有効にして、代わりに空のメッセージ (ボディーなし) を送信できます。 | false | boolean |
| serverSideEncryptionEnabled (consumer) | サーバー側の暗号化がキューで有効であるかどうかを定義します。 | false | boolean |
| visibilityTimeout (consumer) | 受信したメッセージが、com.amazonaws.services.sqs.model.SetQueueAttributesRequest で設定する ReceiveMessage リクエストによって取得された後、後続の取得リクエストから非表示になる期間 (秒単位)。これは、defaultVisibilityTimeout とは異なる場合にのみ意味があります。キューの可視性タイムアウト属性を永続的に変更します。 | Integer | |
| waitTimeSeconds (consumer) | メッセージがキューに入れられて応答に含まれるまで、ReceiveMessage アクション呼び出しが待機する時間 (0 から 20) です。 | Integer | |
| exceptionHandler (consumer (advanced)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (advanced)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| pollStrategy (consumer (advanced)) | プラグ可能な org.apache.camel.PollingConsumerPollingStrategy を使用すると、エクスチェンジが作成され、Camel でルーティングされる前に、通常はポーリング操作中に発生するエラー処理を制御するカスタム実装が提供できます。 | PollingConsumerPollStrategy | |
| batchSeparator (producer) | 文字列を渡してバッチメッセージ操作を送信するときに、区切り記号を設定します。 | , | String |
| delaySeconds (producer) | 数秒間メッセージの送信を遅延します。 | Integer | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| messageDeduplicationIdStrategy (producer) | FIFO キューの場合のみ。メッセージに messageDeduplicationId を設定するストラテジー。useExchangeId または useContentBasedDeduplication のいずれかをオプションとして使用できます。useContentBasedDeduplication オプションでは、メッセージに messageDeduplicationId が設定されません。 列挙値:
| useExchangeId | String |
| messageGroupIdStrategy (producer) | FIFO キューの場合のみ。メッセージに messageGroupId を設定するストラテジー。useConstant、useExchangeId、usePropertyValue のいずれかをオプションとして使用できます。usePropertyValue オプションでは、CamelAwsMessageGroupId プロパティーの値が使用されます。 列挙値:
| String | |
| operation (producer) | ユーザーがメッセージだけを送信したくない場合に行う操作。 列挙値:
| Sqs2Operations | |
| delayQueue (advanced) | delaySeconds オプションをキューまたは単一のメッセージに適用するかどうかを定義します。 | false | boolean |
| queueUrl (advanced) | queueUrl を明示的に定義します。queueUrl に影響を与えるその他のパラメーターはすべて無視されます。このパラメーターは、テストのために SQS の仮実装 (モック) に接続すること目的としています。 | String | |
| proxyHost (プロキシー) | SQS クライアントをインスタンス化するときにプロキシーホストを定義します。 | String | |
| proxyPort (プロキシー) | SQS クライアントをインスタンス化するときにプロキシーポートを定義します。 | Integer | |
| maximumMessageSize (キュー) | このキューの SQS メッセージに含めることができる maximumMessageSize (バイト単位)。 | Integer | |
| messageRetentionPeriod (queue) | このキューの SQS によってメッセージが保持される messageRetentionPeriod (秒単位)。 | Integer | |
| ポリシー (キュー) | このキューのポリシー。デフォルトではクラスパスからロードできますが、classpath:、file:、または http: の接頭辞を付けて、別のシステムからリソースをロードできます。 | String | |
| receiveMessageWaitTimeSeconds (queue) | 要求で WaitTimeSeconds を指定しない場合は、キュー属性 ReceiveMessageWaitTimeSeconds を使用して待機時間を決定します。 | Integer | |
| redrivePolicy (キュー) | DeadLetter キューにメッセージを送信するポリシーを指定します。Amazon ドキュメントで詳細を参照してください。 | String | |
| backoffErrorThreshold (scheduler) | backoffMultipler が開始する前に発生する必要がある後続のエラーポーリング (エラーによって失敗した) の数。 | int | |
| backoffIdleThreshold (scheduler) | backoffMultipler が開始する前に発生する必要がある後続のアイドルポーリングの数。 | int | |
| backoffMultiplier (scheduler) | 後続のアイドル状態/エラーが連続して発生した場合に、スケジュールされたポーリング consumer のバックオフを許可します。乗数は、実際に次の試行が行われる前にスキップされるポーリングの数です。このオプションが使用されている場合は、backoffIdleThreshold や backoffErrorThreshold も設定する必要があります。 | int | |
| delay (scheduler) | 次のポーリングまでの時間 (ミリ秒単位)。 | 500 | long |
| greedy (scheduler) | greedy が有効で、以前の実行が 1 つ以上のメッセージをポーリングした場合、ScheduledPollConsumer は即座に再度実行されます。 | false | boolean |
| initialDelay (scheduler) | 最初のポーリングが開始されるまでの時間 (ミリ秒単位)。 | 1000 | long |
| repeatCount (scheduler) | 実行の最大数を指定します。そのため、これを 1 に設定するとスケジューラーは 1 度だけ実行されます。これを 5 に設定した場合、5 回だけ実行されます。0 または負の値を設定すると、無制限に実行されます。 | 0 | long |
| runLoggingLevel (scheduler) | consumer はポーリング時に開始/完了のログ行を記録します。このオプションを使用すると、ログレベルを設定できます。 列挙値:
| TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | consumer に使用するカスタム/共有スレッドプールを設定できます。デフォルトでは、各 consumer に独自の単一スレッドのスレッドプールがあります。 | ScheduledExecutorService | |
| scheduler (scheduler) | camel-spring または camel-quartz コンポーネントから cron スケジューラーを使用します。スケジューラーにビルドされた値 spring または quartz を使用。 | none | オブジェクト |
| schedulerProperties (scheduler) | カスタムスケジューラーまたは Quartz や Spring ベースのスケジューラーを使用する場合に、追加のプロパティーを設定します。 | マップ | |
| startScheduler (scheduler) | スケジューラーを自動起動するかどうか。 | true | boolean |
| timeUnit (scheduler) | initialDelay および delay オプションの時間単位。 列挙値:
| MILLISECONDS | TimeUnit |
| useFixedDelay (scheduler) | 固定遅延または固定レートを使用するかどうかを制御します。詳細は、JDK の ScheduledExecutorService を参照してください。 | true | boolean |
| accessKey (security) | Amazon AWS Access Key。 | String | |
| secretKey (security) | Amazon AWS Secret Key。 | String |
必須の SQS コンポーネントオプション
Amazon の SQS にアクセスするには、レジストリーに amazonSQSClient を指定するか、accessKey と secretKey を指定する必要があります。
11.6. バッチ consumer リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントは、Batch Consumer を実装します。
これにより、たとえば、このバッチに存在するメッセージの数を知ることができ、たとえば、Aggregator にこの数のメッセージを集約させることができます。
11.7. 使用方法 リンクのコピーリンクがクリップボードにコピーされました!
11.7.1. 静的認証情報とデフォルトの認証情報プロバイダーの比較 リンクのコピーリンクがクリップボードにコピーされました!
useDefaultCredentialsProvider オプションを指定し、これを true に設定することにより、明示的な静的認証情報の使用を回避することが可能です。
-
Java system properties -
aws.accessKeyIdandaws.secretKey -
環境変数:
AWS_ACCESS_KEY_IDおよびAWS_SECRET_ACCESS_KEY。 - AWS STS の Web ID トークン。
- 共有認証情報および設定ファイル。
-
Amazon ECS コンテナー認証情報 - 環境変数
AWS_CONTAINER_CREDENTIALS_RELATIVE_URIが設定されている場合は、Amazon ECS からロードされます。 - Amazon EC2 インスタンスプロファイルの認証情報。
これに関する詳細情報は、AWS 認証情報のドキュメント を参照してください。
11.7.2. SQS producer によって設定されるメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 型 | 説明 |
|---|---|---|
|
|
| Amazon SQS メッセージの MD5 チェックサム。 |
|
|
| Amazon SQS メッセージ ID。 |
|
|
| Amazon SQS メッセージが他のユーザーに表示される遅延秒数。 |
11.7.3. SQS consumer によって設定されるメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 型 | 説明 |
|---|---|---|
|
|
| Amazon SQS メッセージの MD5 チェックサム。 |
|
|
| Amazon SQS メッセージ ID。 |
|
|
| Amazon SQS メッセージ受信ハンドル。 |
|
|
| Amazon SQS メッセージ属性。 |
11.7.4. 高度な AmazonSQS 設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel アプリケーションがファイアウォールの背後で実行されている場合、または SqsClient インスタンス設定をより詳細に制御する必要がある場合は、独自のインスタンスを作成できます。
from("aws2-sqs://MyQueue?amazonSQSClient=#client&delay=5000&maxMessagesPerPoll=5")
.to("mock:result");
11.7.5. SQS キューの作成または更新 リンクのコピーリンクがクリップボードにコピーされました!
SQS コンポーネントでは、エンドポイントが開始されると、チェックが実行され、キューの存在に関する情報が取得されます。SQSConfiguration オプションを使用して QueueAttributeName マッピングを介して作成をカスタマイズできます。
from("aws2-sqs://MyQueue?amazonSQSClient=#client&delay=5000&maxMessagesPerPoll=5")
.to("mock:result");
この例では、AWS で MyQueue キューがまだ作成されていない場合 (および autoCreateQueue オプションが true に設定されている場合)、SQS 設定のデフォルトパラメーターで作成されます。すでに AWS で稼働している場合は、SQS 設定オプションを使用して既存の AWS 設定をオーバーライドします。
11.7.6. 単一メッセージの DelayQueue VS 遅延 リンクのコピーリンクがクリップボードにコピーされました!
オプション delayQueue が true に設定されている場合、SQS キューは DelaySeconds オプションが遅延として指定された DelayQueue になります。DelayQueue の詳細は、AWS SQS のドキュメント を参照してください。考慮すべき重要な情報の 1 つは、次のとおりです。
- 標準キューの場合、キューごとの遅延設定は遡及的ではありません。設定を変更しても、すでにキューにあるメッセージの遅延には影響しません。
- FIFO キューの場合、キューごとの遅延設定は遡及的です。設定を変更すると、すでにキューにあるメッセージの遅延に影響します。
公式ドキュメントに記載されているとおりです。単一のメッセージに遅延を指定する場合は、delayQueue オプションを無視できますが、エンキューされたすべてのメッセージに固定遅延を追加する必要がある場合は、このオプションを true に設定できます。
11.7.7. サーバー側の暗号化 リンクのコピーリンクがクリップボードにコピーされました!
キューには一連のサーバー側暗号化属性があります。関連するオプションは、serverSideEncryptionEnabled、keyMasterKeyId、および kmsDataKeyReusePeriod です。SSE はデフォルトで無効になっています。オプションを明示的に true に設定し、関連するパラメーターをキュー属性として設定する必要があります。
11.8. JMS スタイルのセレクター リンクのコピーリンクがクリップボードにコピーされました!
SQS ではセレクターを使用できませんが、キャメルフィルター EIP を使用して適切な visibilityTimeout を設定することで効果的にこれを実現できます。SQS がメッセージをディスパッチするとき、DeleteMessage が受信されない限り、可視性タイムアウトまで待機してから、別の consumer にメッセージをディスパッチしようとします。デフォルトでは、ルートが失敗に終わっていない限り、Camel は常にルートの最後に DeleteMessage を送信します。適切なフィルタリングを実現し、ルートが正常に完了した場合でも DeleteMessage を送信しないようにするには、Filter を使用します。
from("aws2-sqs://MyQueue?amazonSQSClient=#client&defaultVisibilityTimeout=5000&deleteIfFiltered=false&deleteAfterRead=false")
.filter("${header.login} == true")
.setProperty(Sqs2Constants.SQS_DELETE_FILTERED, constant(true))
.to("mock:filter");
上記のコードでは、交換に適切なヘッダーがない場合、フィルターを通過せず、SQS キューからも削除されません。5000 ミリ秒後、メッセージは他の consumer に表示されます。
フィルタリングされている場合、プロパティー Sqs2Constants.SQS_DELETE_FILTERED を true に設定して、Camel に DeleteMessage を送信するように指示する必要があることに注意してください。
11.9. 利用可能な producer 操作 リンクのコピーリンクがクリップボードにコピーされました!
- 単一メッセージ (デフォルト)
- sendBatchMessage
- deleteMessage
- listQueues
11.10. メッセージを送信 リンクのコピーリンクがクリップボードにコピーされました!
SendMessageBatchRequest または Iterable を設定できます
from("direct:start")
.setBody(constant("Camel rocks!"))
.to("aws2-sqs://camel-1?accessKey=RAW(xxx)&secretKey=RAW(xxx)®ion=eu-west-1");
11.11. バッチメッセージの送信 リンクのコピーリンクがクリップボードにコピーされました!
SendMessageBatchRequest または Iterable を設定できます
from("direct:start")
.setHeader(SqsConstants.SQS_OPERATION, constant("sendBatchMessage"))
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
Collection c = new ArrayList();
c.add("team1");
c.add("team2");
c.add("team3");
c.add("team4");
exchange.getIn().setBody(c);
}
})
.to("aws2-sqs://camel-1?accessKey=RAW(xxx)&secretKey=RAW(xxx)®ion=eu-west-1");
その結果、SendMessageBatchResponse インスタンスを含む交換が得られます。これを調べて、成功したメッセージと失敗したメッセージを確認できます。バッチの各メッセージに設定された ID は、ランダム UUID になります。
11.12. 単一のメッセージを削除 リンクのコピーリンクがクリップボードにコピーされました!
単一のメッセージを削除するには、deleteMessage オペレーションを使用します。削除するメッセージの受信ハンドルヘッダーを設定する必要があります。
from("direct:start")
.setHeader(SqsConstants.SQS_OPERATION, constant("deleteMessage"))
.setHeader(SqsConstants.RECEIPT_HANDLE, constant("123456"))
.to("aws2-sqs://camel-1?accessKey=RAW(xxx)&secretKey=RAW(xxx)®ion=eu-west-1");
その結果、メッセージが削除されたかどうかを確認するために使用できる DeleteMessageResponse インスタンスを含む交換が得られます。
11.13. リストキュー リンクのコピーリンクがクリップボードにコピーされました!
キューを一覧表示するには、listQueues オペレーションを使用します。
from("direct:start")
.setHeader(SqsConstants.SQS_OPERATION, constant("listQueues"))
.to("aws2-sqs://camel-1?accessKey=RAW(xxx)&secretKey=RAW(xxx)®ion=eu-west-1");
その結果、実際のキューを確認するために調べることができる ListQueuesResponse インスタンスを含む交換が得られます。
11.14. パージキュー リンクのコピーリンクがクリップボードにコピーされました!
キューをパージするには、purgeQueue オペレーションを使用します。
from("direct:start")
.setHeader(SqsConstants.SQS_OPERATION, constant("purgeQueue"))
.to("aws2-sqs://camel-1?accessKey=RAW(xxx)&secretKey=RAW(xxx)®ion=eu-west-1");
その結果、PurgeQueueResponse インスタンスを含む交換が得られます。
11.15. キューの自動作成 リンクのコピーリンクがクリップボードにコピーされました!
オプション autoCreateQueue を使用すると、SQS キューが存在しない場合に、ユーザーは SQS キューの自動作成を回避できます。このオプションのデフォルトは true です。false に設定すると、AWS に存在しないキューに対する操作は成功せず、エラーが返されます。
11.16. バッチメッセージの送信とメッセージの重複排除戦略 リンクのコピーリンクがクリップボードにコピーされました!
SendBatchMessage 操作を使用している場合は、次の 2 種類のメッセージ重複排除戦略を設定できます: - useExchangeId - useContentBasedDeduplication
最初のものは ExchangeIdMessageDeduplicationIdStrategy を使用し、Exchange ID をパラメーターとして使用します。もう 1 つは NullMessageDeduplicationIdStrategy を使用し、本文を重複排除要素として使用します。
バッチメッセージの送信操作の場合、useContentBasedDeduplication を使用する必要があり、ポイントしているキューで コンテンツベースの重複排除 オプションを有効にする必要があります。
11.17. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Maven ユーザーは、以下の依存関係を pom.xml に追加する必要があります。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws2-sqs</artifactId>
<version>${camel-version}</version>
</dependency>
{camel-version} は Camel の実際のバージョンに置き換える必要があります。
11.18. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 44 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.aws2-sqs.access-key | Amazon AWS Access Key。 | String | |
| camel.component.aws2-sqs.amazon-a-w-s-host | Amazon AWS クラウドのホスト名。 | amazonaws.com | String |
| camel.component.aws2-sqs.amazon-s-q-s-client | AmazonSQS をクライアントとして使用します。オプションは、software.amazon.awssdk.services.sqs.SqsClient タイプです。 | SqsClient | |
| camel.component.aws2-sqs.attribute-names | 消費時に受け取る属性名のリスト。複数の値はコンマで区切ることができます。 | String | |
| camel.component.aws2-sqs.auto-create-queue | キューの自動作成の設定。 | false | Boolean |
| camel.component.aws2-sqs.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.aws2-sqs.batch-separator | 文字列を渡してバッチメッセージ操作を送信するときに、区切り記号を設定します。 | , | String |
| camel.component.aws2-sqs.bridge-error-handler | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | Boolean |
| camel.component.aws2-sqs.concurrent-consumers | 複数のスレッドを使用して sqs キューをポーリングし、スループットを向上させることができます。 | 1 | Integer |
| camel.component.aws2-sqs.configuration | AWS SQS のデフォルト設定。オプションは org.apache.camel.component.aws2.sqs.Sqs2Configuration タイプです。 | Sqs2Configuration | |
| camel.component.aws2-sqs.default-visibility-timeout | デフォルトの表示タイムアウト (秒単位)。 | Integer | |
| camel.component.aws2-sqs.delay-queue | delaySeconds オプションをキューまたは単一のメッセージに適用するかどうかを定義します。 | false | Boolean |
| camel.component.aws2-sqs.delay-seconds | 数秒間メッセージの送信を遅延します。 | Integer | |
| camel.component.aws2-sqs.delete-after-read | メッセージが読まれた後、SQS からメッセージを削除します。 | true | Boolean |
| camel.component.aws2-sqs.delete-if-filtered | キー Sqs2Constants#SQS_DELETE_FILTERED (CamelAwsSqsDeleteFiltered) が true に設定されたプロパティーが交換にある場合に、DeleteMessage を SQS キューに送信するかどうか。 | true | Boolean |
| camel.component.aws2-sqs.enabled | aws2-sqs コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.aws2-sqs.extend-message-visibility | 有効にすると、スケジュールされたバックグラウンドタスクにより、SQS でのメッセージの可視性が拡張され続けます。これは、メッセージの処理に時間がかかる場合に必要です。true に設定した場合は、defaultVisibilityTimeout を設定する必要があります。詳細は、Amazon ドキュメントを参照してください。 | false | Boolean |
| camel.component.aws2-sqs.kms-data-key-reuse-period-seconds | AWS KMS を再度呼び出す前に、Amazon SQS がデータキーを再利用してメッセージを暗号化または復号できる時間の長さ (秒単位)。60 秒 (1 分) から 86,400 秒 (24 時間) までの秒を表す整数。デフォルトは 300 (5 分) です。 | Integer | |
| camel.component.aws2-sqs.kms-master-key-id | Amazon SQS の AWS 管理のカスタマーマスターキー (CMK) の ID またはカスタム CMK の ID。 | String | |
| camel.component.aws2-sqs.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.aws2-sqs.maximum-message-size | このキューの SQS メッセージに含めることができる maximumMessageSize (バイト単位)。 | Integer | |
| camel.component.aws2-sqs.message-attribute-names | 消費時に受け取るメッセージ属性名のリスト。複数の値はコンマで区切ることができます。 | String | |
| camel.component.aws2-sqs.message-deduplication-id-strategy | FIFO キューの場合のみ。メッセージに messageDeduplicationId を設定するストラテジー。useExchangeId または useContentBasedDeduplication のいずれかをオプションとして使用できます。useContentBasedDeduplication オプションでは、メッセージに messageDeduplicationId が設定されません。 | useExchangeId | String |
| camel.component.aws2-sqs.message-group-id-strategy | FIFO キューの場合のみ。メッセージに messageGroupId を設定するストラテジー。useConstant、useExchangeId、usePropertyValue のいずれかをオプションとして使用できます。usePropertyValue オプションでは、CamelAwsMessageGroupId プロパティーの値が使用されます。 | String | |
| camel.component.aws2-sqs.message-retention-period | このキューの SQS によってメッセージが保持される messageRetentionPeriod (秒単位)。 | Integer | |
| camel.component.aws2-sqs.operation | ユーザーがメッセージだけを送信したくない場合に行う操作。 | Sqs2Operations | |
| camel.component.aws2-sqs.override-endpoint | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | Boolean |
| camel.component.aws2-sqs.policy | このキューのポリシー。デフォルトではクラスパスからロードできますが、classpath:、file:、または http: の接頭辞を付けて、別のシステムからリソースをロードできます。 | String | |
| camel.component.aws2-sqs.protocol | SQS との通信に使用される基礎となるプロトコル。 | https | String |
| camel.component.aws2-sqs.proxy-host | SQS クライアントをインスタンス化するときにプロキシーホストを定義します。 | String | |
| camel.component.aws2-sqs.proxy-port | SQS クライアントをインスタンス化するときにプロキシーポートを定義します。 | Integer | |
| camel.component.aws2-sqs.proxy-protocol | SQS クライアントをインスタンス化するときにプロキシープロトコルを定義します。 | Protocol | |
| camel.component.aws2-sqs.queue-owner-a-w-s-account-id | 異なるアカウント所有者でキューを接続する必要がある場合は、キュー所有者の aws アカウント ID を指定します。 | String | |
| camel.component.aws2-sqs.queue-url | queueUrl を明示的に定義します。queueUrl に影響を与えるその他のパラメーターはすべて無視されます。このパラメーターは、テストのために SQS の仮実装 (モック) に接続すること目的としています。 | String | |
| camel.component.aws2-sqs.receive-message-wait-time-seconds | 要求で WaitTimeSeconds を指定しない場合は、キュー属性 ReceiveMessageWaitTimeSeconds を使用して待機時間を決定します。 | Integer | |
| camel.component.aws2-sqs.redrive-policy | DeadLetter キューにメッセージを送信するポリシーを指定します。Amazon ドキュメントで詳細を参照してください。 | String | |
| camel.component.aws2-sqs.region | SQS クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| camel.component.aws2-sqs.secret-key | Amazon AWS Secret Key。 | String | |
| camel.component.aws2-sqs.server-side-encryption-enabled | サーバー側の暗号化がキューで有効であるかどうかを定義します。 | false | Boolean |
| camel.component.aws2-sqs.trust-all-certificates | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | Boolean |
| camel.component.aws2-sqs.uri-endpoint-override | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| camel.component.aws2-sqs.use-default-credentials-provider | SQS クライアントが AWS infra インスタンスでクレデンシャルのロードすること、または静的クレデンシャルが渡されることを SQS クライアントが想定すべきかどうかを設定します。 | false | Boolean |
| camel.component.aws2-sqs.visibility-timeout | 受信したメッセージが、com.amazonaws.services.sqs.model.SetQueueAttributesRequest で設定する ReceiveMessage リクエストによって取得された後、後続の取得リクエストから非表示になる期間 (秒単位)。これは、defaultVisibilityTimeout とは異なる場合にのみ意味があります。キューの可視性タイムアウト属性を永続的に変更します。 | Integer | |
| camel.component.aws2-sqs.wait-time-seconds | メッセージがキューに入れられて応答に含まれるまで、ReceiveMessage アクション呼び出しが待機する時間 (0 から 20) です。 | Integer |
第12章 Azure ServiceBus リンクのコピーリンクがクリップボードにコピーされました!
Camel 3.12 以降
producer と consumer の両方がサポート対象
Azure ServiceBus を統合する azure-servicebus コンポーネント。Azure ServiceBus は、フルマネージドのエンタープライズ統合メッセージブローカーです。Service Bus は、アプリケーションとサービスを切り離すことができます。Service Bus は、データと状態の非同期転送のための信頼できる安全なプラットフォームを提供します。メッセージを使用して、異なるアプリケーションやサービス間でデータが転送されます。
前提条件
有効な Windows Azure ストレージアカウントが必要です。詳細は、Azure ドキュメントポータル を参照してください。
12.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で azure-servicebus を使用する場合は、自動設定をサポートするために次の Maven 依存関係を pom.xml に追加します。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-azure-servicebus-starter</artifactId>
</dependency>
12.2. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
12.2.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
12.2.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
12.3. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
Azure ServiceBus コンポーネントは、以下に示す 25 のオプションをサポートしています。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| amqpRetryOptions (common) | Service Bus クライアントの再試行オプションを設定します。指定しないと、デフォルトの再試行オプションが使用されます。 | AmqpRetryOptions | |
| amqpTransportType (common) | Azure Service Bus とのすべての通信が発生するトランスポートの種類を設定します。デフォルト値は AmqpTransportType#AMQP です。 列挙値:
| AMQP | AmqpTransportType |
| clientOptions (common) | このビルダーから構築されたクライアントから送信される ClientOptions を設定し、特定のプロパティーのカスタマイズを有効にし、カスタムヘッダー情報の追加をサポートします。詳細は、ClientOptions のドキュメントを参照してください。 | ClientOptions | |
| configuration (common) | コンポーネントの設定。 | ServiceBusConfiguration | |
| proxyOptions (common) | ServiceBusSenderAsyncClient に使用するプロキシー設定を設定します。プロキシーが設定されている場合は、AmqpTransportType#AMQP_WEB_SOCKETS をトランスポートタイプに使用する必要があります。 | ProxyOptions | |
| serviceBusType (common) | 必須 実行するサービスバスの接続の種類。キューは、サブスクリプションベースのモデルの典型的なキューオプションとトピックです。 列挙値:
| queue | ServiceBusType |
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| consumerOperation (consumer) | consumer で使用する目的の操作を設定します。 列挙値:
| receiveMessages | ServiceBusConsumerOperationDefinition |
| disableAutoComplete (consumer) | 受信メッセージのオートコンプリートと自動破棄を無効にします。デフォルトでは、正常に処理されたメッセージは \\{link ServiceBusReceiverAsyncClient#complete (ServiceBusReceivedMessage) completed} です。メッセージの処理時にエラーが発生した場合は、\\{link ServiceBusReceiverAsyncClient#abandon(ServiceBusReceivedMessage) abandoned} 放棄} です。 | false | boolean |
| maxAutoLockRenewDuration (consumer) | ロックの自動更新を継続する時間を設定します。Duration#ZERO または null を設定すると、自動更新が無効になります。\\{link ServiceBusReceiveMode#RECEIVE_AND_DELETE RECEIVE_AND_DELETE} モードでは、自動更新は無効になっています。 | 5m | 期間 |
| peekNumMaxMessages (consumer) | ピーク操作中にピークされるメッセージの最大数を設定します。 | Integer | |
| prefetchCount (consumer) | レシーバーのプリフェッチカウントを設定します。\\{link ServiceBusReceiveMode#PEEK_LOCK PEEK_LOCK} モードと \\{link ServiceBusReceiveMode#RECEIVE_AND_DELETE RECEIVE_AND_DELETE} モードの両方で、デフォルト値は 1 です。プリフェッチは、アプリケーションが ServiceBusReceiverAsyncClient#receiveMessages () を使用して要求する前に、ローカルでメッセージをすぐに取得できるようにすることで、メッセージフローを高速化します。ゼロ以外の値を設定すると、その数のメッセージがプリフェッチされます。値をゼロに設定すると、プリフェッチがオフになります。 | int | |
| receiverAsyncClient (consumer) | Autowired consumer がメッセージを消費するために、receiverAsyncClient を設定します。 | ServiceBusReceiverAsyncClient | |
| serviceBusReceiveMode (consumer) | 受信機の受信モードを設定します。 列挙値:
| PEEK_LOCK | ServiceBusReceiveMode |
| subQueue (consumer) | 接続先の SubQueue のタイプを設定します。 列挙値:
| SubQueue | |
| subscriptionName (consumer) | リッスンするトピックのサブスクリプションの名前を設定します。topicOrQueueName および serviceBusType=topic も設定する必要があります。このプロパティーは、serviceBusType=topic であり、consumer が使用されている場合に必要です。 | String | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| producerOperation (producer) | producer で使用する目的の操作を設定します。 列挙値:
| sendMessages | ServiceBusProducerOperationDefinition |
| scheduledEnqueueTime (producer) | メッセージが Service Bus キューまたはトピックに表示される OffsetDateTime を設定します。 | OffsetDateTime | |
| senderAsyncClient (producer) | Autowired producer で使用される SenderAsyncClient を設定します。 | ServiceBusSenderAsyncClient | |
| serviceBusTransactionContext (producer) | サービス中のトランザクションを表します。このオブジェクトにはトランザクション ID のみが含まれます。 | ServiceBusTransactionContext | |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| connectionString (security) | Service Bus 名前空間または特定の Service Bus リソースの接続文字列を設定します。 | String | |
| fullyQualifiedNamespace (security) | サービスバスの完全修飾名前空間。 | String | |
| tokenCredential (security) | com.azure.identity に実装されている、Azure AD 認証用の TokenCredential。 | TokenCredential |
12.4. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Azure ServiceBus エンドポイントは、URI 構文を使用して設定されます。
azure-servicebus:topicOrQueueName
パスおよびクエリーパラメーターを使用します。
12.4.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| topicOrQueueName (common) | serviceBusType 設定に依存する、選択されたトピック名またはキュー名。たとえば、serviceBusType=queue の場合、これはキュー名になり、serviceBusType=topic の場合、これはトピック名になります。 | String |
12.4.2. クエリーパラメーター (25 個のパラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| amqpRetryOptions (common) | Service Bus クライアントの再試行オプションを設定します。指定しないと、デフォルトの再試行オプションが使用されます。 | AmqpRetryOptions | |
| amqpTransportType (common) | Azure Service Bus とのすべての通信が発生するトランスポートの種類を設定します。デフォルト値は AmqpTransportType#AMQP です。 列挙値:
| AMQP | AmqpTransportType |
| clientOptions (common) | このビルダーから構築されたクライアントから送信される ClientOptions を設定し、特定のプロパティーのカスタマイズを有効にし、カスタムヘッダー情報の追加をサポートします。詳細は、ClientOptions のドキュメントを参照してください。 | ClientOptions | |
| proxyOptions (common) | ServiceBusSenderAsyncClient に使用するプロキシー設定を設定します。プロキシーが設定されている場合は、AmqpTransportType#AMQP_WEB_SOCKETS をトランスポートタイプに使用する必要があります。 | ProxyOptions | |
| serviceBusType (common) | 必須 実行するサービスバスの接続の種類。キューは、サブスクリプションベースのモデルの典型的なキューオプションとトピックです。 列挙値:
| queue | ServiceBusType |
| consumerOperation (consumer) | consumer で使用する目的の操作を設定します。 列挙値:
| receiveMessages | ServiceBusConsumerOperationDefinition |
| disableAutoComplete (consumer) | 受信メッセージのオートコンプリートと自動破棄を無効にします。デフォルトでは、正常に処理されたメッセージは \\{link ServiceBusReceiverAsyncClient#complete (ServiceBusReceivedMessage) completed} です。メッセージの処理時にエラーが発生した場合は、\\{link ServiceBusReceiverAsyncClient#abandon(ServiceBusReceivedMessage) abandoned} 放棄} です。 | false | boolean |
| maxAutoLockRenewDuration (consumer) | ロックの自動更新を継続する時間を設定します。Duration#ZERO または null を設定すると、自動更新が無効になります。\\{link ServiceBusReceiveMode#RECEIVE_AND_DELETE RECEIVE_AND_DELETE} モードでは、自動更新は無効になっています。 | 5m | 期間 |
| peekNumMaxMessages (consumer) | ピーク操作中にピークされるメッセージの最大数を設定します。 | Integer | |
| prefetchCount (consumer) | レシーバーのプリフェッチカウントを設定します。\\{link ServiceBusReceiveMode#PEEK_LOCK PEEK_LOCK} モードと \\{link ServiceBusReceiveMode#RECEIVE_AND_DELETE RECEIVE_AND_DELETE} モードの両方で、デフォルト値は 1 です。プリフェッチは、アプリケーションが ServiceBusReceiverAsyncClient#receiveMessages () を使用して要求する前に、ローカルでメッセージをすぐに取得できるようにすることで、メッセージフローを高速化します。ゼロ以外の値を設定すると、その数のメッセージがプリフェッチされます。値をゼロに設定すると、プリフェッチがオフになります。 | int | |
| receiverAsyncClient (consumer) | Autowired consumer がメッセージを消費するために、receiverAsyncClient を設定します。 | ServiceBusReceiverAsyncClient | |
| serviceBusReceiveMode (consumer) | 受信機の受信モードを設定します。 列挙値:
| PEEK_LOCK | ServiceBusReceiveMode |
| subQueue (consumer) | 接続先の SubQueue のタイプを設定します。 列挙値:
| SubQueue | |
| subscriptionName (consumer) | リッスンするトピックのサブスクリプションの名前を設定します。topicOrQueueName および serviceBusType=topic も設定する必要があります。このプロパティーは、serviceBusType=topic であり、consumer が使用されている場合に必要です。 | String | |
| bridgeErrorHandler (consumer (advanced)) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| exceptionHandler (consumer (advanced)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (advanced)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| producerOperation (producer) | producer で使用する目的の操作を設定します。 列挙値:
| sendMessages | ServiceBusProducerOperationDefinition |
| scheduledEnqueueTime (producer) | メッセージが Service Bus キューまたはトピックに表示される OffsetDateTime を設定します。 | OffsetDateTime | |
| senderAsyncClient (producer) | Autowired producer で使用される SenderAsyncClient を設定します。 | ServiceBusSenderAsyncClient | |
| serviceBusTransactionContext (producer) | サービス中のトランザクションを表します。このオブジェクトにはトランザクション ID のみが含まれます。 | ServiceBusTransactionContext | |
| lazyStartProducer (producer (advanced)) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| connectionString (security) | Service Bus 名前空間または特定の Service Bus リソースの接続文字列を設定します。 | String | |
| fullyQualifiedNamespace (security) | サービスバスの完全修飾名前空間。 | String | |
| tokenCredential (security) | com.azure.identity に実装されている、Azure AD 認証用の TokenCredential。 | TokenCredential |
12.5. 非同期 consumer と producer リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントは、非同期の consumer と producer を実装します。これにより、camel ルートは、スレッドをブロックすることなく、イベントを非同期に消費および生成できます。
12.6. メッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
Azure ServiceBus コンポーネントは、以下に示す 25 個のメッセージヘッダーをサポートしています。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| CamelAzureServiceBusApplicationProperties (common) | producer と consumer によってそれぞれ送受信されるメッセージのアプリケーションプロパティー (カスタムプロパティーとも呼ばれます)。 | Map | |
| CamelAzureServiceBusContentType (consumer) 定数: CONTENT_TYPE | メッセージのコンテンツタイプを取得します。 | String | |
| CamelAzureServiceBusCorrelationId (consumer) 定数: CORRELATION_ID | 相関識別子を取得します。 | String | |
| CamelAzureServiceBusDeadLetterErrorDescription (consumer) | デッドレターキューに追加されたメッセージの説明を取得します。 | String | |
| CamelAzureServiceBusDeadLetterReason (consumer) | メッセージがデッドレターキューに追加された理由を取得します。 | String | |
| CamelAzureServiceBusDeadLetterSource (consumer) | このメッセージがキューに格納されたキューまたはサブスクリプションの名前を取得してから、デッドレターに追加されます。 | String | |
| CamelAzureServiceBusDeliveryCount (consumer) 定数: DELIVERY_COUNT | このメッセージがクライアントに配信された回数を取得します。 | long | |
| CamelAzureServiceBusEnqueuedSequenceNumber (consumer) | Service Bus によってメッセージに割り当てられた、キューに入れられたシーケンス番号を取得します。 | long | |
| CamelAzureServiceBusEnqueuedTime (consumer) 定数: ENQUEUED_TIME | このメッセージが Azure Service Bus でエンキューされた日時を取得します。 | OffsetDateTime | |
| CamelAzureServiceBusExpiresAt (consumer) 定数: EXPIRES_AT | このメッセージの有効期限が切れる日時を取得します。 | OffsetDateTime | |
| CamelAzureServiceBusLockToken (consumer) 定数: LOCK_TOKEN | 現在のメッセージのロックトークンを取得します。 | String | |
| CamelAzureServiceBusLockedUntil (consumer) 定数: LOCKED_UNTIL | このメッセージのロックが切れる日時を取得します。 | OffsetDateTime | |
| CamelAzureServiceBusMessageId (consumer) 定数: MESSAGE_ID | メッセージの識別子を取得します。 | String | |
| CamelAzureServiceBusPartitionKey (consumer) 定数: PARTITION_KEY | パーティション分割されたエンティティーにメッセージを送信するためのパーティションキーを取得します。 | String | |
| CamelAzureServiceBusRawAmqpMessage (consumer) 定数: RAW_AMQP_MESSAGE | AMQP プロトコルで定義されたメッセージの表現。 | AmqpAnnotatedMessage | |
| CamelAzureServiceBusReplyTo (consumer) 定数: REPLY_TO | 返信を送信するエンティティーのアドレスを取得します。 | String | |
| CamelAzureServiceBusReplyToSessionId (consumer) | ReplyTo アドレスを拡張するセッション識別子を取得または設定します。 | String | |
| CamelAzureServiceBusSequenceNumber (consumer) 定数: SEQUENCE_NUMBER | Service Bus によってメッセージに割り当てられた一意の番号を取得します。 | long | |
| CamelAzureServiceBusSessionId (consumer) 定数: SESSION_ID | メッセージのセッション ID を取得します。 | String | |
| CamelAzureServiceBusSubject (consumer) 定数: SUBJECT | メッセージのサブジェクトを取得します。 | String | |
| CamelAzureServiceBusTimeToLive (consumer) 定数: TIME_TO_LIVE | このメッセージが期限切れになるまでの期間を取得します。 | 期間 | |
| CamelAzureServiceBusTo (consumer) 定数: TO | アドレスを取得します。 | String | |
| CamelAzureServiceBusScheduledEnqueueTime (common) | (producer) メッセージが Service Bus キューまたはトピックに表示される OffsetDateTime をオーバーライドします。(consumer) このメッセージのスケジュールされたエンキュー時刻を取得します。 | OffsetDateTime | |
| CamelAzureServiceBusServiceBusTransactionContext (producer) | サービス中のトランザクションをオーバーライドします。このオブジェクトにはトランザクション ID のみが含まれます。 | ServiceBusTransactionContext | |
| CamelAzureServiceBusProducerOperation (producer) | producer で使用する目的の操作をオーバーライドします。 列挙値:
| ServiceBusProducerOperationDefinition |
12.6.1. メッセージボディー リンクのコピーリンクがクリップボードにコピーされました!
producer では、このコンポーネントは String 型または List<String> のメッセージ本文を受け入れてバッチメッセージを送信します。
consumer では、返されるメッセージ本文は String.type になります。
12.6.2. Azure ServiceBus producer の操作 リンクのコピーリンクがクリップボードにコピーされました!
| 操作 | 説明 |
|---|---|
|
| バッチアプローチを使用して、一連のメッセージを Service Bus キューまたはトピックに送信します。 |
|
| この送信者が接続されている Azure Service Bus エンティティーにスケジュールされたメッセージを送信します。スケジュールされたメッセージはキューに入れられ、スケジュールされたエンキュー時間にのみ受信者が利用できるようになります。 |
12.6.3. Azure ServiceBus consumer の操作 リンクのコピーリンクがクリップボードにコピーされました!
| 操作 | 説明 |
|---|---|
|
| Service Bus エンティティーから <b>無限</b> のメッセージストリームを受信します。 |
|
| 受信側またはメッセージソースの状態を変更せずに、アクティブメッセージの次のバッチを読み取ります。 |
12.6.3.1. 例 リンクのコピーリンクがクリップボードにコピーされました!
-
sendMessages
from("direct:start")
.process(exchange -> {
final List<Object> inputBatch = new LinkedList<>();
inputBatch.add("test batch 1");
inputBatch.add("test batch 2");
inputBatch.add("test batch 3");
inputBatch.add(123456);
exchange.getIn().setBody(inputBatch);
})
.to("azure-servicebus:test//?connectionString=test")
.to("mock:result");
-
scheduleMessages
from("direct:start")
.process(exchange -> {
final List<Object> inputBatch = new LinkedList<>();
inputBatch.add("test batch 1");
inputBatch.add("test batch 2");
inputBatch.add("test batch 3");
inputBatch.add(123456);
exchange.getIn().setHeader(ServiceBusConstants.SCHEDULED_ENQUEUE_TIME, OffsetDateTime.now());
exchange.getIn().setBody(inputBatch);
})
.to("azure-servicebus:test//?connectionString=test&producerOperation=scheduleMessages")
.to("mock:result");
-
receiveMessages
from("azure-servicebus:test//?connectionString=test")
.log("${body}")
.to("mock:result");
-
peekMessages
from("azure-servicebus:test//?connectionString=test&consumerOperation=peekMessages&peekNumMaxMessages=3")
.log("${body}")
.to("mock:result");
12.7. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 26 個のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.azure-servicebus.amqp-retry-options | Service Bus クライアントの再試行オプションを設定します。指定しないと、デフォルトの再試行オプションが使用されます。オプションは com.azure.core.amqp.AmqpRetryOptions 型です。 | AmqpRetryOptions | |
| camel.component.azure-servicebus.amqp-transport-type | Azure Service Bus とのすべての通信が発生するトランスポートの種類を設定します。デフォルト値は AmqpTransportType#AMQP です。 | AmqpTransportType | |
| camel.component.azure-servicebus.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.azure-servicebus.bridge-error-handler | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | Boolean |
| camel.component.azure-servicebus.client-options | このビルダーから構築されたクライアントから送信される ClientOptions を設定し、特定のプロパティーのカスタマイズを有効にし、カスタムヘッダー情報の追加をサポートします。詳細は、ClientOptions のドキュメントを参照してください。オプションは com.azure.core.util.ClientOptions 型です。 | ClientOptions | |
| camel.component.azure-servicebus.configuration | コンポーネントの設定。オプションは org.apache.camel.component.azure.servicebus.ServiceBusConfiguration タイプです。 | ServiceBusConfiguration | |
| camel.component.azure-servicebus.connection-string | Service Bus 名前空間または特定の Service Bus リソースの接続文字列を設定します。 | String | |
| camel.component.azure-servicebus.consumer-operation | consumer で使用する目的の操作を設定します。 | ServiceBusConsumerOperationDefinition | |
| camel.component.azure-servicebus.disable-auto-complete | 受信メッセージのオートコンプリートと自動破棄を無効にします。デフォルトでは、正常に処理されたメッセージは \\{link ServiceBusReceiverAsyncClient#complete (ServiceBusReceivedMessage) completed} です。メッセージの処理時にエラーが発生した場合は、\\{link ServiceBusReceiverAsyncClient#abandon(ServiceBusReceivedMessage) abandoned} 放棄} です。 | false | Boolean |
| camel.component.azure-servicebus.enabled | azure-servicebus コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.azure-servicebus.fully-qualified-namespace | サービスバスの完全修飾名前空間。 | String | |
| camel.component.azure-servicebus.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.azure-servicebus.max-auto-lock-renew-duration | ロックの自動更新を継続する時間を設定します。Duration#ZERO または null を設定すると、自動更新が無効になります。\\{link ServiceBusReceiveMode#RECEIVE_AND_DELETE RECEIVE_AND_DELETE} モードでは、自動更新は無効になっています。オプションは java.time.Duration タイプです。 | 期間 | |
| camel.component.azure-servicebus.peek-num-max-messages | ピーク操作中にピークされるメッセージの最大数を設定します。 | Integer | |
| camel.component.azure-servicebus.prefetch-count | レシーバーのプリフェッチカウントを設定します。\\{link ServiceBusReceiveMode#PEEK_LOCK PEEK_LOCK} モードと \\{link ServiceBusReceiveMode#RECEIVE_AND_DELETE RECEIVE_AND_DELETE} モードの両方で、デフォルト値は 1 です。プリフェッチは、アプリケーションが ServiceBusReceiverAsyncClient#receiveMessages () を使用して要求する前に、ローカルでメッセージをすぐに取得できるようにすることで、メッセージフローを高速化します。ゼロ以外の値を設定すると、その数のメッセージがプリフェッチされます。値をゼロに設定すると、プリフェッチがオフになります。 | Integer | |
| camel.component.azure-servicebus.producer-operation | producer で使用する目的の操作を設定します。 | ServiceBusProducerOperationDefinition | |
| camel.component.azure-servicebus.proxy-options | ServiceBusSenderAsyncClient に使用するプロキシー設定を設定します。プロキシーが設定されている場合は、AmqpTransportType#AMQP_WEB_SOCKETS をトランスポートタイプに使用する必要があります。オプションは com.azure.core.amqp.ProxyOptions 型です。 | ProxyOptions | |
| camel.component.azure-servicebus.receiver-async-client | consumer がメッセージを消費するために、receiverAsyncClient を設定します。オプションは com.azure.messaging.servicebus.ServiceBusReceiverAsyncClient 型です。 | ServiceBusReceiverAsyncClient | |
| camel.component.azure-servicebus.scheduled-enqueue-time | メッセージが Service Bus キューまたはトピックに表示される OffsetDateTime を設定します。オプションは java.time.OffsetDateTime 型です。 | OffsetDateTime | |
| camel.component.azure-servicebus.sender-async-client | producer で使用される SenderAsyncClient を設定します。オプションは com.azure.messaging.servicebus.ServiceBusSenderAsyncClient 型です。 | ServiceBusSenderAsyncClient | |
| camel.component.azure-servicebus.service-bus-receive-mode | 受信機の受信モードを設定します。 | ServiceBusReceiveMode | |
| camel.component.azure-servicebus.service-bus-transaction-context | サービス中のトランザクションを表します。このオブジェクトにはトランザクション ID のみが含まれます。オプションは com.azure.messaging.servicebus.ServiceBusTransactionContext 型です。 | ServiceBusTransactionContext | |
| camel.component.azure-servicebus.service-bus-type | 実行するサービスバスの接続の種類。キューは、サブスクリプションベースのモデルの典型的なキューオプションとトピックです。 | ServiceBusType | |
| camel.component.azure-servicebus.sub-queue | 接続先の SubQueue のタイプを設定します。 | SubQueue | |
| camel.component.azure-servicebus.subscription-name | リッスンするトピックのサブスクリプションの名前を設定します。topicOrQueueName および serviceBusType=topic も設定する必要があります。このプロパティーは、serviceBusType=topic であり、consumer が使用されている場合に必要です。 | String | |
| camel.component.azure-servicebus.token-credential | com.azure.identity に実装されている、Azure AD 認証用の TokenCredential。オプションは com.azure.core.credential.TokenCredential 型です。 | TokenCredential |
第13章 Azure Storage Blob Service リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
Azure Storage Blob コンポーネントは、Azure API v12 を使用して Azure Storage Blob Service から Blob を格納および取得するために使用されます。ただし、v12 より上のバージョンの場合、破壊的な変更がどの程度発生するかによって、このコンポーネントがこれらの変更を採用できるかどうかを確認します。
前提条件
有効な Windows Azure ストレージアカウントが必要です。詳細は、Azure ドキュメントポータル を参照してください。
13.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で azure-storage-blob を使用する場合は、自動設定をサポートするために次の Maven 依存関係を pom.xml に追加します。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-azure-storage-blob-starter</artifactId>
</dependency>
13.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
azure-storage-blob://accountName[/containerName][?options]
consumer の場合、accountName、containerName が必要です。producer の場合、要求される操作によって異なります。たとえば、操作がコンテナーレベルである場合、たとえば createContainer の場合、accountName と containerName のみが必要ですが、Blob レベルで操作が要求される場合、たとえば、getBlob、accountName、containerName、および blobName は必須です。
Blob がまだ存在しない場合は作成されます。URI には、次の形式でクエリーオプションを追加できます。
?options=value&option2=value&…
13.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
13.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
13.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
13.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
Azure Storage Blob Service コンポーネントは、以下に示す 35 のオプションをサポートしています。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| blobName (common) | コンテナーから特定の Blob を使用するための Blob 名。ただし、producer では、Blob レベルでの操作にのみ必要です。 | String | |
| blobOffset (common) | アップロードまたはダウンロード操作の Blob オフセットを設定します。デフォルトは 0 です。 | 0 | long |
| blobType (common) | Blob の種類ごとに適切な設定を開始するための Blob の種類。 列挙値:
| blockblob | BlobType |
| closeStreamAfterRead (common) | 読み取り後にストリームを閉じるか、開いたままにします。デフォルトは true です。 | true | boolean |
| configuration (common) | コンポーネントの設定。 | BlobConfiguration | |
| credentials (common) | StorageSharedKeyCredential を挿入して Azure クライアントを作成できます。これには重要な認証情報が保持されます。 | StorageSharedKeyCredential | |
| credentialType (common) | 採用する認証情報戦略を決定します。 列挙値:
| AZURE_IDENTITY | CredentialType |
| dataCount (common) | 範囲に含めるバイト数。指定する場合は、0 以上である必要があります。 | Long | |
| fileDir (common) | ダウンロードされた Blob が保存されるファイルディレクトリー。これは producer と consumer の両方で使用できます。 | String | |
| maxResultsPerPage (common) | すべての BlobPrefix 要素を含め、返される Blob の最大数を指定します。要求で maxResultsPerPage が指定されていないか、5,000 を超える値が指定されている場合、サーバーは最大 5,000 項目を返します。 | Integer | |
| maxRetryRequests (common) | レスポンスのボディーからデータを読み取るときに作成される追加の HTTP Get 要求の最大数を指定します。 | 0 | int |
| prefix (common) | 結果をフィルター処理して、名前が指定された接頭辞で始まる Blob のみを返します。すべての Blob を返すには null の場合があります。 | String | |
| regex (common) | 結果をフィルタリングして、指定された正規表現と名前が一致する Blob のみを返します。接頭辞と正規表現の両方が設定されている場合は、すべてを返すために null になる場合があります。正規表現が優先され、接頭辞は無視されます。 | String | |
| sasToken (common) | Shared Access Signature を使用する場合は SAS トークンを設定する | String | |
| serviceClient (common) | クライアントをストレージアカウントに Autowired します。このクライアントは、特定のストレージアカウントに関する状態を保持しませんが、サービス上のリソースに適切な要求を送信する便利な方法です。また、Blob およびコンテナーへの URL を作成するために使用することもできます。このクライアントには、サービスアカウントに対する操作が含まれています。コンテナーに対する操作は、BlobServiceClient#getBlobContainerClient(String) を介して BlobContainerClient で利用でき、ブロブに対する操作は、BlobContainerClient#getBlobClient(String) を介して BlobClient で利用できます。 | BlobServiceClient | |
| timeout (common) | それを超えると RuntimeException が発生する任意のタイムアウト値。 | 期間 | |
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| blobSequenceNumber (producer) | リクエストの追跡に使用できるユーザー制御の値。シーケンス番号の値は、0 から 263 - 1 の間でなければなりません。デフォルト値は 0 です。 | 0 | Long |
| blockListType (producer) | 返すブロックのタイプを指定します。 列挙値:
| COMMITTED | BlockListType |
| changeFeedContext (producer) | getChangeFeed producer オペレーションを使用する場合は、これにより、サービス呼び出し中に Http パイプラインを介して渡される追加のコンテキストが提供されます。 | コンテキスト | |
| changeFeedEndTime (producer) | getChangeFeed producer オペレーションを使用する場合は、これにより結果がフィルター処理され、終了時刻のほぼ前にイベントが返されます。注意: 次の 1 時間に属するいくつかのイベントも返される可能性があります。この時間に属するいくつかのイベントが欠落している可能性があります。その時間のすべてのイベントが確実に返されるようにするには、終了時間を 1 時間単位で切り上げます。 | OffsetDateTime | |
| changeFeedStartTime (producer) | getChangeFeed producer 操作を使用する場合は、これにより結果がフィルター処理され、開始時刻のほぼ後にイベントが返されます。注意: 前の時間に属するいくつかのイベントも返される可能性があります。この時間に属するいくつかのイベントが欠落している可能性があります。その時間のすべてのイベントが確実に返されるようにするには、開始時間を 1 時間単位で切り捨てます。 | OffsetDateTime | |
| closeStreamAfterWrite (producer) | 書き込み後にストリームを閉じるか、開いたままにします。デフォルトは true です。 | true | boolean |
| commitBlockListLater (producer) | true に設定されていると、ステージングされたブロックは直接コミットされません。 | true | boolean |
| createAppendBlob (producer) | true に設定されていると、追加ブロックのコミット時に追加ブロックが作成されます。 | true | boolean |
| createPageBlob (producer) | true に設定すると、ページブロブのアップロード時にページ Blob が作成されます。 | true | boolean |
| downloadLinkExpiration (producer) | URL ダウンロードリンクのデフォルトの有効期限 (ミリ秒) をオーバーライドします。 | Long | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| operation (producer) | producer のこのコンポーネントで使用できる Blob 操作。 列挙値:
| listBlobContainers | BlobOperationsDefinition |
| pageBlobSize (producer) | ページ Blob の最大サイズを 8 TB まで指定します。ページ Blob のサイズは、512 バイトの境界に合わせる必要があります。 | 512 | Long |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| healthCheckConsumerEnabled (health) | このコンポーネントからのすべてのコンシューマーベースのヘルスチェックを有効または無効にするために使用します。 | true | boolean |
| healthCheckProducerEnabled (health) | このコンポーネントからのすべてのプロデューサーベースのヘルスチェックを有効または無効にするために使用します。注記: Camel はデフォルトで、すべてのプロデューサーベースのヘルスチェックを無効にしています。camel.health.producersEnabled=true を設定することで、プロデューサーチェックをグローバルに有効にできます。 | true | boolean |
| accessKey (security) | Azure Blob サービスでの認証に使用される、関連付けられた Azure アカウント名のアクセスキー。 | String | |
| sourceBlobAccessKey (security) | ソース Blob アクセスキー: copyblob 操作では、コピーするソース Blob の accessKey が必要です。accessKey をヘッダーとして渡すと、安全ではないため、キーとして設定できます。 | String |
13.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Azure Storage Blob Service エンドポイントは、URI 構文を使用して設定されます。
azure-storage-blob:accountName/containerName
パスおよびクエリーパラメーターを使用します。
13.5.1. パスパラメーター (2 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| accountName (common) | Azure Blob サービスでの認証に使用される Azure アカウント名。 | String | |
| containerName (common) | Blob コンテナー名。 | String |
13.5.2. クエリーパラメーター (50 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| blobName (common) | コンテナーから特定の Blob を使用するための Blob 名。ただし、producer では、Blob レベルでの操作にのみ必要です。 | String | |
| blobOffset (common) | アップロードまたはダウンロード操作の Blob オフセットを設定します。デフォルトは 0 です。 | 0 | long |
| blobServiceClient (common) | ストレージアカウントへのクライアント。このクライアントは、特定のストレージアカウントに関する状態を保持しませんが、サービス上のリソースに適切な要求を送信する便利な方法です。また、Blob およびコンテナーへの URL を作成するために使用することもできます。このクライアントには、サービスアカウントに対する操作が含まれています。コンテナーに対する操作は、getBlobContainerClient(String) を介して BlobContainerClient で利用でき、ブロブに対する操作は、getBlobContainerClient(String).getBlobClient(String) を介して BlobClient で利用できます。 | BlobServiceClient | |
| blobType (common) | Blob の種類ごとに適切な設定を開始するための Blob の種類。 列挙値:
| blockblob | BlobType |
| closeStreamAfterRead (common) | 読み取り後にストリームを閉じるか、開いたままにします。デフォルトは true です。 | true | boolean |
| credentials (common) | StorageSharedKeyCredential を挿入して Azure クライアントを作成できます。これには重要な認証情報が保持されます。 | StorageSharedKeyCredential | |
| credentialType (common) | 採用する認証情報戦略を決定します。 列挙値:
| AZURE_IDENTITY | CredentialType |
| dataCount (common) | 範囲に含めるバイト数。指定する場合は、0 以上である必要があります。 | Long | |
| fileDir (common) | ダウンロードされた Blob が保存されるファイルディレクトリー。これは producer と consumer の両方で使用できます。 | String | |
| maxResultsPerPage (common) | すべての BlobPrefix 要素を含め、返される Blob の最大数を指定します。要求で maxResultsPerPage が指定されていないか、5,000 を超える値が指定されている場合、サーバーは最大 5,000 項目を返します。 | Integer | |
| maxRetryRequests (common) | レスポンスのボディーからデータを読み取るときに作成される追加の HTTP Get 要求の最大数を指定します。 | 0 | int |
| prefix (common) | 結果をフィルター処理して、名前が指定された接頭辞で始まる Blob のみを返します。すべての Blob を返すには null の場合があります。 | String | |
| regex (common) | 結果をフィルタリングして、指定された正規表現と名前が一致する Blob のみを返します。接頭辞と正規表現の両方が設定されている場合は、すべてを返すために null になる場合があります。正規表現が優先され、接頭辞は無視されます。 | String | |
| sasToken (common) | Shared Access Signature を使用する場合は、SAS トークンを設定します。 | String | |
| serviceClient (common) | クライアントをストレージアカウントに Autowired します。このクライアントは、特定のストレージアカウントに関する状態を保持しませんが、サービス上のリソースに適切な要求を送信する便利な方法です。また、Blob およびコンテナーへの URL を作成するために使用することもできます。このクライアントには、サービスアカウントに対する操作が含まれています。コンテナーに対する操作は、BlobServiceClient#getBlobContainerClient(String) を介して BlobContainerClient で利用でき、ブロブに対する操作は、BlobContainerClient#getBlobClient(String) を介して BlobClient で利用できます。 | BlobServiceClient | |
| timeout (common) | それを超えると RuntimeException が発生する任意のタイムアウト値。 | 期間 | |
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| sendEmptyMessageWhenIdle (consumer) | ポーリング consumer がファイルをポーリングしなかった場合、このオプションを有効にして、代わりに空のメッセージ (ボディーなし) を送信できます。 | false | boolean |
| exceptionHandler (consumer (advanced)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (advanced)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| pollStrategy (consumer (advanced)) | プラグ可能な org.apache.camel.PollingConsumerPollingStrategy を使用すると、エクスチェンジが作成され、Camel でルーティングされる前に、通常はポーリング操作中に発生するエラー処理を制御するカスタム実装が提供できます。 | PollingConsumerPollStrategy | |
| blobSequenceNumber (producer) | リクエストの追跡に使用できるユーザー制御の値。シーケンス番号の値は、0 から 263 - 1 の間でなければなりません。デフォルト値は 0 です。 | 0 | Long |
| blockListType (producer) | 返すブロックのタイプを指定します。 列挙値:
| COMMITTED | BlockListType |
| changeFeedContext (producer) | getChangeFeed producer オペレーションを使用する場合は、これにより、サービス呼び出し中に Http パイプラインを介して渡される追加のコンテキストが提供されます。 | コンテキスト | |
| changeFeedEndTime (producer) | getChangeFeed producer オペレーションを使用する場合は、これにより結果がフィルター処理され、終了時刻のほぼ前にイベントが返されます。注意: 次の 1 時間に属するいくつかのイベントも返される可能性があります。この時間に属するいくつかのイベントが欠落している可能性があります。その時間のすべてのイベントが確実に返されるようにするには、終了時間を 1 時間単位で切り上げます。 | OffsetDateTime | |
| changeFeedStartTime (producer) | getChangeFeed producer 操作を使用する場合は、これにより結果がフィルター処理され、開始時刻のほぼ後にイベントが返されます。注意: 前の時間に属するいくつかのイベントも返される可能性があります。この時間に属するいくつかのイベントが欠落している可能性があります。その時間のすべてのイベントが確実に返されるようにするには、開始時間を 1 時間単位で切り捨てます。 | OffsetDateTime | |
| closeStreamAfterWrite (producer) | 書き込み後にストリームを閉じるか、開いたままにします。デフォルトは true です。 | true | boolean |
| commitBlockListLater (producer) | true に設定されていると、ステージングされたブロックは直接コミットされません。 | true | boolean |
| createAppendBlob (producer) | true に設定されていると、追加ブロックのコミット時に追加ブロックが作成されます。 | true | boolean |
| createPageBlob (producer) | true に設定すると、ページブロブのアップロード時にページ Blob が作成されます。 | true | boolean |
| downloadLinkExpiration (producer) | URL ダウンロードリンクのデフォルトの有効期限 (ミリ秒) をオーバーライドします。 | Long | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| operation (producer) | producer のこのコンポーネントで使用できる Blob 操作。 列挙値:
| listBlobContainers | BlobOperationsDefinition |
| pageBlobSize (producer) | ページ Blob の最大サイズを 8 TB まで指定します。ページ Blob のサイズは、512 バイトの境界に合わせる必要があります。 | 512 | Long |
| backoffErrorThreshold (scheduler) | backoffMultipler が開始する前に発生する必要がある後続のエラーポーリング (エラーによって失敗した) の数。 | int | |
| backoffIdleThreshold (scheduler) | backoffMultipler が開始する前に発生する必要がある後続のアイドルポーリングの数。 | int | |
| backoffMultiplier (scheduler) | 後続のアイドル状態/エラーが連続して発生した場合に、スケジュールされたポーリング consumer のバックオフを許可します。乗数は、実際に次の試行が行われる前にスキップされるポーリングの数です。このオプションが使用されている場合は、backoffIdleThreshold や backoffErrorThreshold も設定する必要があります。 | int | |
| delay (scheduler) | 次のポーリングまでの時間 (ミリ秒単位)。 | 500 | long |
| greedy (scheduler) | greedy が有効で、以前の実行が 1 つ以上のメッセージをポーリングした場合、ScheduledPollConsumer は即座に再度実行されます。 | false | boolean |
| initialDelay (scheduler) | 最初のポーリングが開始されるまでの時間 (ミリ秒単位)。 | 1000 | long |
| repeatCount (scheduler) | 実行の最大数を指定します。そのため、これを 1 に設定するとスケジューラーは 1 度だけ実行されます。これを 5 に設定した場合、5 回だけ実行されます。0 または負の値を設定すると、無制限に実行されます。 | 0 | long |
| runLoggingLevel (scheduler) | consumer はポーリング時に開始/完了のログ行を記録します。このオプションを使用すると、ログレベルを設定できます。 列挙値:
| TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | consumer に使用するカスタム/共有スレッドプールを設定できます。デフォルトでは、各 consumer に独自の単一スレッドのスレッドプールがあります。 | ScheduledExecutorService | |
| scheduler (scheduler) | camel-spring または camel-quartz コンポーネントから cron スケジューラーを使用します。スケジューラーにビルドされた値 spring または quartz を使用。 | none | オブジェクト |
| schedulerProperties (scheduler) | カスタムスケジューラーまたは Quartz や Spring ベースのスケジューラーを使用する場合に、追加のプロパティーを設定します。 | Map | |
| startScheduler (scheduler) | スケジューラーを自動起動するかどうか。 | true | boolean |
| timeUnit (scheduler) | initialDelay および delay オプションの時間単位。 列挙値:
| MILLISECONDS | TimeUnit |
| useFixedDelay (scheduler) | 固定遅延または固定レートを使用するかどうかを制御します。詳細は、JDK の ScheduledExecutorService を参照してください。 | true | boolean |
| accessKey (security) | Azure Blob サービスでの認証に使用される、関連付けられた Azure アカウント名のアクセスキー。 | String | |
| sourceBlobAccessKey (security) | ソース Blob アクセスキー: copyblob 操作では、コピーするソース Blob の accessKey が必要です。accessKey をヘッダーとして渡すと、安全ではないため、キーとして設定できます。 | String |
必須情報オプション
このコンポーネントを使用するには、必要な Azure 認証情報を提供するための 3 つのオプションがあります。
-
blobServiceClient に挿入できる BlobServiceClient インスタンスへのリンクを提供します。注: 特定のクライアントを作成する必要はありません (例:
BlockBlobClient)。BlobServiceClientは、下位レベルのクライアントを取得するために使用できる上位レベルを表します。 -
credentialType=AZURE_IDENTITYを指定し、必要な 環境変数 を提供する場合は、Azure ID を提供します。これにより、ユーザー名とパスワードだけでなく、シークレット/証明書を使用したサービスプリンシパル (アプリケーション登録など) の認証が可能になります。これはデフォルトの認証ストラテジーであることに注意してください。 -
credentialType=SHARED_ACCOUNT_KEYを指定し、Azure アカウントのaccountNameとaccessKeyを指定すると、共有ストレージアカウントキーが提供され、これが開始する最も簡単な方法です。accessKeyは、Azure portal から生成できます。 -
credentialType=SHARED_KEY_CREDENTIALを指定し、認証情報オプションに挿入できる StorageSharedKeyCredential インスタンスを提供する場合は、共有ストレージアカウントキーを提供します。 -
Azure SAS 経由で、
credentialType=AZURE_SASを指定し、sasToken パラメーターを通じて SAS トークンパラメーターを提供する場合。
13.6. 使用方法 リンクのコピーリンクがクリップボードにコピーされました!
たとえば、camelazure ストレージアカウントの container1 にあるブロック blob hello.txt から blob コンテンツをダウンロードするには、次のスニペットを使用します。
from("azure-storage-blob://camelazure/container1?blobName=hello.txt&credentialType=SHARED_ACCOUNT_KEY&accessKey=RAW(yourAccessKey)").to("file://blobdirectory");
13.6.1. メッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
Azure Storage Blob Service コンポーネントは、以下にリストされている 63 個のメッセージヘッダーをサポートしています。
| ヘッダー | 変数名 | 型 | 操作 | 説明 |
|---|---|---|---|---|
|
|
|
| すべて | それを超えると {@link RuntimeException} が発生する任意のタイムアウト値。 |
|
|
|
| コンテナーと Blob に関する操作 | コンテナーまたは Blob に関連付けるメタデータ。 |
|
|
|
|
|
このコンテナー内のデータを公開する方法を指定します。パブリックアクセスがない場合は |
|
|
|
| コンテナーと Blob に関する操作 | これには、さまざまな要求の正常な動作を現在の条件に制限する値が含まれています。これらの条件は完全にオプションです。 |
|
|
|
|
| 特定のブロブを一覧表示するための詳細 |
|
|
|
|
| 結果をフィルター処理して、名前が指定された接頭辞で始まる Blob のみを返します。すべての Blob を返すには null の場合があります。 |
|
|
|
|
| すべての BlobPrefix 要素を含め、返される Blob の最大数を指定します。要求で maxResultsPerPage が指定されていないか、5,000 を超える値が指定されている場合、サーバーは最大 5,000 項目を返します。 |
|
|
|
|
| {@link BlobContainerClient} オブジェクトで listBlobsFlatSegment への呼び出しの動作を設定するために使用できるオプションを定義します。 |
|
|
|
|
| 一連の操作の追加パラメーター。 |
|
|
|
|
| AccessTier の値を定義します。 |
|
|
|
| Blob のアップロードに関連するほとんどの操作 | ブロックコンテンツの MD5 ハッシュ。このハッシュは、転送中にブロックの整合性を検証するために使用されます。このヘッダーが指定されている場合、ストレージサービスは、到着したコンテンツのハッシュとこのヘッダー値を比較します。この MD5 ハッシュは Blob には保存されないことに注意してください。2 つのハッシュが一致しない場合、操作は失敗します。 |
|
|
|
| ページブロブに関連する操作 | {@link PageRange} オブジェクト。ページを 512 バイトの境界に揃える必要がある場合、開始オフセットは 512 の係数である必要があり、終了オフセットは 512 - 1 の係数である必要があります。有効なバイト範囲の例は、0 - 511、512 - 1023 などです。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 返すブロックのタイプを指定します。 |
|
|
|
|
| ページ Blob の最大サイズを 8 TB まで指定します。ページ Blob のサイズは、512 バイトの境界に合わせる必要があります。 |
|
|
|
|
| リクエストの追跡に使用できるユーザー制御の値。シーケンス番号の値は、0 から 2^63 - 1 の間でなければなりません。デフォルト値は 0 です。 |
|
|
|
|
| この Blob のスナップショットを削除するための動作を指定します。\{@code Include} は、ベース Blob とすべてのスナップショットを削除します。\{@code Only} はスナップショットのみを削除します。スナップショットが削除されている場合は、null を渡す必要があります。 |
|
|
|
|
| サービスによって返されるデータを指定する {@link ListBlobContainersOptions}。 |
|
|
|
|
| ファイルへのダウンロードに使用する {@link ParallelTransferOptions}。並列転送数パラメーターは無視されます。 |
|
|
|
|
| ダウンロードした Blob が保存されるファイルディレクトリー。 |
|
|
|
|
| URL ダウンロードリンクのデフォルトの有効期限 (ミリ秒) をオーバーライドします。 |
|
|
|
| ブロブに関連する操作 | 交換ヘッダーの Blob 名をオーバーライド/設定します。 |
|
|
|
| コンテナーと Blob に関する操作 | 交換ヘッダーのコンテナー名をオーバーライド/設定します。 |
|
|
|
| すべて | 実行する producer 操作を指定します。producer 操作に関連するこのページのドキュメントを参照してください。 |
|
|
|
|
| 結果をフィルタリングして、指定された正規表現と名前が一致する Blob のみを返します。すべてを返すには null の場合があります。接頭辞と正規表現の両方が設定されている場合、正規表現が優先され、接頭辞は無視されます。 |
|
|
|
|
| 結果をフィルタリングして、開始時刻の前後のイベントを返します。注意: 前の時間に属するいくつかのイベントも返される可能性があります。この時間に属するいくつかのイベントが欠落している可能性があります。その時間のすべてのイベントが確実に返されるようにするには、開始時間を 1 時間単位で切り捨てます。 |
|
|
|
|
| 結果をフィルタリングして、終了時刻のほぼ前にイベントを返します。注意: 次の 1 時間に属するいくつかのイベントも返される可能性があります。この時間に属するいくつかのイベントが欠落している可能性があります。その時間のすべてのイベントが確実に返されるようにするには、終了時間を 1 時間単位で切り上げます。 |
|
|
|
|
| これにより、サービス呼び出し中に Http パイプラインを介して渡される追加のコンテキストが提供されます。 |
|
|
|
|
| コピー Blob 操作でソースアカウント名として使用されるソース Blob アカウント名 |
|
|
|
|
| コピー Blob 操作でソースコンテナー名として使用されるソース Blob コンテナー名 |
13.6.2. コンポーネントの producer または consumer によって設定されるメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 変数名 | 型 | 説明 |
|---|---|---|---|
|
|
|
| Blob のアクセス層。 |
|
|
|
| Blob のアクセス層が最後に変更された日時。 |
|
|
|
| Blob のアーカイブステータス。 |
|
|
|
| ブロブの作成時間。 |
|
|
|
| ページ Blob の現在のシーケンス番号。 |
|
|
|
| ブロブのサイズ。 |
|
|
|
| ブロブのタイプ。 |
|
|
|
| Blob に指定されたキャッシュコントロール。 |
|
|
|
| 追加 Blob にコミットされたブロックの数 |
|
|
|
| Blob に指定されたコンテンツの配置。 |
|
|
|
| Blob に指定されたコンテンツエンコーディング。 |
|
|
|
| Blob に指定されたコンテンツ言語。 |
|
|
|
| Blob に指定されたコンテンツ MD5。 |
|
|
|
| Blob に指定されたコンテンツタイプ。 |
|
|
|
| Blob に対する最後のコピー操作が完了した日時。 |
|
|
|
| Blob の最後の増分コピースナップショットのスナップショット識別子。 |
|
|
|
| Blob に対して実行された最後のコピー操作の識別子。 |
|
|
|
| Blob に対して実行された最後のコピー操作の状態。 |
|
|
|
| Blob に対して実行された最後のコピー操作のソース。 |
|
|
|
| Blob に対して実行された最後のコピー操作の状態。 |
|
|
|
| Blob に対する最後のコピー操作の説明。 |
|
|
|
| ブロブの E タグ |
|
|
|
| Blob のアクセス層が Blob のプロパティーから推測されたかどうかを示すフラグ。 |
|
|
|
| Blob が増分コピーされたかどうかを示すフラグ。 |
|
|
|
| Blob のコンテンツがサーバー上で暗号化されているかどうかを示すフラグ。 |
|
|
|
| Blob が最後に変更された日時。 |
|
|
|
| Blob のリースの種類。 |
|
|
|
| Blob のリースの状態。 |
|
|
|
| Blob のリースのステータス。 |
|
|
|
| Blob に関連付けられた追加のメタデータ。 |
|
|
|
| ブロックがブロック Blob にコミットされたオフセット。 |
|
|
|
|
操作 |
|
|
|
|
|
|
|
|
| ユーザーが使用できる解析されていない httpHeaders を返します。 |
13.6.3. 高度な Azure Storage Blob 設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel アプリケーションがファイアウォールの背後で実行されている場合、または BlobServiceClient インスタンス設定をより詳細に制御する必要がある場合は、独自のインスタンスを作成できます。
StorageSharedKeyCredential credential = new StorageSharedKeyCredential("yourAccountName", "yourAccessKey");
String uri = String.format("https://%s.blob.core.windows.net", "yourAccountName");
BlobServiceClient client = new BlobServiceClientBuilder()
.endpoint(uri)
.credential(credential)
.buildClient();
// This is camel context
context.getRegistry().bind("client", client);
次に、Camel azure-storage-blob コンポーネント設定でこのインスタンスを参照します。
from("azure-storage-blob://cameldev/container1?blobName=myblob&serviceClient=#client")
.to("mock:result");
13.6.4. レジストリー内の BlobServiceClient クライアントの自動検出 リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントは、レジストリー内の BlobServiceClient bean の存在を検出できます。そのタイプの唯一のインスタンスである場合、それはクライアントとして使用され、上記の例のように uri パラメーターとして定義する必要はありません。これは、エンドポイントのよりスマートな設定に非常に役立つ場合があります。
13.6.5. Azure Storage Blob producer の操作 リンクのコピーリンクがクリップボードにコピーされました!
Camel Azure Storage Blob コンポーネントは、producer 側で幅広い操作を提供します。
サービスレベルの操作
これらの操作には、accountName が 必要 です。
| 操作 | 説明 |
|---|---|
|
| ブロブの内容を取得します。この操作の出力をブロブ範囲に制限できます。 |
|
| ストレージアカウント内の Blob と Blob メタデータに発生したすべての変更のトランザクションログを返します。変更フィードは、これらの変更の順序付けられた、保証された、永続的で不変の読み取り専用ログを提供します。 |
コンテナーレベルでの操作
これらの操作には、accountName と containerName が 必要です。
| 操作 | 説明 |
|---|---|
|
| ストレージアカウント内に新しいコンテナーを作成します。同じ名前のコンテナーがすでに存在する場合、producer はそれを無視します。 |
|
| ストレージアカウント内の指定されたコンテナーを削除します。コンテナーが存在しない場合、操作は失敗します。 |
|
| フォルダー構造がフラット化された、このコンテナー内の Blob のリストを返します。 |
Blob レベルでの操作
これらの操作では、accountName、containerName、および blobName が 必須です。
| 操作 | ブロブの種類 | 説明 |
|---|---|---|
|
| 共通 | ブロブの内容を取得します。この操作の出力をブロブ範囲に制限できます。 |
|
| 共通 | ブロブを削除します。 |
|
| 共通 | パスで指定されたファイルに Blob 全体をダウンロードします。ファイルが作成されますが、存在してはなりません。ファイルがすでに存在する場合、{@link FileAlreadyExistsException} が出力されます。 |
|
| 共通 | Shared Access Signature (SAS) を使用して、指定された Blob のダウンロードリンクを生成します。デフォルトでは、これは許可されたアクセスを 1 時間に制限します。ただし、ヘッダーを使用してデフォルトの有効期限をオーバーライドできます。 |
|
| BlockBlob | 新しいブロック Blob を作成するか、既存のブロック Blob の内容を更新します。既存のブロック Blob を更新すると、Blob の既存のメタデータが上書きされます。PutBlob では部分的な更新はサポートされていません。既存の Blob のコンテンツは新しいコンテンツで上書きされます。 |
|
|
|
指定されたブロックをブロック Blob の "ステージング領域" にアップロードし、後で commitBlobBlockList の呼び出しによってコミットします。ただし、ヘッダー |
|
|
|
Blob を設定するブロック ID のリストを指定して、Blob を書き込みます。ブロックが Blob の一部として書き込まれるためには、ブロックが前の |
|
|
| 指定されたブロックリストフィルターを使用して、ブロック Blob の一部としてアップロードされたブロックのリストを返します。 |
|
|
| 長さ 0 の追加 Blob を作成します。commitAppendBlo`b 操作を呼び出して、追加 Blob にデータを追加します。 |
|
|
|
新しいデータブロックを既存の追加 Blob の末尾にコミットします。ヘッダー |
|
|
|
指定された長さのページ Blob を作成します。 |
|
|
|
1 つ以上のページをページ Blob に書き込みます。書き込みサイズは 512 の倍数である必要があります。ヘッダー |
|
|
| ページ Blob のサイズを指定されたサイズ (512 の倍数である必要があります) に変更します。 |
|
|
| 指定されたページをページ Blob から解放します。範囲のサイズは 512 の倍数でなければなりません。 |
|
|
| ページ Blob またはページ Blob のスナップショットの有効なページ範囲のリストを返します。 |
|
|
| 異なるアカウントからでも、あるコンテナーから別のコンテナーに Blob をコピーします。 |
これらの操作を camel アプリケーションで使用する方法は、このページの例のセクションを参照してください。
13.6.6. consumer の例 リンクのコピーリンクがクリップボードにコピーされました!
ファイルコンポーネントを使用して Blob をファイルに取り込むには、次のようにします。
from("azure-storage-blob://camelazure/container1?blobName=hello.txt&accountName=yourAccountName&accessKey=yourAccessKey").
to("file://blobdirectory");
ただし、ファイルコンポーネントを使用せずにファイルに直接書き込むこともできます。Blob をマシンに保存するには、fileDir フォルダーパスを指定する必要があります。
from("azure-storage-blob://camelazure/container1?blobName=hello.txt&accountName=yourAccountName&accessKey=yourAccessKey&fileDir=/var/to/awesome/dir").
to("mock:results");
また、コンポーネントはバッチ consumer をサポートしているため、コンテナー名を指定するだけで複数の Blob を使用できます。consumer は、コンテナー内の Blob の数に応じて複数の交換を返します。
例
from("azure-storage-blob://camelazure/container1?accountName=yourAccountName&accessKey=yourAccessKey&fileDir=/var/to/awesome/dir").
to("mock:results");
13.6.7. producer 操作の例 リンクのコピーリンクがクリップボードにコピーされました!
-
listBlobContainers
from("direct:start")
.process(exchange -> {
// set the header you want the producer to evaluate, refer to the previous
// section to learn about the headers that can be set
// e.g:
exchange.getIn().setHeader(BlobConstants.LIST_BLOB_CONTAINERS_OPTIONS, new ListBlobContainersOptions().setMaxResultsPerPage(10));
})
.to("azure-storage-blob://camelazure?operation=listBlobContainers&client&serviceClient=#client")
.to("mock:result");
-
createBlobContainer
from("direct:start")
.process(exchange -> {
// set the header you want the producer to evaluate, refer to the previous
// section to learn about the headers that can be set
// e.g:
exchange.getIn().setHeader(BlobConstants.BLOB_CONTAINER_NAME, "newContainerName");
})
.to("azure-storage-blob://camelazure/container1?operation=createBlobContainer&serviceClient=#client")
.to("mock:result");
-
deleteBlobContainer:
from("direct:start")
.process(exchange -> {
// set the header you want the producer to evaluate, refer to the previous
// section to learn about the headers that can be set
// e.g:
exchange.getIn().setHeader(BlobConstants.BLOB_CONTAINER_NAME, "overridenName");
})
.to("azure-storage-blob://camelazure/container1?operation=deleteBlobContainer&serviceClient=#client")
.to("mock:result");
-
listBlobs:
from("direct:start")
.process(exchange -> {
// set the header you want the producer to evaluate, refer to the previous
// section to learn about the headers that can be set
// e.g:
exchange.getIn().setHeader(BlobConstants.BLOB_CONTAINER_NAME, "overridenName");
})
.to("azure-storage-blob://camelazure/container1?operation=listBlobs&serviceClient=#client")
.to("mock:result");
-
getBlob:
交換本体に outputStream を設定し、それにデータを書き込むことができます。例:
from("direct:start")
.process(exchange -> {
// set the header you want the producer to evaluate, refer to the previous
// section to learn about the headers that can be set
// e.g:
exchange.getIn().setHeader(BlobConstants.BLOB_CONTAINER_NAME, "overridenName");
// set our body
exchange.getIn().setBody(outputStream);
})
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=getBlob&serviceClient=#client")
.to("mock:result");
本体を設定しない場合、この操作は、さらに下流に進むことができる InputStream インスタンスを提供します。
from("direct:start")
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=getBlob&serviceClient=#client")
.process(exchange -> {
InputStream inputStream = exchange.getMessage().getBody(InputStream.class);
// We use Apache common IO for simplicity, but you are free to do whatever dealing
// with inputStream
System.out.println(IOUtils.toString(inputStream, StandardCharsets.UTF_8.name()));
})
.to("mock:result");
-
deleteBlob:
from("direct:start")
.process(exchange -> {
// set the header you want the producer to evaluate, refer to the previous
// section to learn about the headers that can be set
// e.g:
exchange.getIn().setHeader(BlobConstants.BLOB_NAME, "overridenName");
})
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=deleteBlob&serviceClient=#client")
.to("mock:result");
-
downloadBlobToFile:
from("direct:start")
.process(exchange -> {
// set the header you want the producer to evaluate, refer to the previous
// section to learn about the headers that can be set
// e.g:
exchange.getIn().setHeader(BlobConstants.BLOB_NAME, "overridenName");
})
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=downloadBlobToFile&fileDir=/var/mydir&serviceClient=#client")
.to("mock:result");
-
downloadLink
from("direct:start")
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=downloadLink&serviceClient=#client")
.process(exchange -> {
String link = exchange.getMessage().getHeader(BlobConstants.DOWNLOAD_LINK, String.class);
System.out.println("My link " + link);
})
.to("mock:result");
-
uploadBlockBlob
from("direct:start")
.process(exchange -> {
// set the header you want the producer to evaluate, refer to the previous
// section to learn about the headers that can be set
// e.g:
exchange.getIn().setHeader(BlobConstants.BLOB_NAME, "overridenName");
exchange.getIn().setBody("Block Blob");
})
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=uploadBlockBlob&serviceClient=#client")
.to("mock:result");
-
stageBlockBlobList
from("direct:start")
.process(exchange -> {
final List<BlobBlock> blocks = new LinkedList<>();
blocks.add(BlobBlock.createBlobBlock(new ByteArrayInputStream("Hello".getBytes())));
blocks.add(BlobBlock.createBlobBlock(new ByteArrayInputStream("From".getBytes())));
blocks.add(BlobBlock.createBlobBlock(new ByteArrayInputStream("Camel".getBytes())));
exchange.getIn().setBody(blocks);
})
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=stageBlockBlobList&serviceClient=#client")
.to("mock:result");
-
commitBlockBlobList
from("direct:start")
.process(exchange -> {
// We assume here you have the knowledge of these blocks you want to commit
final List<Block> blocksIds = new LinkedList<>();
blocksIds.add(new Block().setName("id-1"));
blocksIds.add(new Block().setName("id-2"));
blocksIds.add(new Block().setName("id-3"));
exchange.getIn().setBody(blocksIds);
})
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=commitBlockBlobList&serviceClient=#client")
.to("mock:result");
-
getBlobBlockList
from("direct:start")
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=getBlobBlockList&serviceClient=#client")
.log("${body}")
.to("mock:result");
-
createAppendBlob
from("direct:start")
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=createAppendBlob&serviceClient=#client")
.to("mock:result");
-
commitAppendBlob
from("direct:start")
.process(exchange -> {
final String data = "Hello world from my awesome tests!";
final InputStream dataStream = new ByteArrayInputStream(data.getBytes(StandardCharsets.UTF_8));
exchange.getIn().setBody(dataStream);
// of course you can set whatever headers you like, refer to the headers section to learn more
})
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=commitAppendBlob&serviceClient=#client")
.to("mock:result");
-
createPageBlob
from("direct:start")
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=createPageBlob&serviceClient=#client")
.to("mock:result");
-
uploadPageBlob
from("direct:start")
.process(exchange -> {
byte[] dataBytes = new byte[512]; // we set range for the page from 0-511
new Random().nextBytes(dataBytes);
final InputStream dataStream = new ByteArrayInputStream(dataBytes);
final PageRange pageRange = new PageRange().setStart(0).setEnd(511);
exchange.getIn().setHeader(BlobConstants.PAGE_BLOB_RANGE, pageRange);
exchange.getIn().setBody(dataStream);
})
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=uploadPageBlob&serviceClient=#client")
.to("mock:result");
-
resizePageBlob
from("direct:start")
.process(exchange -> {
final PageRange pageRange = new PageRange().setStart(0).setEnd(511);
exchange.getIn().setHeader(BlobConstants.PAGE_BLOB_RANGE, pageRange);
})
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=resizePageBlob&serviceClient=#client")
.to("mock:result");
-
clearPageBlob
from("direct:start")
.process(exchange -> {
final PageRange pageRange = new PageRange().setStart(0).setEnd(511);
exchange.getIn().setHeader(BlobConstants.PAGE_BLOB_RANGE, pageRange);
})
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=clearPageBlob&serviceClient=#client")
.to("mock:result");
-
getPageBlobRanges
from("direct:start")
.process(exchange -> {
final PageRange pageRange = new PageRange().setStart(0).setEnd(511);
exchange.getIn().setHeader(BlobConstants.PAGE_BLOB_RANGE, pageRange);
})
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=getPageBlobRanges&serviceClient=#client")
.log("${body}")
.to("mock:result");
-
copyBlob
from("direct:copyBlob")
.process(exchange -> {
exchange.getIn().setHeader(BlobConstants.BLOB_NAME, "file.txt");
exchange.getMessage().setHeader(BlobConstants.SOURCE_BLOB_CONTAINER_NAME, "containerblob1");
exchange.getMessage().setHeader(BlobConstants.SOURCE_BLOB_ACCOUNT_NAME, "account");
})
.to("azure-storage-blob://account/containerblob2?operation=copyBlob&sourceBlobAccessKey=RAW(accessKey)")
.to("mock:result");
このようにして、アカウント 'account' のコンテナー containerblob1 内の file.txt が、同じアカウントのコンテナー containerblob2 にコピーされます。
13.6.8. SAS トークン生成例 リンクのコピーリンクがクリップボードにコピーされました!
SAS Blob コンテナートークンは、プログラムまたは Azure UI 経由で生成できます。Java コードを使用してトークンを生成するには、次の操作を実行します。
BlobContainerClient blobClient = new BlobContainerClientBuilder()
.endpoint(String.format("https://%s.blob.core.windows.net/%s", accountName, accessKey))
.containerName(containerName)
.credential(new StorageSharedKeyCredential(accountName, accessKey))
.buildClient();
// Create a SAS token that's valid for 1 day, as an example
OffsetDateTime expiryTime = OffsetDateTime.now().plusDays(1);
// Assign permissions to the SAS token
BlobContainerSasPermission blobContainerSasPermission = new BlobContainerSasPermission()
.setWritePermission(true)
.setListPermission(true)
.setCreatePermission(true)
.setDeletePermission(true)
.setAddPermission(true)
.setReadPermission(true);
BlobServiceSasSignatureValues sasSignatureValues = new BlobServiceSasSignatureValues(expiryTime, blobContainerSasPermission);
return blobClient.generateSas(sasSignatureValues);
生成された SAS トークンは、次のように、camel ルートでロードできるように application.properties ファイルに保存できます。
camel.component.azure-storage-blob.sas-token=MY_TOKEN_HERE
from("direct:copyBlob")
.to("azure-storage-blob://account/containerblob2?operation=uploadBlockBlob&credentialType=AZURE_SAS")
13.7. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 36 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.azure-storage-blob.access-key | Azure Blob サービスでの認証に使用される、関連付けられた Azure アカウント名のアクセスキー。 | String | |
| camel.component.azure-storage-blob.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.azure-storage-blob.blob-name | コンテナーから特定の Blob を使用するための Blob 名。ただし、producer では、Blob レベルでの操作にのみ必要です。 | String | |
| camel.component.azure-storage-blob.blob-offset | アップロードまたはダウンロード操作の Blob オフセットを設定します。デフォルトは 0 です。 | 0 | Long |
| camel.component.azure-storage-blob.blob-sequence-number | リクエストの追跡に使用できるユーザー制御の値。シーケンス番号の値は、0 から 263 - 1 の間でなければなりません。デフォルト値は 0 です。 | 0 | Long |
| camel.component.azure-storage-blob.blob-type | Blob の種類ごとに適切な設定を開始するための Blob の種類。 | BlobType | |
| camel.component.azure-storage-blob.block-list-type | 返すブロックのタイプを指定します。 | BlockListType | |
| camel.component.azure-storage-blob.bridge-error-handler | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | Boolean |
| camel.component.azure-storage-blob.change-feed-context | getChangeFeed producer オペレーションを使用する場合は、これにより、サービス呼び出し中に Http パイプラインを介して渡される追加のコンテキストが提供されます。オプションは com.azure.core.util.Context 型です。 | コンテキスト | |
| camel.component.azure-storage-blob.change-feed-end-time | getChangeFeed producer オペレーションを使用する場合は、これにより結果がフィルター処理され、終了時刻のほぼ前にイベントが返されます。注意: 次の 1 時間に属するいくつかのイベントも返される可能性があります。この時間に属するいくつかのイベントが欠落している可能性があります。その時間のすべてのイベントが確実に返されるようにするには、終了時間を 1 時間単位で切り上げます。オプションは java.time.OffsetDateTime 型です。 | OffsetDateTime | |
| camel.component.azure-storage-blob.change-feed-start-time | getChangeFeed producer 操作を使用する場合は、これにより結果がフィルター処理され、開始時刻のほぼ後にイベントが返されます。注意: 前の時間に属するいくつかのイベントも返される可能性があります。この時間に属するいくつかのイベントが欠落している可能性があります。その時間のすべてのイベントが確実に返されるようにするには、開始時間を 1 時間単位で切り捨てます。オプションは java.time.OffsetDateTime 型です。 | OffsetDateTime | |
| camel.component.azure-storage-blob.close-stream-after-read | 読み取り後にストリームを閉じるか、開いたままにします。デフォルトは true です。 | true | Boolean |
| camel.component.azure-storage-blob.close-stream-after-write | 書き込み後にストリームを閉じるか、開いたままにします。デフォルトは true です。 | true | Boolean |
| camel.component.azure-storage-blob.commit-block-list-later | true に設定されていると、ステージングされたブロックは直接コミットされません。 | true | Boolean |
| camel.component.azure-storage-blob.configuration | コンポーネントの設定。オプションは org.apache.camel.component.azure.storage.blob.BlobConfiguration タイプです。 | BlobConfiguration | |
| camel.component.azure-storage-blob.create-append-blob | true に設定されていると、追加ブロックのコミット時に追加ブロックが作成されます。 | true | Boolean |
| camel.component.azure-storage-blob.create-page-blob | true に設定すると、ページブロブのアップロード時にページ Blob が作成されます。 | true | Boolean |
| camel.component.azure-storage-blob.credential-type | 採用する認証情報戦略を決定します。 | CredentialType | |
| camel.component.azure-storage-blob.credentials | StorageSharedKeyCredential を挿入して Azure クライアントを作成できます。これには重要な認証情報が保持されます。オプションは com.azure.storage.common.StorageSharedKeyCredential 型です。 | StorageSharedKeyCredential | |
| camel.component.azure-storage-blob.data-count | 範囲に含めるバイト数。指定する場合は、0 以上である必要があります。 | Long | |
| camel.component.azure-storage-blob.download-link-expiration | URL ダウンロードリンクのデフォルトの有効期限 (ミリ秒) をオーバーライドします。 | Long | |
| camel.component.azure-storage-blob.enabled | azure-storage-blob コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.azure-storage-blob.file-dir | ダウンロードされた Blob が保存されるファイルディレクトリー。これは producer と consumer の両方で使用できます。 | String | |
| camel.component.azure-storage-blob.health-check-consumer-enabled | このコンポーネントからのすべてのコンシューマーベースのヘルスチェックを有効または無効にするために使用します。 | true | Boolean |
| camel.component.azure-storage-blob.health-check-producer-enabled | このコンポーネントからのすべてのプロデューサーベースのヘルスチェックを有効または無効にするために使用します。注記: Camel はデフォルトで、すべてのプロデューサーベースのヘルスチェックを無効にしています。camel.health.producersEnabled=true を設定することで、プロデューサーチェックをグローバルに有効にできます。 | true | Boolean |
| camel.component.azure-storage-blob.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.azure-storage-blob.max-results-per-page | すべての BlobPrefix 要素を含め、返される Blob の最大数を指定します。要求で maxResultsPerPage が指定されていないか、5,000 を超える値が指定されている場合、サーバーは最大 5,000 項目を返します。 | Integer | |
| camel.component.azure-storage-blob.max-retry-requests | レスポンスのボディーからデータを読み取るときに作成される追加の HTTP Get 要求の最大数を指定します。 | 0 | Integer |
| camel.component.azure-storage-blob.operation | producer のこのコンポーネントで使用できる Blob 操作。 | BlobOperationsDefinition | |
| camel.component.azure-storage-blob.page-blob-size | ページ Blob の最大サイズを 8 TB まで指定します。ページ Blob のサイズは、512 バイトの境界に合わせる必要があります。 | 512 | Long |
| camel.component.azure-storage-blob.prefix | 結果をフィルター処理して、名前が指定された接頭辞で始まる Blob のみを返します。すべての Blob を返すには null の場合があります。 | String | |
| camel.component.azure-storage-blob.regex | 結果をフィルタリングして、指定された正規表現と名前が一致する Blob のみを返します。接頭辞と正規表現の両方が設定されている場合は、すべてを返すために null になる場合があります。正規表現が優先され、接頭辞は無視されます。 | String | |
| camel.component.azure-storage-blob.sas-token | Shared Access Signature を使用する場合は SAS トークンを設定する | String | |
| camel.component.azure-storage-blob.service-client | ストレージアカウントへのクライアント。このクライアントは、特定のストレージアカウントに関する状態を保持しませんが、サービス上のリソースに適切な要求を送信する便利な方法です。また、Blob およびコンテナーへの URL を作成するために使用することもできます。このクライアントには、サービスアカウントに対する操作が含まれています。コンテナーに対する操作は、BlobServiceClient#getBlobContainerClient(String) を介して BlobContainerClient で利用でき、ブロブに対する操作は、BlobContainerClient#getBlobClient(String) を介して BlobClient で利用できます。オプションは com.azure.storage.blob.BlobServiceClient 型です。 | BlobServiceClient | |
| camel.component.azure-storage-blob.source-blob-access-key | ソース Blob アクセスキー: copyblob 操作では、コピーするソース Blob の accessKey が必要です。accessKey をヘッダーとして渡すと、安全ではないため、キーとして設定できます。 | String | |
| camel.component.azure-storage-blob.timeout | それを超えると RuntimeException が発生する任意のタイムアウト値。オプションは java.time.Duration タイプです。 | 期間 |
第14章 Azure Storage Queue Service リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
Azure Storage Queue コンポーネントは、Azure API v12 を使用した Azure Storage Queue サービスとの間のメッセージの保存と取得をサポートしています。ただし、v12 より上のバージョンの場合、破壊的な変更がどの程度発生するかによって、このコンポーネントがこれらの変更を採用できるかどうかを確認します。
前提条件
有効な Windows Azure ストレージアカウントが必要です。詳細は、Azure ドキュメントポータル を参照してください。
14.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で azure-storage-queue を使用する場合は、自動設定をサポートするために次の Maven 依存関係を pom.xml に追加します。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-azure-storage-queue-starter</artifactId>
</dependency>
14.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
azure-storage-queue://accountName[/queueName][?options]
consumer の場合、accountName と queueName が必要です。producer の場合、要求されている操作によって異なります。たとえば、操作がサービスレベル (e.b: listQueues) の場合、accountName のみが必要ですが、キューレベルで要求されている操作 (createQueue、sendMessage など) の場合は、accountName と queueName の両方が必要です。
キューがまだ存在しない場合は作成されます。URI には、次の形式でクエリーオプションを追加できます。
?options=value&option2=value&…
14.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
14.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
14.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
14.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
Azure Storage Queue Service コンポーネントは、以下に示す 15 のオプションをサポートしています。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| configuration (common) | コンポーネントの設定。 | QueueConfiguration | |
| serviceClient (common) | Autowired サービスクライアントをストレージアカウントに接続して、キューサービスとやり取りします。このクライアントは、特定のストレージアカウントに関する状態を保持しませんが、サービス上のリソースに適切な要求を送信する便利な方法です。このクライアントには、Azure Storage のキューアカウントを操作するためのすべての操作が含まれています。クライアントによって許可される操作は、キューの作成、一覧表示、および削除、アカウントのプロパティーの取得と更新、およびアカウントの統計の取得です。 | QueueServiceClient | |
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| createQueue (producer) | true に設定すると、メッセージを送信するときにキューが自動的に作成されます。 | false | boolean |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| operation (producer) | producer へのキューサービス操作のヒント。 列挙値:
| QueueOperationDefinition | |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| maxMessages (キュー) | 取得するメッセージの最大数。要求された数よりもキューに存在するメッセージが少ない場合は、すべてのメッセージが返されます。空のままにすると、1 つのメッセージのみが取得されます。許可される範囲は 1 から 32 のメッセージです。 | 1 | Integer |
| messageId (queue) | 削除または更新するメッセージの ID。 | String | |
| popReceipt (queue) | メッセージを削除または更新するために一致する必要がある一意の識別子。 | String | |
| タイムアウト (キュー) | 操作に適用されるオプションのタイムアウト。タイムアウトが終了する前に応答が返されない場合、RuntimeException が出力されます。 | 期間 | |
| timeToLive (キュー) | メッセージがキュー内で存続する時間。設定されていない場合、値はデフォルトで 7 日になります。-1 が渡されると、メッセージは期限切れになりません。存続時間は -1 または任意の正の数でなければなりません。形式は PnDTnHnMn.nS の形式である必要があります (例: PT20.345S は 20.345 秒として解析し、P2D は、2 日として解析)。ただし、EndpointDsl/ComponentDsl を使用している場合は、これらの Java API はタイプセーフであるため、Duration.ofSeconds() のようなものが可能になります。 | 期間 | |
| visibilityTimeout (キュー) | メッセージがキューに表示されないタイムアウト期間。タイムアウトは 1 秒から 7 日の間にする必要があります。形式は PnDTnHnMn.nS の形式である必要があります (例: PT20.345S は 20.345 秒として解析し、P2D は、2 日として解析)。ただし、EndpointDsl/ComponentDsl を使用している場合は、これらの Java API はタイプセーフであるため、Duration.ofSeconds() のようなものが可能になります。 | 期間 | |
| accessKey (security) | azure キューサービスでの認証に使用される、関連付けられた azure アカウント名のアクセスキー。 | String | |
| credentials (security) | StorageSharedKeyCredential を挿入して Azure クライアントを作成できます。これには重要な認証情報が保持されます。 | StorageSharedKeyCredential |
14.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Azure ストレージキューサービスエンドポイントは、URI 構文を使用して設定されます。
azure-storage-queue:accountName/queueName
パスおよびクエリーパラメーターを使用します。
14.5.1. パスパラメーター (2 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| accountName (common) | Azure キューサービスでの認証に使用される Azure アカウント名。 | String | |
| queueName (common) | キューリソース名。 | String |
14.5.2. クエリーパラメーター (31 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| serviceClient (common) | Autowired サービスクライアントをストレージアカウントに接続して、キューサービスとやり取りします。このクライアントは、特定のストレージアカウントに関する状態を保持しませんが、サービス上のリソースに適切な要求を送信する便利な方法です。このクライアントには、Azure Storage のキューアカウントを操作するためのすべての操作が含まれています。クライアントによって許可される操作は、キューの作成、一覧表示、および削除、アカウントのプロパティーの取得と更新、およびアカウントの統計の取得です。 | QueueServiceClient | |
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| sendEmptyMessageWhenIdle (consumer) | ポーリング consumer がファイルをポーリングしなかった場合、このオプションを有効にして、代わりに空のメッセージ (ボディーなし) を送信できます。 | false | boolean |
| exceptionHandler (consumer (advanced)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (advanced)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| pollStrategy (consumer (advanced)) | プラグ可能な org.apache.camel.PollingConsumerPollingStrategy を使用すると、エクスチェンジが作成され、Camel でルーティングされる前に、通常はポーリング操作中に発生するエラー処理を制御するカスタム実装が提供できます。 | PollingConsumerPollStrategy | |
| createQueue (producer) | true に設定すると、メッセージを送信するときにキューが自動的に作成されます。 | false | boolean |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| operation (producer) | producer へのキューサービス操作のヒント。 列挙値:
| QueueOperationDefinition | |
| maxMessages (キュー) | 取得するメッセージの最大数。要求された数よりもキューに存在するメッセージが少ない場合は、すべてのメッセージが返されます。空のままにすると、1 つのメッセージのみが取得されます。許可される範囲は 1 から 32 のメッセージです。 | 1 | Integer |
| messageId (queue) | 削除または更新するメッセージの ID。 | String | |
| popReceipt (queue) | メッセージを削除または更新するために一致する必要がある一意の識別子。 | String | |
| タイムアウト (キュー) | 操作に適用されるオプションのタイムアウト。タイムアウトが終了する前に応答が返されない場合、RuntimeException が出力されます。 | 期間 | |
| timeToLive (キュー) | メッセージがキュー内で存続する時間。設定されていない場合、値はデフォルトで 7 日になります。-1 が渡されると、メッセージは期限切れになりません。存続時間は -1 または任意の正の数でなければなりません。形式は PnDTnHnMn.nS の形式である必要があります (例: PT20.345S は 20.345 秒として解析し、P2D は、2 日として解析)。ただし、EndpointDsl/ComponentDsl を使用している場合は、これらの Java API はタイプセーフであるため、Duration.ofSeconds() のようなものが可能になります。 | 期間 | |
| visibilityTimeout (キュー) | メッセージがキューに表示されないタイムアウト期間。タイムアウトは 1 秒から 7 日の間にする必要があります。形式は PnDTnHnMn.nS の形式である必要があります (例: PT20.345S は 20.345 秒として解析し、P2D は、2 日として解析)。ただし、EndpointDsl/ComponentDsl を使用している場合は、これらの Java API はタイプセーフであるため、Duration.ofSeconds() のようなものが可能になります。 | 期間 | |
| backoffErrorThreshold (scheduler) | backoffMultipler が開始する前に発生する必要がある後続のエラーポーリング (エラーによって失敗した) の数。 | int | |
| backoffIdleThreshold (scheduler) | backoffMultipler が開始する前に発生する必要がある後続のアイドルポーリングの数。 | int | |
| backoffMultiplier (scheduler) | 後続のアイドル状態/エラーが連続して発生した場合に、スケジュールされたポーリング consumer のバックオフを許可します。乗数は、実際に次の試行が行われる前にスキップされるポーリングの数です。このオプションが使用されている場合は、backoffIdleThreshold や backoffErrorThreshold も設定する必要があります。 | int | |
| delay (scheduler) | 次のポーリングまでの時間 (ミリ秒単位)。 | 500 | long |
| greedy (scheduler) | greedy が有効で、以前の実行が 1 つ以上のメッセージをポーリングした場合、ScheduledPollConsumer は即座に再度実行されます。 | false | boolean |
| initialDelay (scheduler) | 最初のポーリングが開始されるまでの時間 (ミリ秒単位)。 | 1000 | long |
| repeatCount (scheduler) | 実行の最大数を指定します。そのため、これを 1 に設定するとスケジューラーは 1 度だけ実行されます。これを 5 に設定した場合、5 回だけ実行されます。0 または負の値を設定すると、無制限に実行されます。 | 0 | long |
| runLoggingLevel (scheduler) | consumer はポーリング時に開始/完了のログ行を記録します。このオプションを使用すると、ログレベルを設定できます。 列挙値:
| TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | consumer に使用するカスタム/共有スレッドプールを設定できます。デフォルトでは、各 consumer に独自の単一スレッドのスレッドプールがあります。 | ScheduledExecutorService | |
| scheduler (scheduler) | camel-spring または camel-quartz コンポーネントから cron スケジューラーを使用します。スケジューラーにビルドされた値 spring または quartz を使用。 | none | オブジェクト |
| schedulerProperties (scheduler) | カスタムスケジューラーまたは Quartz や Spring ベースのスケジューラーを使用する場合に、追加のプロパティーを設定します。 | Map | |
| startScheduler (scheduler) | スケジューラーを自動起動するかどうか。 | true | boolean |
| timeUnit (scheduler) | initialDelay および delay オプションの時間単位。 列挙値:
| MILLISECONDS | TimeUnit |
| useFixedDelay (scheduler) | 固定遅延または固定レートを使用するかどうかを制御します。詳細は、JDK の ScheduledExecutorService を参照してください。 | true | boolean |
| accessKey (security) | azure キューサービスでの認証に使用される、関連付けられた azure アカウント名のアクセスキー。 | String | |
| credentials (security) | StorageSharedKeyCredential を挿入して Azure クライアントを作成できます。これには重要な認証情報が保持されます。 | StorageSharedKeyCredential |
必須情報オプション
このコンポーネントを使用するには、必要な Azure 認証情報を提供するための 3 つのオプションがあります。
-
Azure アカウントの
accountNameとaccessKeyを指定します。これが最も簡単な開始方法です。accessKey は、Azure portal から生成できます。 -
認証情報オプションに提供できる StorageSharedKeyCredential インスタンスを提供します。 -
serviceClientに提供できる QueueServiceClient インスタンスを提供します。注: 特定のクライアントを作成する必要はありません (例: QueueClient)。QueueServiceClient は、下位レベルのクライアントを取得するために使用できる上位レベルを表します。
14.6. 使用方法 リンクのコピーリンクがクリップボードにコピーされました!
たとえば、storageAccount ストレージアカウントのキュー messageQueue からメッセージコンテンツを取得するには、次のスニペットを使用します。
from("azure-storage-queue://storageAccount/messageQueue?accessKey=yourAccessKey").
to("file://queuedirectory");
14.6.1. コンポーネント producer によって評価されるメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 変数名 | 型 | 操作 | 説明 |
|---|---|---|---|---|
|
|
|
|
| キューを一覧表示するためのオプション |
|
|
|
| すべて | それを超えると \{@link RuntimeException} が発生する任意のタイムアウト値。 |
|
|
|
|
| キューに関連付けるメタデータ |
|
|
|
|
| メッセージがキュー内で存続する時間。設定されていない場合、値はデフォルトで 7 日になります。-1 が渡されると、メッセージは期限切れになりません。存続時間は -1 または任意の正の数でなければなりません。 |
|
|
|
|
| メッセージがキューに表示されないタイムアウト期間。設定されていない場合、値はデフォルトで 0 になり、メッセージはすぐに表示されます。タイムアウトは 0 秒から 7 日の間にする必要があります。 |
|
|
|
|
|
|
|
|
|
|
| メッセージを削除または更新するために一致する必要がある一意の識別子。 |
|
|
|
|
| 削除または更新するメッセージの ID。 |
|
|
|
|
| 取得するメッセージの最大数。要求された数よりもキューに存在するメッセージが少ない場合は、すべてのメッセージが返されます。空のままにすると、1 つのメッセージのみが取得されます。許可される範囲は 1 から 32 のメッセージです。 |
|
|
|
| すべて | 実行する producer 操作を指定します。producer 操作に関連するこのページのドキュメントを参照してください。 |
|
|
|
| すべて | キュー名をオーバーライドします。 |
14.6.2. コンポーネントの producer または consumer によって設定されるメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 変数名 | 型 | 説明 |
|---|---|---|---|
|
|
|
| キューに送信されるメッセージの ID。 |
|
|
|
| メッセージがキューに挿入された時刻。 |
|
|
|
| メッセージが期限切れになり、自動的に削除される時間。 |
|
|
|
| この値は、メッセージを削除/更新するために必要です。この popreceipt を使用して削除に失敗した場合、メッセージは別のクライアントによってキューから取り出されています。 |
|
|
|
| メッセージが再びキューに表示される時間。 |
|
|
|
| メッセージがデキューされた回数。 |
|
|
|
| ユーザーが使用できる解析されていない httpHeaders を返します。 |
14.6.3. 高度な Azure ストレージキューの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel アプリケーションがファイアウォールの背後で実行されている場合、または QueueServiceClient インスタンス設定をより詳細に制御する必要がある場合は、独自のインスタンスを作成できます。
StorageSharedKeyCredential credential = new StorageSharedKeyCredential("yourAccountName", "yourAccessKey");
String uri = String.format("https://%s.queue.core.windows.net", "yourAccountName");
QueueServiceClient client = new QueueServiceClientBuilder()
.endpoint(uri)
.credential(credential)
.buildClient();
// This is camel context
context.getRegistry().bind("client", client);
次に、Camel azure-storage-queue コンポーネント設定でこのインスタンスを参照します。
from("azure-storage-queue://cameldev/queue1?serviceClient=#client")
.to("file://outputFolder?fileName=output.txt&fileExist=Append");
14.6.4. レジストリー内の QueueServiceClient クライアントの自動検出 リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントは、レジストリー内の QueueServiceClient Bean の存在を検出できます。そのタイプの唯一のインスタンスである場合、それはクライアントとして使用され、上記の例のように uri パラメーターとして定義する必要はありません。これは、エンドポイントのよりスマートな設定に非常に役立つ場合があります。
14.6.5. Azure Storage Queue Producer の操作 リンクのコピーリンクがクリップボードにコピーされました!
Camel Azure Storage Queue コンポーネントは、producer 側で幅広い操作を提供します。
サービスレベルの操作
これらの操作には、accountName が 必要 です。
| 操作 | 説明 |
|---|---|
|
| 指定されたマーカーから開始して、フィルターを通過するストレージアカウント内のキューを一覧表示します。 |
キューレベルでの操作
これらの操作には、accountName と queueName が 必要です。
| 操作 | 説明 |
|---|---|
|
| 新しいキューを作成します。 |
|
| キューを完全に削除します。 |
|
| キュー内のすべてのメッセージを削除します.. |
|
|
デフォルトのプロデューサ操作 指定された存続時間とメッセージがキューに表示されないタイムアウト期間を指定してメッセージを送信します。メッセージテキストは、Exchange メッセージ本文から評価されます。デフォルトでは、キューが存在しない場合、最初に空のキューが作成されます。これを無効にする場合は、config |
|
| 指定されたメッセージをキューから削除します。 |
|
| キューからメッセージを最大数まで取得し、タイムアウト期間中は他の操作から非表示にします。ただし、信頼性の理由から、キューからメッセージをデキューしません。 |
|
| キューの先頭からメッセージの最大数までメッセージをピークします。 |
|
| キュー内の特定のメッセージを新しいメッセージで更新し、表示タイムアウトをリセットします。メッセージテキストは、Exchange メッセージ本文から評価されます。 |
これらの操作を camel アプリケーションで使用する方法は、このページの例のセクションを参照してください。
14.6.6. consumer の例 リンクのコピーリンクがクリップボードにコピーされました!
1 つのバッチで最大 5 つのメッセージを含むファイルコンポーネントにキューを消費するには、次のようにします。
from("azure-storage-queue://cameldev/queue1?serviceClient=#client&maxMessages=5")
.to("file://outputFolder?fileName=output.txt&fileExist=Append");
14.6.7. producer 操作の例 リンクのコピーリンクがクリップボードにコピーされました!
-
listQueues:
from("direct:start")
.process(exchange -> {
// set the header you want the producer to evaluate, refer to the previous
// section to learn about the headers that can be set
// e.g, to only returns list of queues with 'awesome' prefix:
exchange.getIn().setHeader(QueueConstants.QUEUES_SEGMENT_OPTIONS, new QueuesSegmentOptions().setPrefix("awesome"));
})
.to("azure-storage-queue://cameldev?serviceClient=#client&operation=listQueues")
.log("${body}")
.to("mock:result");
-
createQueue:
from("direct:start")
.process(exchange -> {
// set the header you want the producer to evaluate, refer to the previous
// section to learn about the headers that can be set
// e.g:
exchange.getIn().setHeader(QueueConstants.QUEUE_NAME, "overrideName");
})
.to("azure-storage-queue://cameldev/test?serviceClient=#client&operation=createQueue");
-
deleteQueue:
from("direct:start")
.process(exchange -> {
// set the header you want the producer to evaluate, refer to the previous
// section to learn about the headers that can be set
// e.g:
exchange.getIn().setHeader(QueueConstants.QUEUE_NAME, "overrideName");
})
.to("azure-storage-queue://cameldev/test?serviceClient=#client&operation=deleteQueue");
-
clearQueue:
from("direct:start")
.process(exchange -> {
// set the header you want the producer to evaluate, refer to the previous
// section to learn about the headers that can be set
// e.g:
exchange.getIn().setHeader(QueueConstants.QUEUE_NAME, "overrideName");
})
.to("azure-storage-queue://cameldev/test?serviceClient=#client&operation=clearQueue");
-
sendMessage:
from("direct:start")
.process(exchange -> {
// set the header you want the producer to evaluate, refer to the previous
// section to learn about the headers that can be set
// e.g:
exchange.getIn().setBody("message to send");
// we set a visibility of 1min
exchange.getIn().setHeader(QueueConstants.VISIBILITY_TIMEOUT, Duration.ofMinutes(1));
})
.to("azure-storage-queue://cameldev/test?serviceClient=#client");
-
deleteMessage:
from("direct:start")
.process(exchange -> {
// set the header you want the producer to evaluate, refer to the previous
// section to learn about the headers that can be set
// e.g:
// Mandatory header:
exchange.getIn().setHeader(QueueConstants.MESSAGE_ID, "1");
// Mandatory header:
exchange.getIn().setHeader(QueueConstants.POP_RECEIPT, "PAAAAHEEERXXX-1");
})
.to("azure-storage-queue://cameldev/test?serviceClient=#client&operation=deleteMessage");
-
receiveMessages:
from("direct:start")
.to("azure-storage-queue://cameldev/test?serviceClient=#client&operation=receiveMessages")
.process(exchange -> {
final List<QueueMessageItem> messageItems = exchange.getMessage().getBody(List.class);
messageItems.forEach(messageItem -> System.out.println(messageItem.getMessageText()));
})
.to("mock:result");
-
peekMessages:
from("direct:start")
.to("azure-storage-queue://cameldev/test?serviceClient=#client&operation=peekMessages")
.process(exchange -> {
final List<PeekedMessageItem> messageItems = exchange.getMessage().getBody(List.class);
messageItems.forEach(messageItem -> System.out.println(messageItem.getMessageText()));
})
.to("mock:result");
-
updateMessage:
from("direct:start")
.process(exchange -> {
// set the header you want the producer to evaluate, refer to the previous
// section to learn about the headers that can be set
// e.g:
exchange.getIn().setBody("new message text");
// Mandatory header:
exchange.getIn().setHeader(QueueConstants.MESSAGE_ID, "1");
// Mandatory header:
exchange.getIn().setHeader(QueueConstants.POP_RECEIPT, "PAAAAHEEERXXX-1");
// Mandatory header:
exchange.getIn().setHeader(QueueConstants.VISIBILITY_TIMEOUT, Duration.ofMinutes(1));
})
.to("azure-storage-queue://cameldev/test?serviceClient=#client&operation=updateMessage");
14.6.8. 開発ノート (重要) リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントで開発する場合、統合テストを実行するために Azure accessKey を取得する必要があります。モック単体テストに加えて、マイナーバージョンのアップグレードでも Azure クライアントが問題を起こす可能性があるため、変更を加えたり、クライアントのアップグレードごとに統合テストを実行したりする必要があります。統合テストを実行するには、このコンポーネントディレクトリーで次の maven コマンドを実行します。
mvn verify -PfullTests -DaccountName=myacc -DaccessKey=mykey
ここで、accountName は Azure アカウント名で、accessKey は Azure portal から生成されるアクセスキーです。
14.7. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 16 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.azure-storage-queue.access-key | azure キューサービスでの認証に使用される、関連付けられた azure アカウント名のアクセスキー。 | String | |
| camel.component.azure-storage-queue.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.azure-storage-queue.bridge-error-handler | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | Boolean |
| camel.component.azure-storage-queue.configuration | コンポーネントの設定。オプションは org.apache.camel.component.azure.storage.queue.QueueConfiguration タイプです。 | QueueConfiguration | |
| camel.component.azure-storage-queue.create-queue | true に設定すると、メッセージを送信するときにキューが自動的に作成されます。 | false | Boolean |
| camel.component.azure-storage-queue.credentials | StorageSharedKeyCredential を挿入して Azure クライアントを作成できます。これには重要な認証情報が保持されます。オプションは com.azure.storage.common.StorageSharedKeyCredential 型です。 | StorageSharedKeyCredential | |
| camel.component.azure-storage-queue.enabled | azure-storage-queue コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.azure-storage-queue.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.azure-storage-queue.max-messages | 取得するメッセージの最大数。要求された数よりもキューに存在するメッセージが少ない場合は、すべてのメッセージが返されます。空のままにすると、1 つのメッセージのみが取得されます。許可される範囲は 1 から 32 のメッセージです。 | 1 | Integer |
| camel.component.azure-storage-queue.message-id | 削除または更新するメッセージの ID。 | String | |
| camel.component.azure-storage-queue.operation | producer へのキューサービス操作のヒント。 | QueueOperationDefinition | |
| camel.component.azure-storage-queue.pop-receipt | メッセージを削除または更新するために一致する必要がある一意の識別子。 | String | |
| camel.component.azure-storage-queue.service-client | クライアントをストレージアカウントにサービスして、キューサービスとやり取りします。このクライアントは、特定のストレージアカウントに関する状態を保持しませんが、サービス上のリソースに適切な要求を送信する便利な方法です。このクライアントには、Azure Storage のキューアカウントを操作するためのすべての操作が含まれています。クライアントによって許可される操作は、キューの作成、一覧表示、および削除、アカウントのプロパティーの取得と更新、およびアカウントの統計の取得です。オプションは com.azure.storage.queue.QueueServiceClient 型です。 | QueueServiceClient | |
| camel.component.azure-storage-queue.time-to-live | メッセージがキュー内で存続する時間。設定されていない場合、値はデフォルトで 7 日になります。-1 が渡されると、メッセージは期限切れになりません。存続時間は -1 または任意の正の数でなければなりません。形式は PnDTnHnMn.nS の形式である必要があります (例: PT20.345S は 20.345 秒として解析し、P2D は、2 日として解析)。ただし、EndpointDsl/ComponentDsl を使用している場合は、これらの Java API はタイプセーフであるため、Duration.ofSeconds() のようなものが可能になります。オプションは java.time.Duration タイプです。 | 期間 | |
| camel.component.azure-storage-queue.timeout | 操作に適用されるオプションのタイムアウト。タイムアウトが終了する前に応答が返されない場合、RuntimeException が出力されます。オプションは java.time.Duration タイプです。 | 期間 | |
| camel.component.azure-storage-queue.visibility-timeout | メッセージがキューに表示されないタイムアウト期間。タイムアウトは 1 秒から 7 日の間にする必要があります。形式は PnDTnHnMn.nS の形式である必要があります (例: PT20.345S は 20.345 秒として解析し、P2D は、2 日として解析)。ただし、EndpointDsl/ComponentDsl を使用している場合は、これらの Java API はタイプセーフであるため、Duration.ofSeconds() のようなものが可能になります。オプションは java.time.Duration タイプです。 | 期間 |
第15章 Bean リンクのコピーリンクがクリップボードにコピーされました!
producer のみサポート対象
Bean コンポーネントは Bean を Camel メッセージエクスチェンジにバインドします。
15.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で bean を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-bean-starter</artifactId>
</dependency>
15.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
bean:beanName[?options]
beanID には、レジストリーで Bean を検索するために使用される任意の文字列を指定できます。
15.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
15.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
15.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
15.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
Bean コンポーネントは、以下に示す 4 つのオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| cache (producer) | 非推奨 代わりにシングルトンオプションを使用してください。 | true | Boolean |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| scope (producer) | Bean のスコープ。シングルトンスコープ (デフォルト) を使用する場合、Bean は 1 回のみ作成または検索され、エンドポイントの有効期間に再利用されます。同時スレッドが同時に Bean を呼び出す場合、Bean はスレッドセーフである必要があります。リクエストスコープを使用する場合、Bean はリクエストごとに 1 回作成またはルックアップされます (交換)。リクエストの処理中に Bean に状態を保存する場合や、リクエストの処理中に同じ Bean インスタンスを複数回呼び出す場合に使用できます。インスタンスは同じリクエストからのみ呼び出されるため、Bean はスレッドセーフである必要はありません。delegate スコープを使用すると、呼び出しごとに Bean が検索または作成されます。ただしルックアップの場合、これは Spring や CDI (使用されている場合) などの Bean レジストリーに委譲され、設定に応じてシングルトンまたはプロトタイプスコープのいずれかとして機能します。したがって、いつプロトタイプを使用するかは委譲されたレジストリーにより異なります。 列挙値:
| シングルトン | BeanScope |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
15.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Bean エンドポイントは、URI 構文を使用して設定されます。
bean:beanName
パスおよびクエリーパラメーターを使用します。
15.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| beanName (common) | 必須: 呼び出す Bean の名前を設定します。 | String |
15.5.2. クエリーパラメーター (5 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| cache (common) | 非推奨 代わりにスコープオプションを使用してください。 | Boolean | |
| method (common) | Bean で呼び出すメソッドの名前を設定します。 | String | |
| scope (common) | Bean のスコープ。シングルトンスコープ (デフォルト) を使用する場合、Bean は 1 回のみ作成または検索され、エンドポイントの有効期間に再利用されます。同時スレッドが同時に Bean を呼び出す場合、Bean はスレッドセーフである必要があります。リクエストスコープを使用する場合、Bean はリクエストごとに 1 回作成またはルックアップされます (交換)。リクエストの処理中に Bean に状態を保存する場合や、リクエストの処理中に同じ Bean インスタンスを複数回呼び出す場合に使用できます。インスタンスは同じリクエストからのみ呼び出されるため、Bean はスレッドセーフである必要はありません。プロトタイプコープを使用すると、呼び出しごとに Bean がルックアップまたは作成されます。ただしルックアップの場合、これは Spring や CDI (使用されている場合) などの Bean レジストリーに委譲され、設定に応じてシングルトンまたはプロトタイプスコープのいずれかとして機能します。したがって、いつプロトタイプを使用するかは委譲されたレジストリーにより異なります。 列挙値:
| シングルトン | BeanScope |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| parameters (advanced) | Bean の追加プロパティーの設定に使用します。 | Map |
15.6. 例 リンクのコピーリンクがクリップボードにコピーされました!
メッセージの消費に使用されるオブジェクトインスタンスは、レジストリーに明示的に登録する必要があります。たとえば、Spring を使用している場合は、Spring 設定で Bean を定義する必要があります。
bind メソッドを使用して、Camel の Registry を介して Bean を手動で登録することもできます。
エンドポイントが登録されたら、エクスチェンジの処理に使用する Camel ルートを構築できます。
bean: エンドポイントは、ルートへの入力として定義できません。つまり、消費できません。一部のインバウンドメッセージエンドポイントから Bean エンドポイントに、出力としてのみルーティングできます。direct: または queue: エンドポイントを入力として使用することを検討してください。
ProxyHelper で createProxy() メソッドを使用して、エクスチェンジを生成して任意のエンドポイントに送信するプロキシーを作成できます。
XML DSL を使用した同じルート:
<route>
<from uri="direct:hello"/>
<to uri="bean:bye"/>
</route>
15.7. エンドポイントとしての Bean リンクのコピーリンクがクリップボードにコピーされました!
Camel は、エンドポイントとしての Bean の呼び出しもサポートします。エクスチェンジが myBean にルーティングされると、Camel は Bean バインディングを使用して Bean を呼び出します。Bean のソースは plain POJO です。
Camel は Bean バインディングを使用して sayHello メソッドを呼び出し、エクスチェンジの In ボディを String タイプに変換し、メソッドの出力をエクスチェンジの Out ボディに保存します。
15.8. Java DSL Bean 構文 リンクのコピーリンクがクリップボードにコピーされました!
Java DSL には、コンポーネントのシンタックスシュガーが付属しています。Bean を明示的にエンドポイント (つまり to ("bean:beanName")) として指定する代わりに、次の構文を使用できます。
// Send message to the bean endpoint
// and invoke method resolved using Bean Binding.
from("direct:start").bean("beanName");
// Send message to the bean endpoint
// and invoke given method.
from("direct:start").bean("beanName", "methodName");
Bean への参照の名前を渡す代わりに (Camel がレジストリーでそれを検索できるようにするため)、Bean 自体を指定できます。
// Send message to the given bean instance.
from("direct:start").bean(new ExampleBean());
// Explicit selection of bean method to be invoked.
from("direct:start").bean(new ExampleBean(), "methodName");
// Camel will create the instance of bean and cache it for you.
from("direct:start").bean(ExampleBean.class);
15.9. Bean バインディング リンクのコピーリンクがクリップボードにコピーされました!
呼び出される Bean メソッドの選択方法 (method パラメーターで明示的に指定されていない場合) と、メッセージからパラメーター値が構築される方法は、Camel 内のさまざまな Bean 統合メカニズム全体で使用される Bean バインディングメカニズムによりすべて定義されます。
15.10. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントは、以下に示す 13 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.bean.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.bean.enabled | Bean コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.bean.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.bean.scope | Bean のスコープ。シングルトンスコープ (デフォルト) を使用する場合、Bean は 1 回のみ作成または検索され、エンドポイントの有効期間に再利用されます。同時スレッドが同時に Bean を呼び出す場合、Bean はスレッドセーフである必要があります。リクエストスコープを使用する場合、Bean はリクエストごとに 1 回作成またはルックアップされます (交換)。リクエストの処理中に Bean に状態を保存する場合や、リクエストの処理中に同じ Bean インスタンスを複数回呼び出す場合に使用できます。インスタンスは同じリクエストからのみ呼び出されるため、Bean はスレッドセーフである必要はありません。delegate スコープを使用すると、呼び出しごとに Bean が検索または作成されます。ただしルックアップの場合、これは Spring や CDI (使用されている場合) などの Bean レジストリーに委譲され、設定に応じてシングルトンまたはプロトタイプスコープのいずれかとして機能します。したがって、いつプロトタイプを使用するかは委譲されたレジストリーにより異なります。 | BeanScope | |
| camel.component.class.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.class.enabled | クラスコンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.class.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.class.scope | Bean のスコープ。シングルトンスコープ (デフォルト) を使用する場合、Bean は 1 回のみ作成または検索され、エンドポイントの有効期間に再利用されます。同時スレッドが同時に Bean を呼び出す場合、Bean はスレッドセーフである必要があります。リクエストスコープを使用する場合、Bean はリクエストごとに 1 回作成またはルックアップされます (交換)。リクエストの処理中に Bean に状態を保存する場合や、リクエストの処理中に同じ Bean インスタンスを複数回呼び出す場合に使用できます。インスタンスは同じリクエストからのみ呼び出されるため、Bean はスレッドセーフである必要はありません。delegate スコープを使用すると、呼び出しごとに Bean が検索または作成されます。ただしルックアップの場合、これは Spring や CDI (使用されている場合) などの Bean レジストリーに委譲され、設定に応じてシングルトンまたはプロトタイプスコープのいずれかとして機能します。したがって、いつプロトタイプを使用するかは委譲されたレジストリーにより異なります。 | BeanScope | |
| camel.language.bean.enabled | Bean 言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.bean.scope | Bean のスコープ。シングルトンスコープ (デフォルト) を使用する場合、Bean は 1 回のみ作成または検索され、エンドポイントの有効期間に再利用されます。同時スレッドが同時に Bean を呼び出す場合、Bean はスレッドセーフである必要があります。リクエストスコープを使用する場合、Bean はリクエストごとに 1 回作成またはルックアップされます (交換)。リクエストの処理中に Bean に状態を保存する場合や、リクエストの処理中に同じ Bean インスタンスを複数回呼び出す場合に使用できます。インスタンスは同じリクエストからのみ呼び出されるため、Bean はスレッドセーフである必要はありません。プロトタイプコープを使用すると、呼び出しごとに Bean がルックアップまたは作成されます。ただしルックアップの場合、これは Spring や CDI (使用されている場合) などの Bean レジストリーに委譲され、設定に応じてシングルトンまたはプロトタイプスコープのいずれかとして機能します。そのため、プロトタイプスコープを使用する場合、これは Bean レジストリーの実装によって異なります。 | シングルトン | String |
| camel.language.bean.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.component.bean.cache | 非推奨 代わりにシングルトンオプションを使用してください。 | true | Boolean |
| camel.component.class.cache | 非推奨 代わりにシングルトンオプションを使用してください。 | true | Boolean |
第16章 Bean バリデーター リンクのコピーリンクがクリップボードにコピーされました!
producer のみサポート対象
バリデーターコンポーネントは、Java Bean Validation API () を使用してメッセージボディーの Bean 検証を実行します。Camel は Hibernate Validator のリファレンス実装を使用します。
16.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で bean-validator を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-bean-validator-starter</artifactId>
</dependency>
16.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
bean-validator:label[?options]
label は、エンドポイントを記述する任意のテキスト値です。URI には、次の形式でクエリーオプションを追加できます。
?option=value&option=value&…
16.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
16.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
16.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
16.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
Bean バリデーターコンポーネントは、以下に示す 8 つのオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| ignoreXmlConfiguration (producer) | META-INF/validation.xml ファイルからのデータを無視するかどうか。 | false | boolean |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| constraintValidatorFactory (advanced) | カスタムの ConstraintValidatorFactory を使用します。 | ConstraintValidatorFactory | |
| messageInterpolator (advanced) | カスタムの MessageInterpolator を使用します。 | MessageInterpolator | |
| traversableResolver (advanced) | カスタムの TraversableResolver を使用します。 | TraversableResolver | |
| validationProviderResolver (advanced) | カスタムの ValidationProviderResolver を使用します。 | ValidationProviderResolver | |
| validatorFactory (advanced) | Autowired: カスタムの ValidatorFactory を使用します。 | ValidatorFactory |
16.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Bean バリデーターエンドポイントは URI 構文を使用して設定されます。
bean-validator:label
パスおよびクエリーパラメーターを使用します。
16.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| label (producer) | 必須 ラベルは、エンドポイントを記述する任意のテキスト値です。 | String |
16.5.2. クエリーパラメーター (8 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| group (producer) | カスタム検証グループを使用します。 | javax.validation.groups.Default | String |
| ignoreXmlConfiguration (producer) | META-INF/validation.xml ファイルからのデータを無視するかどうか。 | false | boolean |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| constraintValidatorFactory (advanced) | カスタムの ConstraintValidatorFactory を使用します。 | ConstraintValidatorFactory | |
| messageInterpolator (advanced) | カスタムの MessageInterpolator を使用します。 | MessageInterpolator | |
| traversableResolver (advanced) | カスタムの TraversableResolver を使用します。 | TraversableResolver | |
| validationProviderResolver (advanced) | カスタムの ValidationProviderResolver を使用します。 | ValidationProviderResolver | |
| validatorFactory (advanced) | カスタムの ValidatorFactory を使用します。 | ValidatorFactory |
16.6. OSGi デプロイメント リンクのコピーリンクがクリップボードにコピーされました!
OSGi 環境で Hibernate Validator を使用するには、org.apache.camel.component.bean.validator.HibernateValidationProviderResolver と同様に専用の ValidationProviderResolver 実装を使用します。以下のスニペットは、このアプローチを示しています。HibernateValidationProviderResolver も使用できます。
Using HibernateValidationProviderResolver
from("direct:test").
to("bean-validator://ValidationProviderResolverTest?validationProviderResolver=#myValidationProviderResolver");
<bean id="myValidationProviderResolver" class="org.apache.camel.component.bean.validator.HibernateValidationProviderResolver"/>
カスタムの ValidationProviderResolver が定義されておらず、バリデーターコンポーネントが OSGi 環境にデプロイされている場合、HibernateValidationProviderResolver は自動的に使用されます。
16.7. 例 リンクのコピーリンクがクリップボードにコピーされました!
以下を持つ Java Bean があると仮定します。アノテーション:
Car.java
public class Car {
@NotNull
private String manufacturer;
@NotNull
@Size(min = 5, max = 14, groups = OptionalChecks.class)
private String licensePlate;
// getter and setter
}
カスタムバリデーショングループのインターフェイス定義:
OptionalChecks.java
public interface OptionalChecks {
}
以下の Camel ルート。manufacturer および licensePlate 属性の @NotNull 制約のみが検証されます (Camel はデフォルトのグループ javax.validation.groups.Default を使用します)。
from("direct:start")
.to("bean-validator://x")
.to("mock:end")
OptionalChecks グループからの制約を確認する場合は、以下のようなルートを定義する必要があります。
from("direct:start")
.to("bean-validator://x?group=OptionalChecks")
.to("mock:end")
両方のグループからの制約を確認する場合は、最初に新しいインターフェイスを定義する必要があります。
AllChecks.java
@GroupSequence({Default.class, OptionalChecks.class})
public interface AllChecks {
}
ルート定義は以下のようになります。
from("direct:start")
.to("bean-validator://x?group=AllChecks")
.to("mock:end")
また、独自のメッセージインターポレーター、通過可能なリゾルバー、および制約バリデーターファクトリーを提供する必要がある場合は、次のようなルートを記述する必要があります。
<bean id="myMessageInterpolator" class="my.ConstraintValidatorFactory" />
<bean id="myTraversableResolver" class="my.TraversableResolver" />
<bean id="myConstraintValidatorFactory" class="my.ConstraintValidatorFactory" />
from("direct:start")
.to("bean-validator://x?group=AllChecks&messageInterpolator=#myMessageInterpolator
&traversableResolver=#myTraversableResolver&constraintValidatorFactory=#myConstraintValidatorFactory")
.to("mock:end")
また、制約を Java アノテーションではなく、XML として記述することも可能です。この場合、次のようなファイル META-INF/validation.xml を提供する必要があります。
validation.xml
<validation-config
xmlns="http://jboss.org/xml/ns/javax/validation/configuration"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration">
<default-provider>org.hibernate.validator.HibernateValidator</default-provider>
<message-interpolator>org.hibernate.validator.engine.ResourceBundleMessageInterpolator</message-interpolator>
<traversable-resolver>org.hibernate.validator.engine.resolver.DefaultTraversableResolver</traversable-resolver>
<constraint-validator-factory>org.hibernate.validator.engine.ConstraintValidatorFactoryImpl</constraint-validator-factory>
<constraint-mapping>/constraints-car.xml</constraint-mapping>
</validation-config>
constraints-car.xml ファイル
constraints-car.xml
<constraint-mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.0.xsd"
xmlns="http://jboss.org/xml/ns/javax/validation/mapping">
<default-package>org.apache.camel.component.bean.validator</default-package>
<bean class="CarWithoutAnnotations" ignore-annotations="true">
<field name="manufacturer">
<constraint annotation="javax.validation.constraints.NotNull" />
</field>
<field name="licensePlate">
<constraint annotation="javax.validation.constraints.NotNull" />
<constraint annotation="javax.validation.constraints.Size">
<groups>
<value>org.apache.camel.component.bean.validator.OptionalChecks</value>
</groups>
<element name="min">5</element>
<element name="max">14</element>
</constraint>
</field>
</bean>
</constraint-mappings>
OrderedChecks のサンプルルート定義の XML 構文を次に示します。
ボディーには検証するクラスのインスタンスを含める必要があることに注意してください。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:start"/>
<to uri="bean-validator://x?group=org.apache.camel.component.bean.validator.OrderedChecks"/>
</route>
</camelContext>
</beans>
16.8. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントは、以下に示す 9 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.bean-validator.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.bean-validator.constraint-validator-factory | カスタムの ConstraintValidatorFactory を使用します。オプションは javax.validation.ConstraintValidatorFactory タイプです。 | ConstraintValidatorFactory | |
| camel.component.bean-validator.enabled | bean-validator コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.bean-validator.ignore-xml-configuration | META-INF/validation.xml ファイルからのデータを無視するかどうか。 | false | Boolean |
| camel.component.bean-validator.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.bean-validator.message-interpolator | カスタムの MessageInterpolator を使用します。オプションは javax.validation.MessageInterpolator タイプです。 | MessageInterpolator | |
| camel.component.bean-validator.traversable-resolver | カスタムの TraversableResolver を使用します。オプションは javax.validation.TraversableResolver タイプです。 | TraversableResolver | |
| camel.component.bean-validator.validation-provider-resolver | カスタムの ValidationProviderResolver を使用します。オプションは javax.validation.ValidationProviderResolver タイプです。 | ValidationProviderResolver | |
| camel.component.bean-validator.validator-factory | カスタムの ValidatorFactory を使用します。オプションは javax.validation.ValidatorFactory タイプです。 | ValidatorFactory |
第17章 Bindy リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントの目的は、アノテーションでバインディングマッピングが定義された Java Bean との間で、非構造化データ (より正確には非 XML データ) の解析/バインディングを可能にすることです。Bindy を使用すると、次のようなソースからデータをバインドできます。
- CSV レコード、
- 固定長レコード、
- FIX メッセージ、
- またはほとんどすべての非構造化データ
1 つまたは複数の Plain Old Java Object (POJO)。Bindy は、Java プロパティーの型に従ってデータを変換します。POJO は、場合によっては利用可能な 1 対多の関係と合わせてリンクできます。さらに、Date、Double、Float、Integer、Short、Long、BigDecimal などのデータ型の場合に、プロパティーのフォーマット中に適用するパターンを指定できます。
BigDecimal 数値の場合、精度と小数点またはグループ区切り記号も定義できます。
| 型 | フォーマットの種類 | パターン例 | リンク |
|---|---|---|---|
| 日付 |
|
| https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/text/SimpleDateFormat.html |
| Decimal* |
|
| https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/text/DecimalFormat.html |
Decimal には Double、Integer、Float、Short、Long を指定できます。
対応フォーマット
この最初のリリースでは、コンマ区切りの値フィールドとキーと値のペアフィールド (例: FIX メッセージ) のみがサポートされています。
camel-bindy を使用するには、最初にモデルをパッケージ (例: com.acme.model) で定義し、モデルクラス (例: Order、Client、Instrument など) ごとに必要なアノテーション (後述) をクラスまたはフィールドに追加する必要があります。
複数のモデル
パッケージ名の代わりにクラス名を使用して bindy を設定すると、複数のモデルを同じパッケージに入れることができます。
17.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で bindy-csv を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-bindy-starter</artifactId>
</dependency>
17.2. オプション リンクのコピーリンクがクリップボードにコピーされました!
Bindy データ形式は、以下に示す 5 つのオプションをサポートしています。
| 名前 | デフォルト | Java タイプ | 説明 |
|---|---|---|---|
| type |
| 必須: Csv、Fixed、KeyValue のいずれを使用できます。 列挙値:
| |
| classType |
| 使用するモデルクラスの名前。 | |
| locale |
| 米国の us など、使用するデフォルトのロケールを設定します。JVM プラットフォームのデフォルトロケールを使用するには、default という名前を使用します。 | |
| unwrapSingleInstance |
| アンマーシャリング時に、java.util.List にラップする代わりに、単一のインスタンスをアンラップして返す必要があります。 | |
| allowEmptyStream |
| アンマーシャルプロセスで空のストリームを許可するかどうか。true の場合、レコードのないボディが提供されたときに例外は出力されません。 |
17.3. アノテーション リンクのコピーリンクがクリップボードにコピーされました!
作成されたアノテーションにより、モデルのさまざまな概念を次のように POJO にマップできます。
- レコードのタイプ (CSV、キーと値のペア (FIX メッセージなど)、固定長など)、
- リンク (別のオブジェクトにあるオブジェクトをリンクする)、
- DataField とそのプロパティー (int、type、…)、
- KeyValuePairField (FIX 財務メッセージにあるようなキー = 値形式の場合)、
- セクション (ヘッダー、本文、およびフッターセクションを識別する)、
- OneToMany,
- BindyConverter,
- FormatFactories
このセクションでは、上記を説明します。
17.3.1. 1. CsvRecord リンクのコピーリンクがクリップボードにコピーされました!
CsvRecord アノテーションは、モデルのルートクラスを識別するために使用されます。レコード = "CSV ファイルの 1 行" を表し、複数の子モデルクラスにリンクできます。
| アノテーション名 | レコードの種類 | レベル |
|---|---|---|
| CsvRecord | CSV | クラス |
| パラメーター名 | 型 | 必須 | デフォルト値 | Info |
|---|---|---|---|---|
| separator | String | ✓ | トークンでレコードを分割するために使用される区切り記号 (必須): ',' または ';'、'anything' にすることができます。サポートされている唯一の空白文字はタブ (\t) です。その他の空白文字 (スペース) はサポートされていません。この値は正規表現として解釈されます。正規表現で特別な意味を持つ記号を使用する場合は、'|' の記号であれば、'|' のようにマスクする必要があります。 | |
| allowEmptyStream | boolean | false | allowEmptyStream パラメーターは、利用できないストリームを CSV ファイル向けに処理できるようにします。 | |
| autospanLine | boolean | false | Last record spans rest of line (オプション): 有効にすると、コメントなどの場合に、最後の列が自動的に行末に広がります。この設定により、その行にすべての文字と区切り文字を含めることができます。 | |
| crlf | String | WINDOWS | Character to be used to add a carriage return after each record (オプション): 使用するキャリッジリターン文字を定義できます。上記の 3 つ以外の値を指定すると、入力した値 (カスタム) が CRLF 文字として使用されます。WINDOWS、UNIX、MAC、またはカスタムの 3 つの値を使用できます。 | |
| endWithLineBreak | boolean | true | endWithLineBreak パラメーターは、CSV ファイルが改行で終了するかどうかを示します (オプション) | |
| generateHeaderColumns | boolean | false | generateHeaderColumns パラメーターを使用すると、列の名前を含むヘッダーを生成した CSV に追加できます | |
| isOrdered | boolean | false | 出力でメッセージを並べ替える必要があるかどうかを示します | |
| name | String | レコードを説明する名前 (オプション) | ||
| quote | String | " | 指定された引用文字で列をマーシャリングするかどうか (オプション): CSV の生成時にフィールドの引用文字を指定できるようにします。このアノテーションは、モデルのルートクラスに関連付けられており、一度宣言する必要があります。 | |
| 引用 | boolean | false | マーシャリング時に値 (およびヘッダー) を引用符で囲む必要があるかどうかを示します (オプション) | |
| quotingEscaped | boolean | false | 引用時に値をエスケープする必要があるかどうかを示します (オプション) | |
| removeQuotes | boolean | true | remove quotes パラメーターフラグ。アンマーシャリングで各フィールドの引用符を削除しようとするかどうか。 | |
| skipField | boolean | false | skipField パラメーターを使用すると、CSV ファイルのフィールドをスキップできます。一部のフィールドが不要な場合は、スキップできます。 | |
| skipFirstLine | boolean | false | skipFirstLine パラメーターを使用すると、CSV ファイルの最初の行をスキップするかどうかを指定できます。この行には、多くの場合、列の定義が含まれています | |
| trimLine | boolean | true | 行を解析する前に、各行 (スタンドとエンド) をデータフィールドに合わせてトリミングするかどうか。 |
ケース 1: separator = ','
CSV レコード内のフィールド分離に使用されるセパレーターは , です。
10, J, Pauline, M, XD12345678, Fortis Dynamic 15/15, 2500, USD, 08-01-2009
@CsvRecord( separator = "," )
public Class Order {
}
ケース 2: separator = ';'
前のケースと比較して、ここでのセパレーターは , の代わり ; を使用しています。
10; J; Pauline; M; XD12345678; Fortis Dynamic 15/15; 2500; USD; 08-01-2009
@CsvRecord( separator = ";" )
public Class Order {
}
ケース 3: separator = '|'
前のケースと比較して、ここでのセパレーターは ; の代わり | を使用しています。
10| J| Pauline| M| XD12345678| Fortis Dynamic 15/15| 2500| USD| 08-01-2009
@CsvRecord( separator = "\\|" )
public Class Order {
}
ケース 4: separator = '\",\"'
Camel 2.8.2 以前に該当
CSV レコードの解析対象フィールドに , または ; が含まれる場合。これはセパレーターとしても使用されるため、Camel バインドにこのケースの処理方法を伝える別のストラテジーを見つける必要があります。データを含むフィールドをコンマで定義するには、一重引用符または二重引用符を区切り文字として使用します (例: '10', 'Street 10, NY', 'USA' or "10", "Street 10, NY", "USA")。
この場合、行頭または行末にある一重引用符または二重引用符の文字は bindy によって削除されます。
"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15","2500","USD","08-01-2009"
@CsvRecord( separator = "\",\"" )
public Class Order {
}
Bindy は、レコードが一重引用符または二重引用符で囲まれているかどうかを自動的に検出し、CSV からオブジェクトへのアンマーシャリング時にそれらの引用符を自動的に削除します。したがって、セパレーターに引用符を 含めず に、単に以下を実行するだけです。
"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15","2500","USD","08-01-2009"
@CsvRecord( separator = "," )
public Class Order {
}
Object から CSV にマーシャリングして引用符を使用する場合は、以下に示すように@CsvRecord の quote 属性を使用して、使用する引用符を指定する必要があることに注意してください。
@CsvRecord( separator = ",", quote = "\"" )
public Class Order {
}
ケース 5: separator & skipFirstLine
この機能は、クライアントがファイルの最初の行にデータフィールドの名前を入れる場合に役立ちます。
order id, client id, first name, last name, isin code, instrument name, quantity, currency, date
解析プロセス中にこの最初の行をスキップする必要があることを bindy に通知するには、次の属性を使用します。
@CsvRecord(separator = ",", skipFirstLine = true)
public Class Order {
}
ケース 6: generateHeaderColumns
生成された CSV の最初の行に追加するには、次のようにアノテーションで属性 generateHeaderColumns を true に設定する必要があります。
@CsvRecord( generateHeaderColumns = true )
public Class Order {
}
その結果、アンマーシャリングプロセス中の Bindy は、次のような CSV を生成します。
order id, client id, first name, last name, isin code, instrument name, quantity, currency, date
10, J, Pauline, M, XD12345678, Fortis Dynamic 15/15, 2500, USD, 08-01-2009
ケース 7: carriage return
camel-bindy が実行されるプラットフォームが Windows ではなく、Macintosh または Unix である場合には、次のように crlf プロパティーを変更できます。WINDOWS、UNIX、または MAC の 3 つの値を使用できます。
@CsvRecord(separator = ",", crlf="MAC")
public Class Order {
}
さらに、何らかの理由で別の行末文字を追加する必要がある場合は、crlf パラメーターを使用して指定できます。次の例では、コンマとそれに続く改行文字で行を終了できます。
@CsvRecord(separator = ",", crlf=",\n")
public Class Order {
}
ケース 8: isOrdered
モデルから CSV レコードを作成する際に従う順序が、解析時に使用される順序と異なる場合があります。次に、この場合、属性 isOrdered = true を使用して、DataField アノテーションの属性 position と組み合わせて指定できます。
@CsvRecord(isOrdered = true)
public Class Order {
@DataField(pos = 1, position = 11)
private int orderNr;
@DataField(pos = 2, position = 10)
private String clientNr;
}
pos はファイルストリームの解析に、position は CSV の生成に使用されます。
17.3.2. 2. リンク リンクのコピーリンクがクリップボードにコピーされました!
リンクアノテーションを使用すると、オブジェクトを相互にリンクできます。
| アノテーション名 | レコードの種類 | レベル |
|---|---|---|
| リンク | all | クラスとプロパティー |
| パラメーター名 | 型 | 必須 | デフォルト値 | Info |
|---|---|---|---|---|
| linkType | LinkType | OneToOne | クラス間の関係を識別するリンクのタイプ |
現在のバージョンでは、1 対 1 の関係のみが許可されています。
例: モデルクラス Client が Order クラスにリンクされている場合には、次のように Order クラスでアノテーション Link を使用します。
プロパティーリンク
@CsvRecord(separator = ",")
public class Order {
@DataField(pos = 1)
private int orderNr;
@Link
private Client client;
}
クラス Client の場合:
クラスリンク
@Link
public class Client {
}
17.3.3. 3. DataField リンクのコピーリンクがクリップボードにコピーされました!
DataField アノテーションは、フィールドのプロパティーを定義します。各データフィールドは、レコード内の位置、タイプ (string、int、date など)、およびパターン (任意) によって識別されます。
| アノテーション名 | レコードの種類 | レベル |
|---|---|---|
| DataField | all | プロパティー |
| パラメーター名 | 型 | 必須 | デフォルト値 | Info |
|---|---|---|---|---|
| pos | int | ✓ | 入力レコード内のデータの位置。1 から開始する必要があります (必須)。位置パラメーターを参照してください。 | |
| align | String | R | テキストを右または左に揃えます。値 <tt>R</tt> または <tt>L</tt> を使用します。 | |
| clip | boolean | false | 固定長の使用時に許容される長さを超える場合は、フィールド内のデータを切り取ることを示します。 | |
| columnName | String |
ヘッダー列の名前 (オプション)。プロパティーの名前をデフォルトとして使用します。 | ||
| decimalSeparator | String | BigDecimal 数値で使用する小数点区切り記号 | ||
| defaultValue | String | 値が設定されていない場合のフィールドのデフォルト値 | ||
| delimiter | String | フィールドが可変長の場合に使用するオプションの区切り文字 | ||
| groupingSeparator | String | 123,456.789 などのグループ化された数値にフォーマット/解析する場合に、BigDecimal 数値と併用するグループ化セパレーター。 | ||
| impliedDecimalSeparator | boolean | false | 指定された位置に暗黙の小数点があるかどうかを示します | |
| 長さ | int | 0 | レコードが固定長に設定されている場合のデータブロックの長さ (文字数) | |
| lengthPos | int | 0 | このフィールドで必要とされる固定長を定義するレコードのデータフィールドを識別します | |
| メソッド | String | このようなカスタマイズを DataField に適用するために呼び出すメソッド名。これは、データフィールド自体のメソッドである必要があります。そうでない場合には、クラスのメソッドの静的な完全修飾名を指定する必要があります。(例: org.apache.camel.dataformat.bindy.csv.BindySimpleCsvFunctionWithExternalMethodTest.replaceToBar の単体テストを参照) | ||
| name | String | フィールドの名前 (オプション) | ||
| paddingChar | char | レコードが固定長に設定されている場合に埋め込む文字 | ||
| pattern | String | Java フォーマッター (例: SimpleDateFormat) がデータの変換に使用するパターン (オプション)。パターンを使用する場合は、バインドデータ形式にロケールを設定することを推奨します。"us" などの既知のロケールに設定するか、"default" を使用してプラットフォームのデフォルトロケールを使用します。 | ||
| position | int | 0 | 生成された出力メッセージ内のフィールドの位置 (1 から開始する必要があります)。生成された CSV 内のフィールドの位置 (出力メッセージ) が、入力位置 (pos) と比較して異なる必要がある場合に使用します。pos パラメーターを参照してください。 | |
| 精度 | int | 0 | 作成される \{@link java.math.BigDecimal} 数値の精度 | |
| 必須 | boolean | false | フィールドが必須かどうかを示します | |
| rounding | String | CEILING | BigDecimal の丸め/スケーリングに使用される丸めモード値: UP、DOWN、CEILING、FLOOR、HALF_UP、HALF_DOWN、HALF_EVEN、UNNECESSARY (例: Number = 123456.789, Precision = 2, Rounding = CEILING Result : 123456.79) | |
| timezone | String | 使用するタイムゾーン。 | ||
| trim | boolean | false | 値をトリミングする必要があるかどうかを示します |
ケース 1: pos
このパラメーター/属性は、CSV レコード内のフィールドの位置を表します。
Position
@CsvRecord(separator = ",")
public class Order {
@DataField(pos = 1)
private int orderNr;
@DataField(pos = 5)
private String isinCode;
}
この例でわかるように、位置は 1 から始まりますが、クラス Order では続きは 5 になります。2 から 4 までの数字はクラス Client で定義されています (以下を参照)。
位置は別のモデルクラスで継続する
public class Client {
@DataField(pos = 2)
private String clientNr;
@DataField(pos = 3)
private String firstName;
@DataField(pos = 4)
private String lastName;
}
ケース 2: pattern
パターンを使用すると、データの形式を強化または検証できます
Pattern
@CsvRecord(separator = ",")
public class Order {
@DataField(pos = 1)
private int orderNr;
@DataField(pos = 5)
private String isinCode;
@DataField(name = "Name", pos = 6)
private String instrumentName;
@DataField(pos = 7, precision = 2)
private BigDecimal amount;
@DataField(pos = 8)
private String currency;
// pattern used during parsing or when the date is created
@DataField(pos = 9, pattern = "dd-MM-yyyy")
private Date orderDate;
}
ケース 3: precision
精度は、数値の小数部分を定義する場合に役立ちます。
精度
@CsvRecord(separator = ",")
public class Order {
@DataField(pos = 1)
private int orderNr;
@Link
private Client client;
@DataField(pos = 5)
private String isinCode;
@DataField(name = "Name", pos = 6)
private String instrumentName;
@DataField(pos = 7, precision = 2)
private BigDecimal amount;
@DataField(pos = 8)
private String currency;
@DataField(pos = 9, pattern = "dd-MM-yyyy")
private Date orderDate;
}
ケース 4: 出力で位置が異なる
position 属性は、生成された CSV レコードにフィールドを配置する方法を bindy に通知します。デフォルトでは、使用される位置は属性 pos で定義された位置に対応します。位置が異なる場合 (つまり、マーシャリングとアンマーシャリングを比較する非対称プロセスがあることを意味します)、position を使用してこれを指定できます。
以下に例を示します。
出力位置が異なる
@CsvRecord(separator = ",", isOrdered = true)
public class Order {
// Positions of the fields start from 1 and not from 0
@DataField(pos = 1, position = 11)
private int orderNr;
@DataField(pos = 2, position = 10)
private String clientNr;
@DataField(pos = 3, position = 9)
private String firstName;
@DataField(pos = 4, position = 8)
private String lastName;
@DataField(pos = 5, position = 7)
private String instrumentCode;
@DataField(pos = 6, position = 6)
private String instrumentNumber;
}
アノテーション @DataField のこの属性は、アノテーション @CsvRecord の属性 isOrdered = true と組み合わせて使用する必要があります。
ケース 5: 必須
フィールドが必須の場合は、required 属性を true に設定して使用します。
必須
@CsvRecord(separator = ",")
public class Order {
@DataField(pos = 1)
private int orderNr;
@DataField(pos = 2, required = true)
private String clientNr;
@DataField(pos = 3, required = true)
private String firstName;
@DataField(pos = 4, required = true)
private String lastName;
}
このフィールドがレコードに存在しない場合には、パーサーにより次の情報を含めてエラーが報告されます。
Some fields are missing (optional or mandatory), line :
ケース 6: trim
フィールドの先頭および/または末尾にスペースがあり、処理する前に削除する必要がある場合は、trim 属性を true に設定してください。
Trim
@CsvRecord(separator = ",")
public class Order {
@DataField(pos = 1, trim = true)
private int orderNr;
@DataField(pos = 2, trim = true)
private Integer clientNr;
@DataField(pos = 3, required = true)
private String firstName;
@DataField(pos = 4)
private String lastName;
}
ケース 7: defaultValue
フィールドが定義されていない場合は、defaultValue 属性で示される値が使用されます。
デフォルト値
@CsvRecord(separator = ",")
public class Order {
@DataField(pos = 1)
private int orderNr;
@DataField(pos = 2)
private Integer clientNr;
@DataField(pos = 3, required = true)
private String firstName;
@DataField(pos = 4, defaultValue = "Barin")
private String lastName;
}
ケース 8: columnName
@CsvRecord にアノテーション generateHeaderColumns = true がある場合にのみ、プロパティーの列名を指定します。
列名
@CsvRecord(separator = ",", generateHeaderColumns = true)
public class Order {
@DataField(pos = 1)
private int orderNr;
@DataField(pos = 5, columnName = "ISIN")
private String isinCode;
@DataField(name = "Name", pos = 6)
private String instrumentName;
}
この属性は、オプションのフィールドにのみ適用されます。
17.3.4. 4.FixedLengthRecord リンクのコピーリンクがクリップボードにコピーされました!
FixedLengthRecord アノテーションは、モデルのルートクラスを識別するために使用されます。これは、レコード = "固定長 (文字数) でフォーマットされたデータを含むファイル/メッセージの行" を表し、複数の子モデルクラスにリンクできます。フィールドのデータは右または左に位置合わせできるため、この形式は少し特殊です。
データのサイズがフィールドの長さを完全に満たしていない場合は、'pad' 文字を追加できます。
| アノテーション名 | レコードの種類 | レベル |
|---|---|---|
| FixedLengthRecord | 固定: | クラス |
| パラメーター名 | 型 | 必須 | デフォルト値 | Info |
|---|---|---|---|---|
| countGrapheme | boolean | false | 文字数のカウント方法を示します | |
| crlf | String | WINDOWS | 各レコードの後に改行を追加するために使用する文字 (オプション)。使用可能な値: WINDOWS、UNIX、MAC、またはカスタム。このオプションはマーシャリング中にのみ使用されますが、アンマーシャリングでは、eol がカスタマイズされていない限り、JDK が提供するシステムのデフォルトの行区切り文字が使用されます。 | |
| eol | String | アンマーシャリング中に各レコードの後ろの行末を考慮する処理に使用される文字 (オプション、デフォルト: "" で、他の行区切り文字が指定されていない場合にデフォルトの JDK が提供する行区切り文字を使用できるようにします)。このオプションは、アンマーシャリング中にのみ使用されます。他の値が指定されていない限り、マーシャリング時に "WINDOWS" として、システムのデフォルトで提供される行区切り文字を使用します。 | ||
| footer | クラス | void | このタイプのレコードでは、ファイルの最後に単一のフッターレコードが続く可能性があることを指定します。 | |
| header | Class | void | このタイプのレコードでは、ファイルの先頭に単一のヘッダーレコードがある可能性があることを指定します。 | |
| ignoreMissingChars | boolean | false | 短すぎる行を無視するかどうかを示します | |
| ignoreTrailingChars | boolean | false | アンマーシャリング/解析時に、最後にマップされたフィールドを超える文字を無視できることを示します。このアノテーションは、モデルのルートクラスに関連付けられており、一度宣言する必要があります。 | |
| 長さ | int | 0 | レコードの固定長 (文字数)。これは、レコードが常に \{#paddingChar ()} でパディングされることを意味します | |
| name | String | レコードを説明する名前 (オプション) | ||
| paddingChar | char | パディングする文字。 | ||
| skipFooter | boolean | false | フッターレコードのマーシャリング/アンマーシャリングをスキップするようにデータ形式を設定します。プライマリーレコードでこのパラメーターを設定します (たとえば、ヘッダーやフッターではありません)。 | |
| skipHeader | boolean | false | ヘッダーレコードのマーシャリング/アンマーシャリングをスキップするようにデータ形式を設定します。プライマリーレコードでこのパラメーターを設定します (たとえば、ヘッダーやフッターではありません)。 |
レコードは、ヘッダー/フッターと、プライマリーの固定長レコードを両方に指定できません。
ケース 1: 単純な固定長レコード
この単純な例は、固定メッセージを解析/フォーマットするモデル設計方法を示しています
10A9PaulineMISINXD12345678BUYShare2500.45USD01-08-2009
Fixed-simple
@FixedLengthRecord(length=54, paddingChar=' ')
public static class Order {
@DataField(pos = 1, length=2)
private int orderNr;
@DataField(pos = 3, length=2)
private String clientNr;
@DataField(pos = 5, length=7)
private String firstName;
@DataField(pos = 12, length=1, align="L")
private String lastName;
@DataField(pos = 13, length=4)
private String instrumentCode;
@DataField(pos = 17, length=10)
private String instrumentNumber;
@DataField(pos = 27, length=3)
private String orderType;
@DataField(pos = 30, length=5)
private String instrumentType;
@DataField(pos = 35, precision = 2, length=7)
private BigDecimal amount;
@DataField(pos = 42, length=3)
private String currency;
@DataField(pos = 45, length=10, pattern = "dd-MM-yyyy")
private Date orderDate;
}
ケース 2: アラインメントとパディングのある固定長レコード
こちらの詳細な例は、フィールドの配置を定義する方法と、ここで ' ' であるパディング文字を割り当てる方法を示しています。
10A9 PaulineM ISINXD12345678BUYShare2500.45USD01-08-2009
Fixed-padding-align
@FixedLengthRecord(length=60, paddingChar=' ')
public static class Order {
@DataField(pos = 1, length=2)
private int orderNr;
@DataField(pos = 3, length=2)
private String clientNr;
@DataField(pos = 5, length=9)
private String firstName;
@DataField(pos = 14, length=5, align="L") // align text to the LEFT zone of the block
private String lastName;
@DataField(pos = 19, length=4)
private String instrumentCode;
@DataField(pos = 23, length=10)
private String instrumentNumber;
@DataField(pos = 33, length=3)
private String orderType;
@DataField(pos = 36, length=5)
private String instrumentType;
@DataField(pos = 41, precision = 2, length=7)
private BigDecimal amount;
@DataField(pos = 48, length=3)
private String currency;
@DataField(pos = 51, length=10, pattern = "dd-MM-yyyy")
private Date orderDate;
}
ケース 3: フィールドパディング
' ' の代わりに '0' をパディングする数値形式があるため、レコードに定義されたデフォルトのパディングをフィールドに適用できない場合があります。この場合、モデルで @DataField の属性 paddingChar を使用して、この値を設定できます。
10A9 PaulineM ISINXD12345678BUYShare000002500.45USD01-08-2009
Fixed-padding-field
@FixedLengthRecord(length = 65, paddingChar = ' ')
public static class Order {
@DataField(pos = 1, length = 2)
private int orderNr;
@DataField(pos = 3, length = 2)
private String clientNr;
@DataField(pos = 5, length = 9)
private String firstName;
@DataField(pos = 14, length = 5, align = "L")
private String lastName;
@DataField(pos = 19, length = 4)
private String instrumentCode;
@DataField(pos = 23, length = 10)
private String instrumentNumber;
@DataField(pos = 33, length = 3)
private String orderType;
@DataField(pos = 36, length = 5)
private String instrumentType;
@DataField(pos = 41, precision = 2, length = 12, paddingChar = '0')
private BigDecimal amount;
@DataField(pos = 53, length = 3)
private String currency;
@DataField(pos = 56, length = 10, pattern = "dd-MM-yyyy")
private Date orderDate;
}
ケース 4: 区切り文字付きの固定長レコード
固定長レコードでは、レコード内のコンテンツが区切られている場合があります。次の例では、firstName フィールドと lastName フィールドが ^ 文字で区切られています。
10A9Pauline^M^ISINXD12345678BUYShare000002500.45USD01-08-2009
Fixed-delimited
@FixedLengthRecord
public static class Order {
@DataField(pos = 1, length = 2)
private int orderNr;
@DataField(pos = 2, length = 2)
private String clientNr;
@DataField(pos = 3, delimiter = "^")
private String firstName;
@DataField(pos = 4, delimiter = "^")
private String lastName;
@DataField(pos = 5, length = 4)
private String instrumentCode;
@DataField(pos = 6, length = 10)
private String instrumentNumber;
@DataField(pos = 7, length = 3)
private String orderType;
@DataField(pos = 8, length = 5)
private String instrumentType;
@DataField(pos = 9, precision = 2, length = 12, paddingChar = '0')
private BigDecimal amount;
@DataField(pos = 10, length = 3)
private String currency;
@DataField(pos = 11, length = 10, pattern = "dd-MM-yyyy")
private Date orderDate;
}
固定長レコードの pos 値は、オプションで、正確な列番号の代わりに序数の連続した値を使用して定義できます。
ケース 5: レコード定義フィールド長の固定長レコード
固定長レコードには、同じレコード内の別のフィールドで必要とされる長さを定義するフィールドが含まれる場合があります。次の例では、instrumentNumber フィールド値の長さは、レコード内の instrumentNumberLen フィールドの値によって定義されます。
10A9Pauline^M^ISIN10XD12345678BUYShare000002500.45USD01-08-2009
Fixed-delimited
@FixedLengthRecord
public static class Order {
@DataField(pos = 1, length = 2)
private int orderNr;
@DataField(pos = 2, length = 2)
private String clientNr;
@DataField(pos = 3, delimiter = "^")
private String firstName;
@DataField(pos = 4, delimiter = "^")
private String lastName;
@DataField(pos = 5, length = 4)
private String instrumentCode;
@DataField(pos = 6, length = 2, align = "R", paddingChar = '0')
private int instrumentNumberLen;
@DataField(pos = 7, lengthPos=6)
private String instrumentNumber;
@DataField(pos = 8, length = 3)
private String orderType;
@DataField(pos = 9, length = 5)
private String instrumentType;
@DataField(pos = 10, precision = 2, length = 12, paddingChar = '0')
private BigDecimal amount;
@DataField(pos = 11, length = 3)
private String currency;
@DataField(pos = 12, length = 10, pattern = "dd-MM-yyyy")
private Date orderDate;
}
ケース 6: ヘッダーとフッター付きの固定長レコード
Bindy は、モデルの一部として設定されている固定長のヘッダーおよびフッターレコードを検出します。ただし、アノテーション付きのクラスが、プライマリー @FixedLengthRecord クラスと同じパッケージに存在するか、設定されたスキャンパッケージの 1 つに含まれている必要があります。次のテキストは、ヘッダーレコードとフッターレコードで囲まれた 2 つの固定長レコードを示しています。
101-08-2009
10A9 PaulineM ISINXD12345678BUYShare000002500.45USD01-08-2009
10A9 RichN ISINXD12345678BUYShare000002700.45USD01-08-2009
9000000002
Fixed-header-and-footer-main-class
@FixedLengthRecord(header = OrderHeader.class, footer = OrderFooter.class)
public class Order {
@DataField(pos = 1, length = 2)
private int orderNr;
@DataField(pos = 2, length = 2)
private String clientNr;
@DataField(pos = 3, length = 9)
private String firstName;
@DataField(pos = 4, length = 5, align = "L")
private String lastName;
@DataField(pos = 5, length = 4)
private String instrumentCode;
@DataField(pos = 6, length = 10)
private String instrumentNumber;
@DataField(pos = 7, length = 3)
private String orderType;
@DataField(pos = 8, length = 5)
private String instrumentType;
@DataField(pos = 9, precision = 2, length = 12, paddingChar = '0')
private BigDecimal amount;
@DataField(pos = 10, length = 3)
private String currency;
@DataField(pos = 11, length = 10, pattern = "dd-MM-yyyy")
private Date orderDate;
}
@FixedLengthRecord
public class OrderHeader {
@DataField(pos = 1, length = 1)
private int recordType = 1;
@DataField(pos = 2, length = 10, pattern = "dd-MM-yyyy")
private Date recordDate;
}
@FixedLengthRecord
public class OrderFooter {
@DataField(pos = 1, length = 1)
private int recordType = 9;
@DataField(pos = 2, length = 9, align = "R", paddingChar = '0')
private int numberOfRecordsInTheFile;
}
ケース 7: 固定長レコードの解析時にコンテンツをスキップする
ターゲットユースケースに必要以上の情報を含む、固定長レコードを提供するシステムと統合するのが一般的です。この状況では、不要なフィールドの宣言と解析をスキップすると便利です。これに対応するために、次に宣言されたフィールドの pos 値が最後に解析されたフィールドのカーソル位置を超えている場合には、Bindy により、レコード内で次にマップされたフィールドに移動されます。対象のフィールドに (順序値ではなく) 絶対位置を使用すると、Bindy は 2 つのフィールド間のコンテンツをスキップします。
同様に、先のフィールドに対象となるコンテンツがない場合があります。この場合には、@FixedLengthRecord 宣言で ignoreTrailingChars プロパティーを設定して、最後にマップされたフィールド以降のすべての解析をスキップするように Bindy に指示できます。
@FixedLengthRecord(ignoreTrailingChars = true)
public static class Order {
@DataField(pos = 1, length = 2)
private int orderNr;
@DataField(pos = 3, length = 2)
private String clientNr;
// any characters that appear beyond the last mapped field will be ignored
}
17.3.5. 5.メッセージ リンクのコピーリンクがクリップボードにコピーされました!
Message アノテーションは、キーと値のペアフィールドを含むモデルのクラスを識別するために使用されます。この種の形式は、主に Financial Exchange Protocol Messages (FIX) で使用されます。いずれの場合も、このアノテーションは、データがキーによって識別される他の形式に使用できます。キーペアの値は、区切り記号で互いに区切られます。区切り文字には、タブ区切り記号 (Unicode 表現: \u0009) または見出しの開始 (Unicode 表現: \u0001) などの特殊文字を使用できます。
FIX メッセージを操作するには、モデルに、Order クラスである可能性があるルートメッセージクラスにリンクされた Header クラスと Trailer クラスが含まれている必要があります。これは必須ではありませんが、camel-bindy を、quickFix プロジェクトに基づく修正ゲートウェイである camel-fix と組み合わせて使用する場合に非常に役立ちます。
| アノテーション名 | レコードの種類 | レベル |
|---|---|---|
| メッセージ | キーと値のペア。 | Class |
| パラメーター名 | 型 | 必須 | デフォルト値 | Info |
|---|---|---|---|---|
| keyValuePairSeparator | String | ✓ | キーと値のペアの区切り文字は、キーから値を分割するために使用されます (必須)。'\u0001'、'\u0009'、'#', または 'anything' を指定できます。 | |
| pairSeparator | String | ✓ | キーと値のペアをトークンに分割するために使用されるペアの区切り文字 (必須)。'='、';'、または 'anything' を指定できます。 | |
| crlf | String | WINDOWS | 各レコードの後に改行を追加するために使用する文字 (オプション)。使用可能な値 = WINDOWS、UNIX、MAC、またはカスタム。上記の 3 つ以外の値を指定すると、入力した値 (カスタム) が CRLF 文字として使用されます。 | |
| isOrdered | boolean | false | 出力でメッセージを並べ替える必要があるかどうかを示します。このアノテーションは、モデルのメッセージクラスに関連付けられており、一度宣言する必要があります。 | |
| name | String | メッセージを説明する名前 (オプション) | ||
| type | String | FIX | type は、メッセージのタイプを定義するために使用されます (FIX、EMX など) (オプション) | |
| version | String | 4.1 | version は、メッセージのバージョンを定義します (4.1 など) (オプション) |
ケース 1: separator = 'u0001'
FIX メッセージでキーと値のペアフィールドを分離するために使用される区切り文字は、ASCII 01 文字または Unicode 形式の \u0001 です。Java ランタイムエラーを回避するには、この文字をもう一度エスケープする必要があります。以下は例です。
8=FIX.4.1 9=20 34=1 35=0 49=INVMGR 56=BRKR 1=BE.CHM.001 11=CHM0001-01 22=4 ...
およびアノテーションの使用方法:
FIX - メッセージ
@Message(keyValuePairSeparator = "=", pairSeparator = "\u0001", type="FIX", version="4.1")
public class Order {
}
テストケースを見る
タブなどの ASCII 文字は、WIKI ページでは表示できません。したがって、camel-bindy のテストケースを見て、FIX メッセージ (https://github.com/apache/camel/blob/main/components/camel-bindy/src/test/data/fix/fix.txt) および Order、Trailer、Header クラス (https://github.com/apache/camel/blob/main/components/camel-bindy/src/test/java/org/apache/camel/dataformat/bindy/model/fix/simple/Order.java) が実際にどのように見えるかを確認してください。
17.3.6. 6.KeyValuePairField リンクのコピーリンクがクリップボードにコピーされました!
KeyValuePairField アノテーションは、キーと値のペアフィールドのプロパティーを定義します。各 KeyValuePairField は、タグ (= キー) とそれに関連付けられた値、タイプ (文字列、整数、日付など)、オプションのパターン、およびフィールドが必須かどうかによって識別されます。
| アノテーション名 | レコードの種類 | レベル |
|---|---|---|
| KeyValuePairField | キーと値のペア - FIX | プロパティー |
| パラメーター名 | 型 | 必須 | デフォルト値 | Info |
|---|---|---|---|---|
| tag | int | ✓ | メッセージ内のフィールドを識別するタグ (必須) - 一意である必要があります | |
| impliedDecimalSeparator | boolean | false | <b>Camel 2.11:</b> 指定された位置に暗黙の小数点があるかどうかを示します | |
| name | String | フィールドの名前 (オプション) | ||
| pattern | String | フォーマッターがデータの変換に使用するパターン (オプション) | ||
| position | int | 0 | 生成されたメッセージ内のフィールドの位置 - FIX メッセージ内のキー/タグの位置が異なる必要がある場合に使用する必要があります | |
| 精度 | int | 0 | 作成する BigDecimal 数値の精度 | |
| 必須 | boolean | false | フィールドが必須かどうかを示します | |
| timezone | String | 使用するタイムゾーン。 |
ケース 1: tag
このパラメーターは、メッセージ内のフィールドのキーを表します。
FIX メッセージ - タグ
@Message(keyValuePairSeparator = "=", pairSeparator = "\u0001", type="FIX", version="4.1")
public class Order {
@Link Header header;
@Link Trailer trailer;
@KeyValuePairField(tag = 1) // Client reference
private String Account;
@KeyValuePairField(tag = 11) // Order reference
private String ClOrdId;
@KeyValuePairField(tag = 22) // Fund ID type (Sedol, ISIN, ...)
private String IDSource;
@KeyValuePairField(tag = 48) // Fund code
private String SecurityId;
@KeyValuePairField(tag = 54) // Movement type ( 1 = Buy, 2 = sell)
private String Side;
@KeyValuePairField(tag = 58) // Free text
private String Text;
}
ケース 2: 出力での別の位置
FIX メッセージに入れるタグ/キーを事前定義された順序に従ってソートする必要がある場合は、アノテーション @KeyValuePairField の属性 position を使用します。
FIX メッセージ - タグ - 並べ替え
@Message(keyValuePairSeparator = "=", pairSeparator = "\\u0001", type = "FIX", version = "4.1", isOrdered = true)
public class Order {
@Link Header header;
@Link Trailer trailer;
@KeyValuePairField(tag = 1, position = 1) // Client reference
private String account;
@KeyValuePairField(tag = 11, position = 3) // Order reference
private String clOrdId;
}
17.3.7. 7.セクション リンクのコピーリンクがクリップボードにコピーされました!
固定長レコードの FIX メッセージでは、情報の表現にさまざまなセクション (ヘッダー、ボディ、およびセクション) があるのが一般的です。アノテーション @Section の目的は、モデルのどのクラスがヘッダー (= セクション 1)、ボディ (= セクション 2)、およびフッター (= セクション 3) を表しているかを bindy に通知することです。
このアノテーションには、1 つの属性/パラメーターのみが存在します。
| アノテーション名 | レコードの種類 | レベル |
|---|---|---|
| セクション | FIX | Class |
| パラメーター名 | 型 | 必須 | デフォルト値 | Info |
|---|---|---|---|---|
| number | int | ✓ | セクション番号 |
ケース 1: セクション
ヘッダーセクションの定義:
FIX メッセージ - セクション - ヘッダー
@Section(number = 1)
public class Header {
@KeyValuePairField(tag = 8, position = 1) // Message Header
private String beginString;
@KeyValuePairField(tag = 9, position = 2) // Checksum
private int bodyLength;
}
本文セクションの定義:
FIX メッセージ - セクション - 本文
@Section(number = 2)
@Message(keyValuePairSeparator = "=", pairSeparator = "\\u0001", type = "FIX", version = "4.1", isOrdered = true)
public class Order {
@Link Header header;
@Link Trailer trailer;
@KeyValuePairField(tag = 1, position = 1) // Client reference
private String account;
@KeyValuePairField(tag = 11, position = 3) // Order reference
private String clOrdId;
フッターセクションの定義:
FIX メッセージ - セクション - フッター
@Section(number = 3)
public class Trailer {
@KeyValuePairField(tag = 10, position = 1)
// CheckSum
private int checkSum;
public int getCheckSum() {
return checkSum;
}
17.3.8. 8.OneToMany リンクのコピーリンクがクリップボードにコピーされました!
アノテーション @OneToMany の目的は、POJO クラスで定義された List<?> フィールドを操作できるようにすること、または反復グループを含むレコードから操作できるようにすることです。
OneToMany の制限事項
bindy の 1 対多では、複数レベルの階層で繰り返しが定義されている場合に処理できない点に注意してください。
OneToMany の関係は、次の場合にのみ機能します。
- 反復グループ (= タグ/キーのグループ) を含む FIX メッセージの読み取り
- 反復データを含む CSV の生成
| アノテーション名 | レコードの種類 | レベル |
|---|---|---|
| OneToMany | all | プロパティー |
| パラメーター名 | 型 | 必須 | デフォルト値 | Info |
|---|---|---|---|---|
| mappedTo | String | List<Type of the Class> の型に関連付けられたクラス名 |
ケース 1: 反復データで CSV を生成する
必要な CSV 出力は次のとおりです。
Claus,Ibsen,Camel in Action 1,2010,35
Claus,Ibsen,Camel in Action 2,2012,35
Claus,Ibsen,Camel in Action 3,2013,35
Claus,Ibsen,Camel in Action 4,2014,35
反復データは書籍のタイトルとその発行日に関するものですが、姓名と年齢は一般的であり、これをモデル化するために使用されるクラスです。Author クラスには、書籍リストが含まれています。
反復データを含む CSV を生成する
@CsvRecord(separator=",")
public class Author {
@DataField(pos = 1)
private String firstName;
@DataField(pos = 2)
private String lastName;
@OneToMany
private List<Book> books;
@DataField(pos = 5)
private String Age;
}
public class Book {
@DataField(pos = 3)
private String title;
@DataField(pos = 4)
private String year;
}
ケース 2: タグ/キーのグループを含む FIX メッセージの読み取り
モデルで処理するメッセージは次のとおりです。
8=FIX 4.19=2034=135=049=INVMGR56=BRKR
1=BE.CHM.00111=CHM0001-0158=this is a camel - bindy test
22=448=BE000124567854=1
22=548=BE000987654354=2
22=648=BE000999999954=3
10=220
タグ 22、48、および 54 が繰り返されます。
およびコード:
タグ/キーのグループを含む FIX メッセージの読み取り
public class Order {
@Link Header header;
@Link Trailer trailer;
@KeyValuePairField(tag = 1) // Client reference
private String account;
@KeyValuePairField(tag = 11) // Order reference
private String clOrdId;
@KeyValuePairField(tag = 58) // Free text
private String text;
@OneToMany(mappedTo = "org.apache.camel.dataformat.bindy.model.fix.complex.onetomany.Security")
List<Security> securities;
}
public class Security {
@KeyValuePairField(tag = 22) // Fund ID type (Sedol, ISIN, ...)
private String idSource;
@KeyValuePairField(tag = 48) // Fund code
private String securityCode;
@KeyValuePairField(tag = 54) // Movement type ( 1 = Buy, 2 = sell)
private String side;
}
17.3.9. 9.BindyConverter リンクのコピーリンクがクリップボードにコピーされました!
アノテーション @BindyConverter の目的は、フィールドレベルで使用されるコンバーターを定義することです。提供されたクラスは、Format インターフェイスを実装する必要があります。
@FixedLengthRecord(length = 10, paddingChar = ' ')
public static class DataModel {
@DataField(pos = 1, length = 10, trim = true)
@BindyConverter(CustomConverter.class)
public String field1;
}
public static class CustomConverter implements Format<String> {
@Override
public String format(String object) throws Exception {
return (new StringBuilder(object)).reverse().toString();
}
@Override
public String parse(String string) throws Exception {
return (new StringBuilder(string)).reverse().toString();
}
}
17.3.10. 10.FormatFactories リンクのコピーリンクがクリップボードにコピーされました!
アノテーション @FormatFactories の目的は、一連のコンバーターをレコードレベルで定義することです。提供されるクラスは、FormatFactoryInterface インターフェイスを実装する必要があります。
@CsvRecord(separator = ",")
@FormatFactories({OrderNumberFormatFactory.class})
public static class Order {
@DataField(pos = 1)
private OrderNumber orderNr;
@DataField(pos = 2)
private String firstName;
}
public static class OrderNumber {
private int orderNr;
public static OrderNumber ofString(String orderNumber) {
OrderNumber result = new OrderNumber();
result.orderNr = Integer.valueOf(orderNumber);
return result;
}
}
public static class OrderNumberFormatFactory extends AbstractFormatFactory {
{
supportedClasses.add(OrderNumber.class);
}
@Override
public Format<?> build(FormattingOptions formattingOptions) {
return new Format<OrderNumber>() {
@Override
public String format(OrderNumber object) throws Exception {
return String.valueOf(object.orderNr);
}
@Override
public OrderNumber parse(String string) throws Exception {
return OrderNumber.ofString(string);
}
};
}
}
17.4. サポートされるデータタイプ リンクのコピーリンクがクリップボードにコピーされました!
DefaultFormatFactory は、提供された FormattingOptions に基づいてインターフェイス FormatFactoryInterface のインスタンスを返して、次のデータ型のフォーマットを使用できるようにします。
- BigDecimal
- BigInteger
- Boolean
- Byte
- Character
- 日付
- double
- Enum
- Float
- Integer
- LocalDate
- LocalDateTime
- LocalTime
- Long
- Short
- String
DefaultFormatFactory は、使用中のレジストリー (Spring または JNDI など) で FactoryRegistry のインスタンスを提供してオーバーライドできます。
17.5. Java DSL を使用 リンクのコピーリンクがクリップボードにコピーされました!
次の手順では、このレコードタイプに関連付けられた DataFormat バインドクラスをインスタンス化し、クラスをパラメーターとして提供します。
たとえば、次の例では、com.acme.model.MyModel.class で設定されたクラス BindyCsvDataFormat (CSV レコードタイプに関連付けられたクラスに対応) を使用して、このパッケージで設定されたモデルオブジェクトを初期化します。
DataFormat bindy = new BindyCsvDataFormat(com.acme.model.MyModel.class);
17.5.1. ロケールの設定 リンクのコピーリンクがクリップボードにコピーされました!
Bindy は、次のようなデータ形式でのロケールの設定をサポートしています。
BindyCsvDataFormat bindy = new BindyCsvDataFormat(com.acme.model.MyModel.class);
bindy.setLocale("us");
または、プラットフォームの "デフォルト" ロケールを使用するには、ロケール名として default を使用します。
BindyCsvDataFormat bindy = new BindyCsvDataFormat(com.acme.model.MyModel.class);
bindy.setLocale("default");
17.5.2. アンマーシャリング リンクのコピーリンクがクリップボードにコピーされました!
from("file://inbox")
.unmarshal(bindy)
.to("direct:handleOrders");
または、Spring XML ファイルなどのレジストリーで定義できるデータ形式への名前付き参照を使用できます。
from("file://inbox")
.unmarshal("myBindyDataFormat")
.to("direct:handleOrders");
Camel ルートは、受信トレイディレクトリー内のファイルをピックアップし、CSV レコードをモデルオブジェクトのコレクションにアンマーシャリングして、handleOrders によって参照されるルートにコレクション
を送信します。
返されるコレクションは、List of Map オブジェクトです。リスト内の各 Map には、CSV の各行からマーシャリングされたモデルオブジェクトが含まれています。理由は、各行が複数のオブジェクトに対応している可能性 があるためです。1 行にオブジェクト 1 つだけが返されることを想定している場合には、混乱を招く可能性があります。
各オブジェクトは、そのクラス名を使用して取得できます。
List<Map<String, Object>> unmarshaledModels = (List<Map<String, Object>>) exchange.getIn().getBody();
int modelCount = 0;
for (Map<String, Object> model : unmarshaledModels) {
for (String className : model.keySet()) {
Object obj = model.get(className);
LOG.info("Count : " + modelCount + ", " + obj.toString());
}
modelCount++;
}
LOG.info("Total CSV records received by the csv bean : " + modelCount);
ルート内で処理するためにこのマップから単一の Order オブジェクトを抽出すると仮定する場合に、次のようにスプリッターとプロセッサーの組み合わせを使用できます。
from("file://inbox")
.unmarshal(bindy)
.split(body())
.process(new Processor() {
public void process(Exchange exchange) throws Exception {
Message in = exchange.getIn();
Map<String, Object> modelMap = (Map<String, Object>) in.getBody();
in.setBody(modelMap.get(Order.class.getCanonicalName()));
}
})
.to("direct:handleSingleOrder")
.end();
Bindy は CHARSET_NAME プロパティーまたは CHARSET_NAME ヘッダーを Exchange インターフェイスで定義されているように使用して、アンマーシャリングのために受信した入力ストリームの文字セット変換を行うことに注意してください。一部のプロデューサ (file-endpoint など) では、文字セットを定義できます。文字セット変換は、このプロデューサによってすでに実行されている可能性があります。アンマーシャルに送信する前に、エクスチェンジからこのプロパティーまたはヘッダーを削除する必要がある場合があります。削除しないと、変換が 2 回行われ、想定外の結果が生じる可能性があります。
from("file://inbox?charset=Cp922")
.removeProperty(Exchange.CHARSET_NAME)
.unmarshal("myBindyDataFormat")
.to("direct:handleOrders");
17.5.3. マーシャリング リンクのコピーリンクがクリップボードにコピーされました!
モデルオブジェクトのコレクションから CSV レコードを生成するには、次のルートを作成します。
from("direct:handleOrders")
.marshal(bindy)
.to("file://outbox")
17.6. Spring XML の使用 リンクのコピーリンクがクリップボードにコピーされました!
これにより、お気に入りの DSL 言語として Spring を使用して、非常に簡単に camel-bindy に使用するルートを宣言できます。次の例は、最初のルートがファイルからレコードを取得し、コンテンツをアンマーシャリングしてモデルにバインドする 2 つのルートを示しています。結果は pojo に送信され (特別なことは何も行われません)、キューに入れられます。
2 番目のルートは、キューから pojo を抽出し、コンテンツをマーシャリングして、CSV レコードを含むファイルを生成します。
Spring DSL
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/spring
http://camel.apache.org/schema/spring/camel-spring.xsd">
<!-- Queuing engine - ActiveMq - work locally in mode virtual memory -->
<bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="brokerURL" value="vm://localhost:61616"/>
</bean>
<camelContext xmlns="http://camel.apache.org/schema/spring">
<dataFormats>
<bindy id="bindyDataformat" type="Csv" classType="org.apache.camel.bindy.model.Order"/>
</dataFormats>
<route>
<from uri="file://src/data/csv/?noop=true" />
<unmarshal ref="bindyDataformat" />
<to uri="bean:csv" />
<to uri="activemq:queue:in" />
</route>
<route>
<from uri="activemq:queue:in" />
<marshal ref="bindyDataformat" />
<to uri="file://src/data/csv/out/" />
</route>
</camelContext>
</beans>
モデルクラスが serializable を実装していることを確認してください。実装されていない場合には、キューマネージャーでエラーが発生します。
17.7. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
camel ルートで Bindy を使用するには、このデータ形式を実装する camel-bindy に依存関係を追加する必要があります。
Maven を使用する場合は、pom.xml に以下を追加するだけで、バージョン番号を最新かつ最高のリリースに置き換えます (最新バージョンのダウンロードページを参照してください)。
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-bindy</artifactId>
<version>{CamelSBVersion}</version>
</dependency>
17.8. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 18 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.dataformat.bindy-csv.allow-empty-stream | アンマーシャルプロセスで空のストリームを許可するかどうか。true の場合、レコードのないボディが提供されたときに例外は出力されません。 | false | Boolean |
| camel.dataformat.bindy-csv.class-type | 使用するモデルクラスの名前。 | String | |
| camel.dataformat.bindy-csv.enabled | bindy-csv データ形式の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.dataformat.bindy-csv.locale | 米国の us など、使用するデフォルトのロケールを設定します。JVM プラットフォームのデフォルトロケールを使用するには、default という名前を使用します。 | String | |
| camel.dataformat.bindy-csv.type | Csv、Fixed、または KeyValue を使用するかどうか。 | String | |
| camel.dataformat.bindy-csv.unwrap-single-instance | アンマーシャリング時に、java.util.List にラップする代わりに、単一のインスタンスをアンラップして返す必要があります。 | true | Boolean |
| camel.dataformat.bindy-fixed.allow-empty-stream | アンマーシャルプロセスで空のストリームを許可するかどうか。true の場合、レコードのないボディが提供されたときに例外は出力されません。 | false | Boolean |
| camel.dataformat.bindy-fixed.class-type | 使用するモデルクラスの名前。 | String | |
| camel.dataformat.bindy-fixed.enabled | bindy-fixed データ形式の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.dataformat.bindy-fixed.locale | 米国の us など、使用するデフォルトのロケールを設定します。JVM プラットフォームのデフォルトロケールを使用するには、default という名前を使用します。 | String | |
| camel.dataformat.bindy-fixed.type | Csv、Fixed、または KeyValue を使用するかどうか。 | String | |
| camel.dataformat.bindy-fixed.unwrap-single-instance | アンマーシャリング時に、java.util.List にラップする代わりに、単一のインスタンスをアンラップして返す必要があります。 | true | Boolean |
| camel.dataformat.bindy-kvp.allow-empty-stream | アンマーシャルプロセスで空のストリームを許可するかどうか。true の場合、レコードのないボディが提供されたときに例外は出力されません。 | false | Boolean |
| camel.dataformat.bindy-kvp.class-type | 使用するモデルクラスの名前。 | String | |
| camel.dataformat.bindy-kvp.enabled | bindy-kvp データ形式の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.dataformat.bindy-kvp.locale | 米国の us など、使用するデフォルトのロケールを設定します。JVM プラットフォームのデフォルトロケールを使用するには、default という名前を使用します。 | String | |
| camel.dataformat.bindy-kvp.type | Csv、Fixed、または KeyValue を使用するかどうか。 | String | |
| camel.dataformat.bindy-kvp.unwrap-single-instance | アンマーシャリング時に、java.util.List にラップする代わりに、単一のインスタンスをアンラップして返す必要があります。 | true | Boolean |
第18章 Browse リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
Browse コンポーネントは、テスト、視覚化ツール、またはデバッグに役立つシンプルな BrowsableEndpoint を提供します。エンドポイントに送信された交換はすべて閲覧可能です。
18.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で browse を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-browse-starter</artifactId>
</dependency>
18.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
browse:someName[?options]
someName は、エンドポイントを一意に識別する任意の文字列にすることができます。
18.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
18.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
18.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
18.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
Browse コンポーネントは、以下に示す 3 つのオプションをサポートしています。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
18.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Browse エンドポイントは、URI 構文を使用して設定されます。
browse:name
パスおよびクエリーパラメーターを使用します。
18.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| name (common) | 必須 エンドポイントを一意に識別する任意の文字列の名前。 | String |
18.5.2. クエリーパラメーター (4 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| exceptionHandler (consumer (advanced)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (advanced)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
18.6. 例 リンクのコピーリンクがクリップボードにコピーされました!
以下のルートでは、通過する Exchange を参照できるように、browse: コンポーネントを挿入します。
from("activemq:order.in").to("browse:orderReceived").to("bean:processOrder");
受信した交換を Java コード内から検査できるようになりました。
private CamelContext context;
public void inspectReceivedOrders() {
BrowsableEndpoint browse = context.getEndpoint("browse:orderReceived", BrowsableEndpoint.class);
List<Exchange> exchanges = browse.getExchanges();
// then we can inspect the list of received exchanges from Java
for (Exchange exchange : exchanges) {
String payload = exchange.getIn().getBody();
// do something with payload
}
}
18.7. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 4 つのオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.browse.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.browse.bridge-error-handler | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | Boolean |
| camel.component.browse.enabled | 参照コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.browse.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
第19章 Cassandra CQL リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
Apache Cassandra は、コモディティハードウェアで大量のデータを処理するように設計されたオープンソースの NoSQL データベースです。Amazon の DynamoDB と同様に、Cassandra にはピアツーピアおよびマスターレスアーキテクチャーがあり、単一障害点を回避し、高可用性を保証します。Google の BigTable と同様に、Cassandra データは、Thrift RPC API または CQL と呼ばれる SQL に似た API を介してアクセスできる列ファミリーを使用して構造化されています。
このコンポーネントは、(Thrift API ではなく) CQL3 API を使用して Cassandra 2.0+ を統合することを目的としています。DataStax が提供する Cassandra Java Driver をベースにしています。
19.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で cql を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-cassandraql-starter</artifactId>
</dependency>
19.2. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
19.2.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
19.2.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
19.3. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
Cassandra CQL コンポーネントは、以下に示す 3 つのオプションをサポートしています。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
19.4. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Cassandra CQL エンドポイントは、URI 構文を使用して設定されます。
cql:beanRef:hosts:port/keyspace
パスおよびクエリーパラメーターを使用します。
19.4.1. パスパラメーター (4 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| beanRef (common) | beanRef は bean:id を使用して定義されます。 | String | |
| hosts (common) | ホスト名 Cassandra サーバー複数のホストはコンマで区切ることができます。 | String | |
| port (common) | Cassandra サーバーのポート番号 | Integer | |
| keyspace (common) | 使用するキースペース | String |
19.4.2. クエリーパラメーター (30 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| clusterName (common) | クラスター名 | String | |
| consistencyLevel (common) | 使用する一貫性レベル。 列挙値:
| DefaultConsistencyLevel | |
| cql (common) | 実行する CQL クエリー。キー CamelCqlQuery を持つメッセージヘッダーでオーバーライドできます。 | String | |
| datacenter (common) | 使用するデータセンター。 | datacenter1 | String |
| loadBalancingPolicyClass (common) | 特定の LoadBalancingPolicyClass を使用するには。 | String | |
| password (common) | セッション認証のパスワード。 | String | |
| prepareStatements (common) | PreparedStatements を使用するか、通常のステートメントを使用するか。 | true | boolean |
| resultSetConversionStrategy (common) | ResultSet をメッセージ本文 ALL、ONE、LIMIT_10、LIMIT_100… に変換するためのロジックを実装するカスタムクラスを使用するには | ResultSetConversionStrategy | |
| session (common) | Session インスタンスを使用するには (通常、このオプションは使用しません)。 | CqlSession | |
| username (common) | セッション認証のユーザー名。 | String | |
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| sendEmptyMessageWhenIdle (consumer) | ポーリング consumer がファイルをポーリングしなかった場合、このオプションを有効にして、代わりに空のメッセージ (ボディーなし) を送信できます。 | false | boolean |
| exceptionHandler (consumer (advanced)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (advanced)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| pollStrategy (consumer (advanced)) | プラグ可能な org.apache.camel.PollingConsumerPollingStrategy を使用すると、エクスチェンジが作成され、Camel でルーティングされる前に、通常はポーリング操作中に発生するエラー処理を制御するカスタム実装が提供できます。 | PollingConsumerPollStrategy | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| backoffErrorThreshold (scheduler) | backoffMultipler が開始する前に発生する必要がある後続のエラーポーリング (エラーによって失敗した) の数。 | int | |
| backoffIdleThreshold (scheduler) | backoffMultipler が開始する前に発生する必要がある後続のアイドルポーリングの数。 | int | |
| backoffMultiplier (scheduler) | 後続のアイドル状態/エラーが連続して発生した場合に、スケジュールされたポーリング consumer のバックオフを許可します。乗数は、実際に次の試行が行われる前にスキップされるポーリングの数です。このオプションが使用されている場合は、backoffIdleThreshold や backoffErrorThreshold も設定する必要があります。 | int | |
| delay (scheduler) | 次のポーリングまでの時間 (ミリ秒単位)。 | 500 | long |
| greedy (scheduler) | greedy が有効で、以前の実行が 1 つ以上のメッセージをポーリングした場合、ScheduledPollConsumer は即座に再度実行されます。 | false | boolean |
| initialDelay (scheduler) | 最初のポーリングが開始されるまでの時間 (ミリ秒単位)。 | 1000 | long |
| repeatCount (scheduler) | 実行の最大数を指定します。そのため、これを 1 に設定するとスケジューラーは 1 度だけ実行されます。これを 5 に設定した場合、5 回だけ実行されます。0 または負の値を設定すると、無制限に実行されます。 | 0 | long |
| runLoggingLevel (scheduler) | consumer はポーリング時に開始/完了のログ行を記録します。このオプションを使用すると、ログレベルを設定できます。 列挙値:
| TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | consumer に使用するカスタム/共有スレッドプールを設定できます。デフォルトでは、各 consumer に独自の単一スレッドのスレッドプールがあります。 | ScheduledExecutorService | |
| scheduler (scheduler) | camel-spring または camel-quartz コンポーネントから cron スケジューラーを使用します。スケジューラーにビルドされた値 spring または quartz を使用。 | none | オブジェクト |
| schedulerProperties (scheduler) | カスタムスケジューラーまたは Quartz や Spring ベースのスケジューラーを使用する場合に、追加のプロパティーを設定します。 | Map | |
| startScheduler (scheduler) | スケジューラーを自動起動するかどうか。 | true | boolean |
| timeUnit (scheduler) | initialDelay および delay オプションの時間単位。 列挙値:
| MILLISECONDS | TimeUnit |
| useFixedDelay (scheduler) | 固定遅延または固定レートを使用するかどうかを制御します。詳細は、JDK の ScheduledExecutorService を参照してください。 | true | boolean |
19.5. エンドポイント接続の構文 リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントは、Cassandra 接続を開始するか、既存のものを使用できます。
| URI | 説明 |
|---|---|
|
| 単一ホスト、デフォルトポート、通常はテスト用 |
|
| マルチホスト、デフォルトポート |
|
| マルチホスト、カスタムポート |
|
| デフォルトのポートとキースペース |
|
| 提供されたセッション参照 |
|
| 提供されたクラスター参照 |
Cassandra 接続 (SSL オプション、プーリングオプション、負荷分散ポリシー、再試行ポリシー、再接続ポリシーなど) を微調整するには、独自のクラスターインスタンスを作成し、それを Camel エンドポイントに渡します。
19.6. メッセージ リンクのコピーリンクがクリップボードにコピーされました!
19.6.1. 着信メッセージ リンクのコピーリンクがクリップボードにコピーされました!
Camel Cassandra エンドポイントは、クエリーパラメーターとして CQL ステートメントにバインドされる一連の単純なオブジェクト (Object または Object[] または Collection<Object>) を想定しています。メッセージ本文が null または空の場合、CQL クエリーはパラメーターをバインドせずに実行されます。
Headers
CamelCqlQuery(オプション、文字列またはRegularStatement)プレーン文字列として、または
QueryBuilderを使用して構築された CQL クエリー。
19.6.2. 送信メッセージ リンクのコピーリンクがクリップボードにコピーされました!
Camel Cassandra エンドポイントは、resultSetConversionStrategy に応じて、1 つまたは複数の Cassandra Row オブジェクトを生成します。
-
List<Row>(resultSetConversionStrategyがALLまたはLIMIT_[0-9]+の場合) -
resultSetConversionStrategyがONEの場合h Single` Row` -
その他 (
resultSetConversionStrategyがResultSetConversionStrategyのカスタム実装である場合)
19.7. リポジトリー リンクのコピーリンクがクリップボードにコピーされました!
Cassandra を使用して、べき等および集約 EIP のメッセージキーまたはメッセージを格納できます。
Cassandra は、まだユースケースをキューに入れるための最適なツールではない可能性があります。Cassandra anti-patterns queues and queue like datasets を参照してください。これらのテーブルに LeveledCompaction と小さな GC 猶予設定を使用して、廃棄された行をすばやく削除できるようにすることを推奨します。
19.8. 冪等リポジトリー リンクのコピーリンクがクリップボードにコピーされました!
NamedCassandraIdempotentRepository は、メッセージキーを次のように Cassandra テーブルに格納します。
CAMEL_IDEMPOTENT.cql
CREATE TABLE CAMEL_IDEMPOTENT (
NAME varchar, -- Repository name
KEY varchar, -- Message key
PRIMARY KEY (NAME, KEY)
) WITH compaction = {'class':'LeveledCompactionStrategy'}
AND gc_grace_seconds = 86400;
このリポジトリーの実装では、軽量のトランザクション (Compare and Set とも呼ばれます) を使用し、Cassandra 2.0.7+ が必要です。
または、CassandraIdempotentRepository には NAME 列がなく、別のデータモデルを使用するように拡張できます。
| オプション | デフォルト | 説明 |
|---|---|---|
|
|
| テーブル名 |
|
|
| プライマリーキー列 |
|
|
リポジトリー名、 | |
|
| 重要な生存期間 | |
|
|
キーの挿入/削除に使用される一貫性レベル: | |
|
|
キーの読み取り/チェックに使用される一貫性レベル: |
19.9. 集計リポジトリー リンクのコピーリンクがクリップボードにコピーされました!
NamedCassandraAggregationRepository は、次のように Cassandra テーブルに相関キーによる交換を格納します。
CAMEL_AGGREGATION.cql
CREATE TABLE CAMEL_AGGREGATION (
NAME varchar, -- Repository name
KEY varchar, -- Correlation id
EXCHANGE_ID varchar, -- Exchange id
EXCHANGE blob, -- Serialized exchange
PRIMARY KEY (NAME, KEY)
) WITH compaction = {'class':'LeveledCompactionStrategy'}
AND gc_grace_seconds = 86400;
または、CassandraAggregationRepository には NAME 列がなく、別のデータモデルを使用するように拡張できます。
| オプション | デフォルト | 説明 |
|---|---|---|
|
|
| テーブル名 |
|
|
| プライマリーキー列 |
|
|
| 交換 ID 列 |
|
|
| 交換内容欄 |
|
|
リポジトリー名、 | |
|
| 生存時間の交換 | |
|
|
交換の挿入/削除に使用される一貫性レベル: | |
|
|
交換の読み取り/チェックに使用される整合性レベル: |
19.10. 例 リンクのコピーリンクがクリップボードにコピーされました!
テーブルに何かを挿入するには、次のコードを使用できます。
String CQL = "insert into camel_user(login, first_name, last_name) values (?, ?, ?)";
from("direct:input")
.to("cql://localhost/camel_ks?cql=" + CQL);
この時点で、リストを本文として使用してデータを挿入できるはずです
Arrays.asList("davsclaus", "Claus", "Ibsen")
テーブルの更新またはクエリーにも同じアプローチを使用できます。
19.11. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 4 つのオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.cql.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.cql.bridge-error-handler | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | Boolean |
| camel.component.cql.enabled | cql コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.cql.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
第20章 CICS リンクのコピーリンクがクリップボードにコピーされました!
Camel 4.4-redhat 以降
producer のみがサポートされます。
このコンポーネントを使用すると、IBM CICS ® 汎用トランザクション処理サブシステムと対話できます。
同期モード呼び出しのみがサポートされます。
20.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で camel-cics を使用する場合は、自動設定をサポートするために次の Maven 依存関係を pom.xml に追加します。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-cics-starter</artifactId>
</dependency>
camel-cics starer を使用する場合は、ctgclient.jar 依存関係も宣言する必要があります。
<dependency>
<artifactId>com.ibm</artifactId>
<groupId>ctgclient</groupId>
<scope>system</scope>
<systemPath>${basedir}/lib/ctgclient.jar</systemPath>
</dependency>
この JAR は IBM によって提供され、cics システムに含まれています。
20.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
cics://[interfaceType]/[dataExchangeType][?options]
ここで、interfaceType は、camel-cics が呼び出す外部 API の CICS セットです。現時点では、ECI (External Call Interface) のみがサポートされています。このコンポーネントは、2 種類の dataExchangeType を使用して CICS サーバーと通信します。
-
commareaは、プログラムによって割り当てられる、32763 バイトに制限されたストレージブロックです。 -
channelは、パラメーターリストに類似した、データを交換するための新しいメカニズムです。
デフォルトでは、dataExchangeType が指定されていない場合、このコンポーネントは commarea を使用します。
cics://eci?host=xxx&port=xxx...
channel とコンテナーを使用するには、URI で明示的に指定する必要があります。
cics://eci/channel?host=xxx&port=xxx...
20.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
20.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
20.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
20.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
CICS コンポーネントは、以下に示す 17 個のオプションをサポートしています。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| ctgDebug | 基盤となる IBM CGT クライアントでデバッグモードを有効にします。 | false | java.lang.Boolean |
| eciBinding | Camel Exchange を EciRequest に変換したり、その逆を行ったりする Binding インスタンス | com.redhat.camel.component.cics.CICSEciBinding | |
| eciTimeout | この ECIRequest オブジェクトに関連付けられた ECI タイムアウト値。ECI タイムアウト値が 0 の場合、この ECIRequest は CICS Transaction Gateway によってタイムアウトにならないことを示します。ECI タイムアウト値が 0 より大きい場合は、ECIRequest が CICS Transaction Gateway によってタイムアウトになる可能性があることを示します。CICS からの応答を受信する前に、ECI タイムアウトが期限切れになる場合があります。これは、クライアントが、Unit of Work が破棄またはコミットされたことの確認を CICS から受信しないことを意味します。 | 0 | short |
| encoding | メッセージの転送エンコーディング。 | Cp1145 | java.lang.String |
| gatewayFactory | 使用する接続ファクトリー。 | com.redhat.camel.component.cics.pool.CICSGatewayFactory | |
| host | このインスタンスが接続する CICS トランザクションゲートウェイのアドレス | java.lang.String | |
| lazyStartProducer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | boolean | |
| port | このインスタンスが接続する CICS トランザクションゲートウェイのポート。 | 2006 | int |
| protocol | このコンポーネントが CICS トランザクションゲートウェイに接続するために使用するプロトコル。 | tcp | java.lang.String |
| server | このインスタンスが接続する CICS サーバーのアドレス。 | java.lang.String | |
| sslKeyring | クライアントの暗号化接続に使用される SSL キーリングクラスまたはキーストアファイルの完全なクラス名。 | java.lang.String | |
| sslPassword | 暗号化されたキーリングクラスまたはキーストアのパスワード | java.lang.String | |
| configuration | 共有 CICS 設定を使用する | com.redhat.camel.component.cics.CICSConfiguration | |
| socketConnectionTimeout | ソケット接続タイムアウト | int | |
| password | 認証に使用するパスワード。 | java.lang.String | |
| userId | 認証に使用するユーザー ID | java.lang.String |
20.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
CICS エンドポイントは URI 構文を使用して設定されます。
cics://[interfaceType]/[dataExchangeType][?options]
path パラメーターおよび query パラメーターを使用します。
20.5.1. パスパラメーター (2 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| interfaceType | インターフェイスタイプは eci、esi、または epi です。現時点では eci のみがサポートされています。 | eci | java.lang.String |
| dataExchangeType | Enum 値を使用するデータ交換の種類:
| commarea | com.redhat.camel.component.cics.support.CICSDataExchangeType |
20.5.2. クエリーパラメーター (15 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| ctgDebug | 基盤となる IBM CGT クライアントでデバッグモードを有効にします。 | false | java.lang.Boolean |
| eciBinding | Camel Exchange を EciRequest に変換したり、その逆を行ったりする Binding インスタンス | com.redhat.camel.component.cics.CICSEciBinding | |
| eciTimeout | この ECIRequest オブジェクトに関連付けられた ECI タイムアウト値。ECI タイムアウト値が 0 の場合、この ECIRequest は CICS Transaction Gateway によってタイムアウトにならないことを示します。ECI タイムアウト値が 0 より大きい場合は、ECIRequest が CICS Transaction Gateway によってタイムアウトになる可能性があることを示します。CICS からの応答を受信する前に、ECI タイムアウトが期限切れになる場合があります。これは、クライアントが、Unit of Work が破棄またはコミットされたことの確認を CICS から受信しないことを意味します。 | 0 | short |
| encoding | COMMAREA データを送信する前に変換するエンコーディング。 | Cp1145 | java.lang.String |
| gatewayFactory | 使用する接続ファクトリー | com.redhat.camel.component.cics.pool.CICSGatewayFactory | |
| host | このインスタンスが接続する CICS トランザクションゲートウェイのアドレス | localhost | java.lang.String |
| port | このインスタンスが接続する CICS トランザクションゲートウェイのポート。 | 2006 | int |
| protocol | このコンポーネントが CICS トランザクションゲートウェイに接続するために使用するプロトコル。 | tcp | java.lang.String |
| server | このインスタンスが接続する CICS サーバーのアドレス | java.lang.String | |
| lazyStartProducer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | boolean | |
| sslKeyring | クライアントの暗号化接続に使用される SSL キーリングクラスまたはキーストアファイルの完全なクラス名。 | java.lang.String | |
| sslPassword | 暗号化されたキーリングクラスまたはキーストアのパスワード | java.lang.String | |
| socketConnectionTimeout | ソケット接続タイムアウト | int | |
| password | 認証に使用するパスワード。 | java.lang.String | |
| userId | 認証に使用するユーザー ID | java.lang.String |
20.6. メッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
CICS コンポーネントは、以下に示す 15 個のメッセージヘッダーをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
|
CICS_RETURN_CODE | このフロー操作からの戻りコード。 | int | |
|
CICS_RETURN_CODE_STRING | CICS 戻りコード (文字列)。文字列は適切な Java 定数の名前です。たとえば、このヘッダーが ECI_NO_ERROR の場合、返される文字列は ECI_NO_ERROR になります。このヘッダーが不明な場合、返される文字列は ECI_UNKNOWN_CICS_RC になります。 注記 複数の意味を持つ可能性がある CICS 戻りコードの場合、返される文字列は戻りコードの連結になります。連結される文字列は、ECI_ERR_REQUEST_TIMEOUT_OR_ERR_NO_REPLY のみです。 | java.ang.String | |
|
CICS_EXTEND_MODE | リクエストの拡張モード。デフォルト値は ECI_NO_EXTEND です。 | int | |
|
CICS_LUW_TOKEN | 拡張論理作業単位トークン。デフォルト値は ECI_LUW_NEW です。 | int | |
|
CICS_PROGRAM_NAME | CICS サーバー上で呼び出すプログラム。 | java.lang.String | |
|
CICS_TRANSACTION_ID | CICS プログラムを実行するトランザクション ID。 | java.lang.String | |
|
CICS_COMM_AREA_SIZE | COMMAREA の長さ。デフォルト値は 0 です。 | int | |
|
CICS_CHANNEL_NAME | com.redhat.camel.component.cics.CICSConstants#CICS_CHANNEL_NAME_HEADER を作成するチャネルの名前 | java.lang.String | |
|
CICS_CONTAINER_NAME | 作成するコンテナーの名前。 | java.lang.String | |
|
CICS_CHANNEL_CCSID | チャネルがデフォルトとして設定する CCSID。 | int | |
|
CICS_SERVER | リクエストを送信する CICS サーバー。このヘッダーはエンドポイントで設定された値を上書きします。 | java.lang.String | |
|
CICS_USER_ID | CICS サーバーのユーザー ID。このヘッダーはエンドポイントで設定された値を上書きします。 | java.lang.String | |
|
CICS_PASSWORD | CICS サーバーのパスワードまたはパスワードフレーズ。このヘッダーはエンドポイントで設定された値を上書きします。 | java.lang.String | |
|
CICS_ABEND_CODE | CICS トランザクション異常終了コード。 | java.lang.String | |
|
CICS_ECI_REQUEST_TIMEOUT | 現在の ECIRequest の ECI タイムアウトの値 (秒単位)。値が 0 の場合、この ECIRequest は CICS Transaction Gateway によってタイムアウトにならないことを示します。 | 0 | short |
|
CICS_ENCODING | COMMAREA データを送信する前に変換するエンコーディング。 | String |
20.7. サンプル リンクのコピーリンクがクリップボードにコピーされました!
20.7.1. Commarea の使用 リンクのコピーリンクがクリップボードにコピーされました!
次のサンプルは、COMMAREA を使用して CICS サーバー上でプログラムを実行するルートを設定する方法を示しています。COMMAREA サイズは CICS_COMM_AREA_SIZE ヘッダーで定義する必要があり、COMMAREA 入力データは Camel Exchange 本体で定義されます。
サーバーに送信されるすべての情報と、サーバーから返されるすべての情報を格納するのに十分な大きさの COMMAREA を作成する必要があります。
//.....
import static com.redhat.camel.component.cics.CICSConstants.CICS_PROGRAM_NAME_HEADER;
import static com.redhat.camel.component.cics.CICSConstants.CICS_COMM_AREA_SIZE_HEADER;
//....
from("direct:run").
setHeader(CICS_PROGRAM_NAME_HEADER, "ECIREADY").
setHeader(CICS_COMM_AREA_SIZE_HEADER, 18).
setBody(constant("My input data")).
to("cics:eci/commarea?host=192.168.0.23&port=2006&protocol=tcp&userId=foo&password=bar");
CICS プログラム呼び出しの結果は、次のように Camel Exchange にマッピングされます。
-
戻りコードの数値は
CICS_RETURN_CODEヘッダーに格納されます。 - COMMAREA 出力データは Camel Exchange Body に保存されます。
20.7.2. 単一の入力コンテナーでチャネルを使用する リンクのコピーリンクがクリップボードにコピーされました!
次のサンプルは、単一のコンテナーを持つチャネルを使用して CICS プログラムを実行する方法を示しています。チャネル名とコンテナー名はヘッダーから取得され、コンテナー値は本文から取得されます。
//.....
import static com.redhat.camel.component.cics.CICSConstants.CICS_PROGRAM_NAME_HEADER;
import static com.redhat.camel.component.cics.CICSConstants.CICS_CHANNEL_NAME_HEADER;
import static com.redhat.camel.component.cics.CICSConstants.CICS_CONTAINER_NAME_HEADER;
//...
from("direct:run").
setHeader(CICS_PROGRAM_NAME_HEADER, "EC03").
setHeader(CICS_CHANNEL_NAME_HEADER, "SAMPLECHANNEL").
setHeader(CICS_CONTAINER_NAME_HEADER, "INPUTDATA").
setBody(constant("My input data")).
to("cics:eci/channel?host=192.168.0.23&port=2006&protocol=tcp&userId=foo&password=bar");
返されるコンテナーは java.util.Map<String,Object> に格納されます。キーはコンテナー名、値はコンテナーの出力データです。
20.7.3. 複数の入力コンテナーを持つチャネルの使用 リンクのコピーリンクがクリップボードにコピーされました!
複数のコンテナーを入力として受け取る CICS プログラムを実行する必要がある場合は、キーがコンテナー名で値が入力データである java.util.Map<String,Object> を作成できます。この場合、CICS_CONTAINER_NAME ヘッダーは無視されます。
//.....
import static com.redhat.camel.component.cics.CICSConstants.CICS_PROGRAM_NAME_HEADER;
import static com.redhat.camel.component.cics.CICSConstants.CICS_CHANNEL_NAME_HEADER;
//...
from("direct:run").
setHeader(CICS_PROGRAM_NAME_HEADER, "EC03").
setHeader(CICS_CHANNEL_NAME_HEADER, "SAMPLECHANNEL").
process(exchange->{
byte[] thirdContainerData = HexFormat.of().parseHex("e04fd020ea3a6910a2d808002b30309d");
Map<String,Object> containers = Map.of(
"firstContainerName", "firstContainerData",
"secondContainerName", "secondContainerData",
"thirdContainerName", thirdContainerData
);
exchange.getMessage().setBody(containers);
}).
to("cics:eci/channel?host=192.168.0.23&port=2006&protocol=tcp&userId=foo&password=bar");
20.8. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 17 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.cics.binding | Camel Exchange を EciRequest に変換したり、その逆を行ったりする Binding インスタンス。 | com.redhat.camel.component.cics.CICSEciBinding | |
| camel.component.cics.configuration | 設定 | com.redhat.camel.component.cics.CICSConfiguration | |
| camel.component.cics.ctg-debug | 基盤となる IBM CGT クライアントでデバッグモードを有効にします。 | java.lang.Boolean | |
| camel.component.cics.eci-timeout | この ECIRequest オブジェクトに関連付けられた ECI タイムアウト値。ECI タイムアウト値が 0 の場合、この ECIRequest は CICS Transaction Gateway によってタイムアウトにならないことを示します。ECI タイムアウト値が 0 より大きい場合は、ECIRequest が CICS Transaction Gateway によってタイムアウトになる可能性があることを示します。CICS からの応答を受信する前に、ECI タイムアウトが期限切れになる場合があります。これは、クライアントが、Unit of Work が破棄またはコミットされたことの確認を CICS から受信しないことを意味します。 | java.lang.Short | |
| camel.component.cics.enabled | cics コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | java.lang.Boolean | |
| camel.component.cics.encoding | メッセージの転送エンコーディング。 | Cp1145 | java.lang.String |
| camel.component.cics.gateway-factory | 使用する接続ファクトリー。オプションは、com.redhat.camel.component.cics.pool.CICSGatewayFactory タイプです。 | com.redhat.camel.component.cics.pool.CICSGatewayFactory | |
| camel.component.cics.host | このインスタンスが接続する CICS トランザクションゲートウェイのアドレス | java.lang.String | |
| camel.component.cics.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | java.lang.Boolean | |
| camel.component.cics.password | 認証に使用するパスワード。 | java.lang.String | |
| camel.component.cics.port | このインスタンスが接続する CICS トランザクションゲートウェイのポート。 | 2006 | java.lang.Integer |
| camel.component.cics.protocol | このコンポーネントが CICS トランザクションゲートウェイに接続するために使用するプロトコル。 | tcp | java.lang.String |
| camel.component.cics.server | このインスタンスが接続する CICS サーバーのアドレス | java.lang.String | |
| camel.component.cics.socket-connection-timeout | ソケット接続タイムアウト | java.lang.Integer | |
| camel.component.cics.ssl-keyring | クライアントの暗号化接続に使用される SSL キーリングクラスまたはキーストアファイルの完全なクラス名 | java.lang.String | |
| camel.component.cics.ssl-password | 暗号化されたキーリングクラスまたはキーストアのパスワード | java.lang.String | |
| camel.component.cics.user-id | 認証に使用するユーザー ID | java.lang.String |
第21章 Constant リンクのコピーリンクがクリップボードにコピーされました!
定数式言語は、実際には定数値またはオブジェクトを使用する方法にすぎません。
これは、ルートの開始時に一度だけ設定される固定定数値 (またはオブジェクト) であるため、ルーティング中に動的な値が必要な場合は、この値は使用しないでください。
21.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で constant を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-core-starter</artifactId>
</dependency>
21.2. Constant オプション リンクのコピーリンクがクリップボードにコピーされました!
Constant 言語は、以下に示す 2 つのオプションをサポートしています。
| 名前 | デフォルト | Java タイプ | 説明 |
|---|---|---|---|
| resultType |
| 定数型のクラス名を設定します。 | |
| trim |
| 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 |
21.3. 例 リンクのコピーリンクがクリップボードにコピーされました!
setHeader EIP は、次のような定数式を利用できます。
<route>
<from uri="seda:a"/>
<setHeader name="theHeader">
<constant>the value</constant>
</setHeader>
<to uri="mock:b"/>
</route>
この場合、seda:a エンドポイントからのメッセージには、キー theHeader を含むヘッダーが含まれ、その値が the value (文字列型) として設定されます。
Java DSL を使用した同じ例:
from("seda:a")
.setHeader("theHeader", constant("the value"))
.to("mock:b");
21.3.1. 値の型の指定 リンクのコピーリンクがクリップボードにコピーされました!
オプション resultType を使用して、値が 文字列 値として指定されている場合に、値のタイプを指定できます。これは、XML または YAML DSL を使用する場合に発生します。
たとえば、int 型のヘッダーを設定するには、次のようにします。
<route>
<from uri="seda:a"/>
<setHeader name="zipCode">
<constant resultType="int">90210</constant>
</setHeader>
<to uri="mock:b"/>
</route>
21.4. 外部リソースからの定数のロード リンクのコピーリンクがクリップボードにコピーされました!
constant を外部化して、"classpath:"、"file:"、または "http:" などのリソースから Camel に読み込むことができます。
これは、"resource:scheme:location" の構文を使用して行われます。たとえば、クラスパス上のファイルを参照するには、以下を実行します。
.setHeader("myHeader").constant("resource:classpath:constant.txt")
21.5. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Constant 言語は camel-core の一部です。
21.6. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 147 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.cloud.consul.service-discovery.acl-token | Consul で使用する ACL トークンを設定します。 | String | |
| camel.cloud.consul.service-discovery.block-seconds | 監視イベントを待機する秒数。デフォルトは 10 秒です。 | 10 | Integer |
| camel.cloud.consul.service-discovery.configurations | 追加の設定定義を定義します。 | Map | |
| camel.cloud.consul.service-discovery.connect-timeout-millis | OkHttpClient の接続タイムアウト。 | Long | |
| camel.cloud.consul.service-discovery.datacenter | データセンター。 | String | |
| camel.cloud.consul.service-discovery.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.cloud.consul.service-discovery.password | 基本認証に使用するパスワードを設定します。 | String | |
| camel.cloud.consul.service-discovery.properties | 使用するクライアントプロパティーを設定します。これらのプロパティーは、使用中のサービスコールの実装に固有です。たとえば、リボンを使用していると、クライアントプロパティーは com.netflix.client.config.CommonClientConfigKey で定義されます。 | Map | |
| camel.cloud.consul.service-discovery.read-timeout-millis | OkHttpClient の読み取りタイムアウト。 | Long | |
| camel.cloud.consul.service-discovery.url | Consul エージェントの URL。 | String | |
| camel.cloud.consul.service-discovery.user-name | Basic 認証に使用するユーザー名を設定します。 | String | |
| camel.cloud.consul.service-discovery.write-timeout-millis | OkHttpClient の書き込みタイムアウト。 | Long | |
| camel.cloud.dns.service-discovery.configurations | 追加の設定定義を定義します。 | Map | |
| camel.cloud.dns.service-discovery.domain | ドメイン名;. | String | |
| camel.cloud.dns.service-discovery.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.cloud.dns.service-discovery.properties | 使用するクライアントプロパティーを設定します。これらのプロパティーは、使用中のサービスコールの実装に固有です。たとえば、リボンを使用していると、クライアントプロパティーは com.netflix.client.config.CommonClientConfigKey で定義されます。 | Map | |
| camel.cloud.dns.service-discovery.proto | 目的のサービスのトランスポートプロトコル。 | _tcp | String |
| camel.cloud.etcd.service-discovery.configurations | 追加の設定定義を定義します。 | Map | |
| camel.cloud.etcd.service-discovery.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.cloud.etcd.service-discovery.password | 基本認証に使用するパスワード。 | String | |
| camel.cloud.etcd.service-discovery.properties | 使用するクライアントプロパティーを設定します。これらのプロパティーは、使用中のサービスコールの実装に固有です。たとえば、リボンを使用していると、クライアントプロパティーは com.netflix.client.config.CommonClientConfigKey で定義されます。 | Map | |
| camel.cloud.etcd.service-discovery.service-path | サービス検出のために探すパス。 | /services/ | String |
| camel.cloud.etcd.service-discovery.timeout | アクションが完了するまでにかかる最大時間を設定します。 | Long | |
| camel.cloud.etcd.service-discovery.type | 検出タイプを設定するには、有効な値はオンデマンドとウォッチです。 | オンデマンド | String |
| camel.cloud.etcd.service-discovery.uris | クライアントが接続できる URI。 | String | |
| camel.cloud.etcd.service-discovery.user-name | 基本認証に使用するユーザー名。 | String | |
| camel.cloud.kubernetes.service-discovery.api-version | クライアントルックアップを使用する場合の API バージョンを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.ca-cert-data | クライアントルックアップをする際に使用する認証局データを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.ca-cert-file | クライアントルックアップをする際にファイルからロードされる認証局データを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-cert-data | クライアントルックアップをする際に使用するクライアント証明書データを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-cert-file | クライアントルックアップをする際にファイルからロードされるクライアント証明書データを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-key-algo | クライアントルックアップをする際に使用する、RSA などのクライアントキーストアアルゴリズムを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-key-data | クライアントルックアップをする際に使用する、クライアントキーストアデータを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-key-file | クライアントルックアップをする際にファイルからロードされるクライアントキーストアデータを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-key-passphrase | クライアントルックアップをする際に使用する、クライアントキーストアパスフレーズを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.configurations | 追加の設定定義を定義します。 | Map | |
| camel.cloud.kubernetes.service-discovery.dns-domain | DNS ルックアップに使用する DNS ドメインを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.cloud.kubernetes.service-discovery.lookup | サービスルックアップの実行方法。可能な値: client、dns、environment。クライアントを使用する場合、クライアントは kubernetes マスターにクエリーを実行して、サービスを提供するアクティブな Pod のリストを取得し、Pod をランダム (またはラウンドロビン) に選択します。DNS を使用する場合、サービス名は name.namespace.svc.dnsDomain として解決されます。dnssrv を使用する場合、サービス名は、.…svc…の SRV クエリーで解決されます。環境を使用する場合は、環境変数を使用してサービスを検索します。デフォルトの環境が使用されます。 | environment | String |
| camel.cloud.kubernetes.service-discovery.master-url | クライアントルックアップを使用するときに URL をマスターに設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.namespace | 使用する名前空間を設定します。デフォルトでは、ENV 変数 KUBERNETES_MASTER の名前空間を使用します。 | String | |
| camel.cloud.kubernetes.service-discovery.oauth-token | クライアントルックアップを使用する際に (ユーザー名/パスワードの代わりに) 認証用の OAUTH トークンを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.password | クライアントルックアップを使用する際に使用する、認証パスワードを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.port-name | DNS/DNSSRV ルックアップに使用するポート名を設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.port-protocol | DNS/DNSSRV ルックアップに使用するポートプロトコルを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.properties | 使用するクライアントプロパティーを設定します。これらのプロパティーは、使用中のサービスコールの実装に固有です。たとえば、リボンを使用していると、クライアントプロパティーは com.netflix.client.config.CommonClientConfigKey で定義されます。 | Map | |
| camel.cloud.kubernetes.service-discovery.trust-certs | クライアントルックアップを使用する際に使用する、トラスト証明書のチェックを有効にするかどうかを設定します。 | false | Boolean |
| camel.cloud.kubernetes.service-discovery.username | クライアントルックアップを使用する際に使用する、認証ユーザー名を設定します。 | String | |
| camel.cloud.ribbon.load-balancer.client-name | リボンクライアント名を設定します。 | String | |
| camel.cloud.ribbon.load-balancer.configurations | 追加の設定定義を定義します。 | Map | |
| camel.cloud.ribbon.load-balancer.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.cloud.ribbon.load-balancer.namespace | namespace。 | String | |
| camel.cloud.ribbon.load-balancer.password | パスワード。 | String | |
| camel.cloud.ribbon.load-balancer.properties | 使用するクライアントプロパティーを設定します。これらのプロパティーは、使用中のサービスコールの実装に固有です。たとえば、リボンを使用していると、クライアントプロパティーは com.netflix.client.config.CommonClientConfigKey で定義されます。 | Map | |
| camel.cloud.ribbon.load-balancer.username | ユーザー名 | String | |
| camel.hystrix.allow-maximum-size-to-diverge-from-core-size | maximumSize の設定を有効にします。その値は、coreSize 以上にすることができます。 | false | Boolean |
| camel.hystrix.circuit-breaker-enabled | HystrixCircuitBreaker を使用するかどうか。false の場合、サーキットブレーカーロジックは使用されず、すべての要求が許可されます。これは実質的に circuitBreakerForceClosed() と似ていますが、メトリックの追跡を継続し、それを開閉する必要があるかどうかを認識しているため、このプロパティーによってサーキットブレーカーがインスタンス化されることもありません。 | true | Boolean |
| camel.hystrix.circuit-breaker-error-threshold-percentage | サーキットブレーカーが開いて要求を拒否するエラー率のしきい値 (50 などの整数)。circuitBreakerSleepWindowInMilliseconds で定義された期間、トリップしたままになります。これが比較されるエラーのパーセンテージは、HystrixCommandMetrics.getHealthCounts() から取得されます。 | 50 | Integer |
| camel.hystrix.circuit-breaker-force-closed | true の場合、HystrixCircuitBreaker#allowRequest() は常に true を返し、HystrixCommandMetrics.getHealthCounts() からのエラーパーセンテージに関係なくリクエストを許可します。circuitBreakerForceOpen() プロパティーが優先されるため、true に設定すると、このプロパティーは何もしません。 | false | Boolean |
| camel.hystrix.circuit-breaker-force-open | true の場合、HystrixCircuitBreaker.allowRequest() は常に false を返します。これにより、回路が開かれ (トリップされ)、すべての要求が拒否されます。このプロパティーは circuitBreakerForceClosed() よりも優先されます。 | false | Boolean |
| camel.hystrix.circuit-breaker-request-volume-threshold | HystrixCircuitBreaker が作動する前に存在しなければならない metricsRollingStatisticalWindowInMilliseconds() 内の要求の最小数。この数値を下回ると、エラーのパーセンテージに関係なく、回路はトリップしません。 | 20 | Integer |
| camel.hystrix.circuit-breaker-sleep-window-in-milliseconds | HystrixCircuitBreaker がトリップして開いてから、要求を再試行するまで待機する時間 (ミリ秒単位)。 | 5000 | Integer |
| camel.hystrix.configurations | 追加の設定定義を定義します。 | Map | |
| camel.hystrix.core-pool-size | java.util.concurrent.ThreadPoolExecutor#setCorePoolSize(int) に渡されるコアスレッドプールサイズ。 | 10 | Integer |
| camel.hystrix.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.hystrix.execution-isolation-semaphore-max-concurrent-requests | HystrixCommand.run() に許可された同時要求の数。同時制限を超えるリクエストは拒否されます。executionIsolationStrategy == SEMAPHORE の場合にのみ適用されます。 | 20 | Integer |
| camel.hystrix.execution-isolation-strategy | HystrixCommand.run() を実行する分離戦略。THREAD の場合は、別のスレッドで実行し、同時要求はスレッドプール内のスレッド数によって制限されます。SEMAPHORE の場合、呼び出しスレッドで実行し、同時要求はセマフォ数によって制限されます。 | スレッド | String |
| camel.hystrix.execution-isolation-thread-interrupt-on-timeout | スレッドがタイムアウトしたときに、実行スレッドが (Future#cancel を使用して) 割り込みを試みるかどうか。executionIsolationStrategy() == THREAD の場合にのみ適用されます。 | true | Boolean |
| camel.hystrix.execution-timeout-enabled | このコマンドのタイムアウトメカニズムを有効にするかどうか。 | true | Boolean |
| camel.hystrix.execution-timeout-in-milliseconds | コマンドがタイムアウトして実行を停止する時間 (ミリ秒単位)。executionIsolationThreadInterruptOnTimeout == true で、コマンドがスレッド分離されている場合、実行中のスレッドは中断されます。コマンドがセマフォ分離されており、HystrixObservableCommand である場合、そのコマンドはサブスクライブ解除されます。 | 1000 | Integer |
| camel.hystrix.fallback-enabled | 障害が発生したときに HystrixCommand.getFallback() を試行するかどうか。 | true | Boolean |
| camel.hystrix.fallback-isolation-semaphore-max-concurrent-requests | HystrixCommand.getFallback() に許可された同時要求の数。同時制限を超えるリクエストはフェールファストになり、フォールバックの取得は試行されません。 | 10 | Integer |
| camel.hystrix.group-key | 使用するグループキーを設定します。デフォルト値は、CamelHystrix です。 | CamelHystrix | String |
| camel.hystrix.keep-alive-time | ThreadPoolExecutor#setKeepAliveTime(long,TimeUnit) に渡されるキープアライブ時間 (分単位)。 | 1 | Integer |
| camel.hystrix.max-queue-size | HystrixConcurrencyStrategy.getBlockingQueue(int) で BlockingQueue に渡される最大キューサイズ。これは、スレッドプールのインスタンス化にのみ影響します。その場でキューサイズを変更することはできません。そのためには、queueSizeRejectionThreshold() を使用します。 | -1 | Integer |
| camel.hystrix.maximum-size | ThreadPoolExecutor#setMaximumPoolSize(int) に渡されるスレッドプールの最大サイズ。これは、HystrixCommands を拒否し始めることなくサポートできる同時実行の最大量です。この設定は、allowMaximumSizeToDivergeFromCoreSize も設定した場合にのみ有効になることに注意してください。 | 10 | Integer |
| camel.hystrix.metrics-health-snapshot-interval-in-milliseconds | 成功率とエラー率を計算し、HystrixCircuitBreaker.isOpen() ステータスに影響を与えるヘルススナップショットの取得を許可するまでの待機時間 (ミリ秒単位)。大量の回路では、エラーパーセンテージの継続的な計算によって CPU が集中的に使用される可能性があるため、これが計算の頻度を制御します。 | 500 | Integer |
| camel.hystrix.metrics-rolling-percentile-bucket-size | ローリングパーセンタイルの各バケットに格納される値の最大数。これは、HystrixCommandMetrics 内の HystrixRollingPercentile に渡されます。 | 10 | Integer |
| camel.hystrix.metrics-rolling-percentile-enabled | HystrixCommandMetrics 内の HystrixRollingPercentile を使用してパーセンタイルメトリックをキャプチャする必要があるかどうか。 | true | Boolean |
| camel.hystrix.metrics-rolling-percentile-window-buckets | ローリングパーセンテージウィンドウが分割されるバケットの数。これは、HystrixCommandMetrics 内の HystrixRollingPercentile に渡されます。 | 6 | Integer |
| camel.hystrix.metrics-rolling-percentile-window-in-milliseconds | ミリ秒単位のパーセンタイルローリングウィンドウの期間。これは、HystrixCommandMetrics 内の HystrixRollingPercentile に渡されます。 | 10000 | Integer |
| camel.hystrix.metrics-rolling-statistical-window-buckets | ローリング統計ウィンドウが分割されるバケットの数。これは、HystrixCommandMetrics 内の HystrixRollingNumber に渡されます。 | 10 | Integer |
| camel.hystrix.metrics-rolling-statistical-window-in-milliseconds | このプロパティーは、統計ローリングウィンドウの期間をミリ秒単位で設定します。スレッドプール用にメトリクスが保持される期間です。ウィンドウは、それらの増分によってバケットとロールに分割されます。 | 10000 | Integer |
| camel.hystrix.queue-size-rejection-threshold | キューサイズの拒否しきい値は、maxQueueSize に到達していない場合でも拒否できる人為的な最大キューサイズを設定します。これは、BlockingQueue の maxQueueSize を動的に変更することができず、拒否に影響するキューサイズの動的な変更をサポートするために行われます。これは、実行のためにスレッドをキューに入れるときに HystrixCommand によって使用されます。 | 5 | Integer |
| camel.hystrix.request-log-enabled | HystrixCommand の実行およびイベントを HystrixRequestLog に記録するべきかどうかを示します。 | true | Boolean |
| camel.hystrix.thread-pool-key | 使用するスレッドプールキーを設定します。デフォルトでは、groupKey が使用するように設定されているのと同じ値を使用します。 | CamelHystrix | String |
| camel.hystrix.thread-pool-rolling-number-statistical-window-buckets | ローリング統計ウィンドウが分割されるバケットの数。これは、各 HystrixThreadPoolMetrics インスタンス内の HystrixRollingNumber に渡されます。 | 10 | Integer |
| camel.hystrix.thread-pool-rolling-number-statistical-window-in-milliseconds | 統計ローリングウィンドウの期間をミリ秒単位で設定します。これは、各 HystrixThreadPoolMetrics インスタンス内の HystrixRollingNumber に渡されます。 | 10000 | Integer |
| camel.language.constant.enabled | 定数言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.constant.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.csimple.enabled | csimple 言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.csimple.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.exchangeproperty.enabled | exchangeProperty 言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.exchangeproperty.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.file.enabled | ファイル言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.file.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.header.enabled | ヘッダー言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.header.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.ref.enabled | ref 言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.ref.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.simple.enabled | 簡易言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.simple.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.tokenize.enabled | tokenize 言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.tokenize.group-delimiter | グループ化時に使用する区切り文字を設定します。これが設定されていない場合は、トークンが区切り文字として使用されます。 | String | |
| camel.language.tokenize.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.resilience4j.automatic-transition-from-open-to-half-open-enabled | waitDurationInOpenState が経過すると、OPEN から HALF_OPEN 状態への自動移行を有効にします。 | false | Boolean |
| camel.resilience4j.circuit-breaker-ref | レジストリーから検索して使用する既存の io.github.resilience4j.circuitbreaker.CircuitBreaker インスタンスを参照します。これを使用する場合、他のサーキットブレーカーオプションは使用されません。 | String | |
| camel.resilience4j.config-ref | レジストリーから検索して使用する既存の github.resilience4j.circuitbreaker.CircuitBreakerConfig インスタンスを参照します。 | String | |
| camel.resilience4j.configurations | 追加の設定定義を定義します。 | Map | |
| camel.resilience4j.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.resilience4j.failure-rate-threshold | 失敗率のしきい値をパーセンテージで設定します。失敗率がしきい値以上の場合、CircuitBreaker はオープンに移行し、コールのショートサーキットを開始します。しきい値は 0 より大きく 100 以下である必要があります。デフォルト値は 50% です。 | Float | |
| camel.resilience4j.minimum-number-of-calls | CircuitBreaker がエラー率を計算できるようになるまでに必要な (スライディングウィンドウ期間ごとの) 呼び出しの最小数を設定します。たとえば、minimumNumberOfCalls が 10 の場合、失敗率を計算するには、少なくとも 10 件の呼び出しが記録される必要があります。9 つのコールのみが記録されている場合、CircuitBreaker は 9 つのコールすべてが失敗した場合でもオープンに移行しません。デフォルトの minimumNumberOfCalls は 100 です。 | 100 | Integer |
| camel.resilience4j.permitted-number-of-calls-in-half-open-state | CircuitBreaker が半分開いているときに許可される呼び出しの数を設定します。サイズは 0 より大きくなければなりませんデフォルトのサイズは 10 です。 | 10 | Integer |
| camel.resilience4j.sliding-window-size | CircuitBreaker が閉じられたときに呼び出しの結果を記録するために使用されるスライディングウィンドウのサイズを設定します。slidingWindowSize は、スライディングウィンドウのサイズを設定します。スライディングウィンドウは、カウントベースまたは時間ベースのいずれかです。slidingWindowType が COUNT_BASED の場合、最後の slidingWindowSize 呼び出しが記録され、集計されます。slidingWindowType が TIME_BASED の場合は、最後の slidingWindowSize 秒の呼び出しが記録され、集計されます。slidingWindowSize は 0 より大きくなければなりません。minimumNumberOfCalls は 0 より大きくする必要があります。slidingWindowType が COUNT_BASED の場合、minimumNumberOfCalls を slidingWindowSize より大きくすることはできません。slidingWindowType が TIME_BASED の場合は、好きなものを選択できます。デフォルトの slidingWindowSize は 100 です。 | 100 | Integer |
| camel.resilience4j.sliding-window-type | CircuitBreaker が閉じられたときに呼び出しの結果を記録するために使用されるスライディングウィンドウのサイズを設定します。スライディングウィンドウは、カウントベースまたは時間ベースのいずれかです。slidingWindowType が COUNT_BASED の場合、最後の slidingWindowSize 呼び出しが記録され、集計されます。slidingWindowType が TIME_BASED の場合は、最後の slidingWindowSize 秒の呼び出しが記録され、集計されます。デフォルトの slidingWindowType は COUNT_BASED です。 | COUNT_BASED | String |
| camel.resilience4j.slow-call-duration-threshold | それを超えると呼び出しが低速と見なされ、低速呼び出しのパーセンテージが増加する期間のしきい値 (秒) を設定します。デフォルト値は 60 秒です。 | 60 | Integer |
| camel.resilience4j.slow-call-rate-threshold | パーセンテージでしきい値を設定します。CircuitBreaker は、呼び出し時間が slowCallDurationThreshold Duration よりも長い場合、呼び出しが遅いと見なします。失敗率がしきい値以上の場合、CircuitBreaker はオープンに移行し、ショートサーキット呼び出しを開始します。しきい値は 0 より大きく 100 以下である必要があります。デフォルト値は 100 パーセントです。これは、記録されたすべてのコールが slowCallDurationThreshold より遅くなければならないことを意味します。 | Float | |
| camel.resilience4j.wait-duration-in-open-state | ハーフオープンに切り替わる前に CircuitBreaker が開いたままになる時間を指定する待機期間 (秒単位) を設定します。デフォルト値は 60 秒です。 | 60 | Integer |
| camel.resilience4j.writable-stack-trace-enabled | 書き込み可能なスタックトレースを有効にします。false に設定すると、Exception.getStackTrace は長さゼロの配列を返します。これは、例外の原因がすでにわかっている (サーキットブレーカーが呼び出しを短絡している) ため、サーキットブレーカーが開いているときにログスパムを減らすために使用できます。 | true | Boolean |
| camel.rest.api-component | REST API として使用する Camel コンポーネントの名前 (swagger など)。API コンポーネントが明示的に設定されていない場合は、REST API ドキュメントのサービスおよび生成を担当する Camel コンポーネントがある場合、または org.apache.camel.spi.RestApiProcessorFactory がレジストリーに登録されているかどうかを調べます。いずれかが見つかった場合は、それが使用されています。 | String | |
| camel.rest.api-context-path | REST API サービスが使用する主要な API コンテキストパスを設定します。これは、デプロイされた Web アプリケーションがコンテキストパスを使用してデプロイされる camel-servlet などのコンポーネントを使用する場合に使用できます。 | String | |
| camel.rest.api-context-route-id | REST API にサービスを提供するルートに使用するルート ID を設定します。デフォルトでは、ルートは自動割り当てのルート ID を使用します。 | String | |
| camel.rest.api-host | API ドキュメント (swagger など) に特定のホスト名を使用するには、これを使用して、生成されたホストをこの設定済みホスト名でオーバーライドできます。 | String | |
| camel.rest.api-property | API ドキュメント (swagger) の追加プロパティーをできるだけ多く設定できます。たとえば、プロパティー api.title をクールスタッフに設定します。 | Map | |
| camel.rest.api-vendor-extension | Rest API でベンダー拡張機能が有効になっているかどうか。有効にすると、Camel はルート ID、クラス名などの追加情報をベンダー拡張 (x- で始まるキーなど) として含めます。API ドキュメントをインポートするときに、すべてのサードパーティー API ゲートウェイおよびツールがベンダー拡張をサポートしているわけではありません。 | false | Boolean |
| camel.rest.binding-mode | 使用するバインドモードを設定します。デフォルト値は off です。 | RestBindingMode | |
| camel.rest.client-request-validation | クライアント要求の検証を有効にして、クライアントからの Content-Type および Accept ヘッダーがその消費/生成設定の Rest-DSL 設定によってサポートされているかどうかを確認するかどうか。これをオンにして、このチェックを有効にすることができます。検証エラーの場合は、HTTP ステータスコード 415 または 406 が返されます。デフォルト値は false です。 | false | Boolean |
| camel.rest.component | netty-http、jetty、servlet、undertow などの REST トランスポート (consumer) に使用する Camel Rest コンポーネント。コンポーネントが明示的に設定されていない場合、Rest DSL と統合する Camel コンポーネントがある場合、または org.apache.camel.spi.RestConsumerFactory がレジストリーに登録されている場合、Camel はルックアップします。いずれかが見つかった場合は、それが使用されています。 | String | |
| camel.rest.component-property | 使用中の残りのコンポーネントの追加プロパティーをできるだけ多く設定できます。 | Map | |
| camel.rest.consumer-property | 使用中の残りの consumer の追加プロパティーをできるだけ多く設定できます。 | Map | |
| camel.rest.context-path | REST サービスが使用する主要なコンテキストパスを設定します。これは、デプロイされた Web アプリケーションがコンテキストパスを使用してデプロイされる camel-servlet などのコンポーネントを使用する場合に使用できます。または、HTTP サーバーを含む camel -jetty や camel-netty-http などのコンポーネントの場合。 | String | |
| camel.rest.cors-headers | カスタム CORS ヘッダーを設定できます。 | Map | |
| camel.rest.data-format-property | 使用中のデータ形式の追加プロパティーをできるだけ多く設定できます。たとえば、プロパティー prettyPrint を true に設定すると、json がプリティモードで出力されます。オプションが JSON または XML のいずれか、および IN または OUT のいずれか専用であることを示すために、プロパティーに接頭辞を付けることができます。接頭辞は、json.in.、json.out.、xml.in.、xml.out です。たとえば、値が xml.out.mustBeJAXBElement のキーは、送信用の XML データ形式専用です。接頭辞のないキーは、すべての状況で共通のキーです。 | Map | |
| camel.rest.enable-cors | HTTP 応答で CORS ヘッダーを有効にするかどうか。デフォルト値は false です。 | false | Boolean |
| camel.rest.endpoint-property | 使用中の残りのエンドポイントの追加プロパティーをできるだけ多く設定できます。 | Map | |
| camel.rest.host | REST サービスの公開に使用するホスト名。 | String | |
| camel.rest.host-name-resolver | ホスト名が明示的に設定されていない場合、このリゾルバーは、REST サービスが使用するホスト名を計算するために使用されます。 | RestHostNameResolver | |
| camel.rest.json-data-format | 使用する特定の json データ形式の名前。デフォルトでは json-jackson が使用されます。重要: このオプションは、データ形式のカスタム名を設定するためのものであり、既存のデータ形式インスタンスを参照するためのものではありません。 | String | |
| camel.rest.port | REST サービスの公開に使用するポート番号。サーブレットコンポーネントを使用する場合は、ここで設定したポート番号は適用されないことに注意してください。使用中のポート番号は、サーブレットコンポーネントが使用している実際のポート番号であるためです。たとえば、Apache Tomcat を使用する場合は Tomcat http ポート、Apache Karaf を使用する場合はデフォルトでポート 8181 を使用する Karaf の HTTP サービスなどです。このような状況では、ここでポート番号を設定すると、ツールと JMX がポート番号を認識できるようになるため、ポート番号をサーブレットエンジンが使用する番号に設定することを推奨します。 | String | |
| camel.rest.producer-api-doc | REST producer が REST uri を検証するために使用する API ドキュメント (swagger api) の場所を設定し、API ドキュメントに応じてクエリーパラメーターが有効です。これには、クラスパスに camel-swagger-java を追加する必要があり、設定に誤りがあると、Camel が起動時に失敗し、エラーが報告されます。API ドキュメントの場所はデフォルトでクラスパスから読み込まれますが、file: または http: を使用してリソースを参照し、ファイルまたは http url から読み込むことができます。 | String | |
| camel.rest.producer-component | REST producer として使用する Camel コンポーネントの名前を設定します。 | String | |
| camel.rest.scheme | REST サービスの公開に使用するスキーム。通常、http または https がサポートされます。デフォルト値は http です。 | String | |
| camel.rest.skip-binding-on-error-code | カスタム HTTP エラーコードヘッダーがある場合は、出力でバインディングをスキップするかどうか。これにより、json/xml などにバインドしないカスタムエラーメッセージを作成できます。それ以外の場合は成功メッセージが作成されます。 | false | Boolean |
| camel.rest.use-x-forward-headers | ホストおよび関連する設定に X-Forward ヘッダーを使用するかどうか。デフォルト値は true です。 | true | Boolean |
| camel.rest.xml-data-format | 使用する特定の XML データ形式の名前。デフォルトでは jaxb が使用されます。重要: このオプションは、データ形式のカスタム名を設定するためのものであり、既存のデータ形式インスタンスを参照するためのものではありません。 | String | |
| camel.rest.api-context-id-pattern | 非推奨 CamelContext ID パターンを設定して、名前がパターンに一致する CamelContext 内の REST サービスからの Rest API のみを許可します。パターン 名 は CamelContext 名を参照し、現在の CamelContext のみに一致します。その他の値の場合、パターンは PatternHelper#matchPattern (String,String) のルールを使用します。 | String | |
| camel.rest.api-context-listing | 非推奨 JVM で REST サービスを使用して使用可能なすべての CamelContext のリストを有効にするかどうかを設定します。有効にすると、これらのコンテキストを検出できます。false の場合、現在の CamelContext のみが使用されます。 | false | Boolean |
第22章 Control Bus リンクのコピーリンクがクリップボードにコピーされました!
producer のみサポート対象
EIP パターンからの 制御バス により、統合システムをフレームワーク内から監視および管理できます。
コントロールバスを使用して、エンタープライズ統合システムを管理します。コントロールバスは、アプリケーションデータで使用されるのと同じメッセージングメカニズムを使用しますが、メッセージフローに含まれるコンポーネントの管理に関連するデータを送信するために別のチャネルを使用します。
Camel では、JMX を使用して、または CamelContext から、または org.apache.camel.api.management パッケージから Java API を使用して、またはここに例があるイベント通知機能を使用して、管理および監視できます。
ControlBus コンポーネントを使用すると、Control Bus EIP パターンに基づき Camel アプリケーションを簡単に管理できます。たとえば、エンドポイントにメッセージを送信することで、ルートのライフサイクルを制御したり、パフォーマンス統計を収集したりできます。
controlbus:command[?options]
command には、使用するコマンドのタイプを識別するための任意の文字列を指定できます。
22.1. コマンド リンクのコピーリンクがクリップボードにコピーされました!
| コマンド | 説明 |
|---|---|
|
|
|
|
| メッセージ本文の評価に使用するを指定できます。評価の結果があれば、その結果がメッセージ本文に入れられます。 |
22.2. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で controlbus を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-controlbus-starter</artifactId>
</dependency>
22.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
22.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
22.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
22.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
コントロールバスコンポーネントは、以下に示す 2 つのオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
22.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Control Bus エンドポイントは、URI 構文を使用して設定されます。
controlbus:command:language
パスおよびクエリーパラメーターを使用します。
22.5.1. パスパラメーター (2 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| command (producer) | 必要な コマンドは、ルートまたは言語のいずれかです。 列挙値:
| String | |
| language (producer) | メッセージ本文の評価に使用する言語の名前を指定できます。評価の結果があれば、その結果がメッセージ本文に入れられます。 列挙値:
| 言語 |
22.5.1.1. クエリーパラメーター (6 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| action (producer) | 開始、停止、またはステータスのいずれかのアクションを示す。ルートを開始または停止するか、ルートのステータスをメッセージ本文の出力として取得します。Camel 2.11.1 以降では、サスペンドとレジュームを使用して、ルートをサスペンドまたはレジュームできます。また、Camel 2.11.1 以降では、stats を使用して、パフォーマンスの統計を XML 形式で取得できます。routeId オプションを使用して、パフォーマンス統計を取得するルートを定義できます。routeId が定義されていない場合は、CamelContext 全体の統計を取得します。再起動アクションはルートを再起動します。 列挙値:
| String | |
| async (producer) | コントロールバスタスクを非同期で実行するかどうか。重要: このオプションを有効にすると、タスクの結果は Exchange に設定されません。これは、タスクを同期的に実行する場合にのみ可能です。 | false | boolean |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| loggingLevel (producer) | タスクが完了したとき、またはタスクの処理中に例外が発生した場合にログに使用されるログレベル。 列挙値:
| INFO | LoggingLevel |
| restartDelay (producer) | ルートを再起動するときに使用するミリ単位の遅延。 | 1000 | int |
| routeId (producer) | ID でルートを指定します。特別なキーワード current は、現在のルートを示します。 | String |
22.6. ルートコマンドの使用 リンクのコピーリンクがクリップボードにコピーされました!
route コマンドを使用すると、特定のルートで一般的なタスクを非常に簡単に実行できます。たとえば、ルートを開始するには、このエンドポイントに空のメッセージを送信できます。
template.sendBody("controlbus:route?routeId=foo&action=start", null);
ルートのステータスを取得するには、次のようにします。
String status = template.requestBody("controlbus:route?routeId=foo&action=status", null, String.class);
22.7. パフォーマンス統計の取得 リンクのコピーリンクがクリップボードにコピーされました!
これには、JMX を有効にする必要があります (デフォルトで)。そうすると、ルートごと、または CamelContext のパフォーマンス統計を取得できます。たとえば、foo という名前のルートの統計を取得するには、次のようにします。
String xml = template.requestBody("controlbus:route?routeId=foo&action=stats", null, String.class);
返される統計は XML 形式です。ManagedRouteMBean で dumpRouteStatsAsXml 操作を使用して JMX から取得できるデータと同じです。
CamelContext 全体の統計を取得するには、以下に示すように routeId パラメーターを省略します。
String xml = template.requestBody("controlbus:route?action=stats", null, String.class);
22.8. シンプルな言語を使用する リンクのコピーリンクがクリップボードにコピーされました!
コントロールバスで Simple 言語を使用できます。たとえば、特定のルートを停止するには、以下を含むメッセージを "controlbus:language:simple" エンドポイントに送信できます。
template.sendBody("controlbus:language:simple", "${camelContext.getRouteController().stopRoute('myRoute')}");
これは無効な操作であるため、結果は返されません。ただし、ルートステータスが必要な場合は、次のことができます。
String status = template.requestBody("controlbus:language:simple", "${camelContext.getRouteStatus('myRoute')}", String.class);
route コマンドを使用してルートのライフサイクルを制御する方が簡単です。language コマンドを使用すると、Groovy などのより強力な言語スクリプトを実行したり、Simple 言語を拡張したりできます。
たとえば、Camel 自体をシャットダウンするには、次のようにします。
template.sendBody("controlbus:language:simple?async=true", "${camelContext.stop()}");
async=true を使用して Camel を非同期的に停止します。そうしないと、制御バスコンポーネントに送信したメッセージを処理中に Camel を停止しようとすることになります。
Groovy などの他の言語も使用できます。
22.9. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 3 つのオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.controlbus.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.controlbus.enabled | コントロールバスコンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.controlbus.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
第23章 Cron リンクのコピーリンクがクリップボードにコピーされました!
consumer のみがサポートされている
Cron コンポーネントは、Unix cron 構文を使用して指定された特定の時間間隔でイベントをトリガーできる汎用インターフェイスコンポーネントです (例: 0/2 * * * * ? は 2 秒ごとにイベントをトリガーします)。
インターフェイスコンポーネントであるため、Cron コンポーネントにはデフォルトの実装が含まれていません。代わりに、ユーザーが選択した実装をプラグインする必要があります。
次の標準 Camel コンポーネントは、Cron エンドポイントをサポートしています。
- キャメルクォーツ
- Camel-spring
Cron コンポーネントは Camel K でもサポートされており、cron 式で必要なときに Kubernetes スケジューラーを使用してルートをトリガーできます。Camel K では、Kubernetes cron 構文と互換性のある cron 式を使用する場合、追加のライブラリーをプラグインする必要はありません。
23.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で cron を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-cron-starter</artifactId>
</dependency>
特定の実装をプラグインするには、追加のライブラリーが必要になる場合があります。
23.2. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
23.2.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
23.2.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
23.3. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
Cron コンポーネントは、以下に示す 3 つのオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| cronService (advanced) | 複数の実装が提供されている場合に使用する CamelCronService の ID。 | String |
23.4. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Cron エンドポイントは、URI 構文を使用して設定されます。
cron:name
パスおよびクエリーパラメーターを使用します。
23.4.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| name (consumer) | 必須 cron トリガーの名前。 | String |
23.4.2. クエリーパラメーター (4 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| schedule (consumer) | 必須 イベントの生成に使用される cron 式。 | String | |
| exceptionHandler (consumer (advanced)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (advanced)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern |
23.5. 使用方法 リンクのコピーリンクがクリップボードにコピーされました!
次の例のように、コンポーネントを使用して、指定した時間にイベントをトリガーできます。
from("cron:tab?schedule=0/1+*+*+*+*+?")
.setBody().constant("event")
.log("${body}");
スケジュール式 0/3+10+*+? は、0/3 10 * * * ? とも書けます。毎時 10 分だけ 3 秒ごとにイベントをトリガーします。
スケジュール式の各部の意味 (順番):
- 秒 (オプション)
- 分
- 時
- Day of month
- 月
- Day of week
- 年 (オプション)
スケジュール式は、5 ~ 7 個のパーツで構成されます。式が 6 つの部分で構成されている場合、最初の項目は "秒" の部分です (年は欠落していると見なされます)。
スケジュール式のその他の有効な例は次のとおりです。
-
0/2 * * * ?(5 部、2 分ごとのイベント) -
0 0/2 * * * MON-FRI 2030(7 部、2030 年のみ 2 分ごとのイベント)
ルートは、XML DSL を使用して記述することもできます。
<route>
<from uri="cron:tab?schedule=0/1+*+*+*+*+?"/>
<setBody>
<constant>event</constant>
</setBody>
<to uri="log:info"/>
</route>
23.6. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 4 つのオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.cron.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.cron.bridge-error-handler | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | Boolean |
| camel.component.cron.cron-service | 複数の実装が提供されている場合に使用する CamelCronService の ID。 | String | |
| camel.component.cron.enabled | cron コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean |
第24章 Crypto (JCE) リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.3 以降
producer のみサポート対象
Camel 暗号化エンドポイントと Java Cryptographic エクステンションを使用すると、エクスチェンジ用のデジタル署名を簡単に作成できます。Camel は、エクスチェンジワークフローのある時点でエクスチェンジ用の署名を作成し、後の別の時点で署名を検証するために対で使用できる、柔軟性に優れたエンドポイントのペアを提供します。
24.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で crypto を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-crypto-starter</artifactId>
</dependency>
24.2. 概要 リンクのコピーリンクがクリップボードにコピーされました!
デジタル署名は、非対称暗号技術を使用してメッセージに署名します。高いレベルから、このアルゴリズムでは、1 つの鍵で暗号化されたデータは、もう一方の鍵でのみ復号化できるという特別なプロパティーを持つ補完的な鍵ペアが使用されます。秘密鍵は厳重に保護され、メッセージの '署名' に使用されますが、公開鍵は署名付きメッセージの検証に関心を持つすべてのユーザーに共有されます。メッセージは、秘密鍵を使用してメッセージのダイジェストを暗号化することによって署名されます。この暗号化されたダイジェストは、メッセージとともに送信されます。一方、検証者はメッセージダイジェストを再計算し、公開鍵を使用して署名内のダイジェストを復号化します。両方のダイジェストが一致する場合、検証者には、署名を作成できたのは秘密鍵の所有者のみであることがわかります。
Camel は、Java 暗号化拡張機能の署名サービスを使用して、エクスチェンジ署名の作成に必要なすべての重い暗号処理を行います。以下のリソースでは、暗号化、メッセージダイジェスト、デジタル署名の仕組みと、それらを JCE で活用する方法を説明しています。
- Bruce Schneier の応用暗号
- David Hook による Java による暗号化の開始
- 洞察に満ちたウィキペディア Digital_signatures
24.3. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
Camel が提供する署名の作成および検証用の暗号化エンドポイントペア
crypto:sign:name[?options]
crypto:verify:name[?options]
-
crypto:signは署名を作成し、定数org.apache.camel.component.crypto.DigitalSignatureConstants.SIGNATUREで鍵が追加されたヘッダーに署名を保存します。それが"CamelDigitalSignature"です。 -
crypto:verifyは、このヘッダーの内容を読み取り、検証のための計算を行います。
正しく機能するためには、共有する鍵ペアが必要です。署名には PrivateKey が必要で、検証には PublicKey (またはそれを含む Certificate) が必要です。JCE を使用すると鍵ペアを非常に簡単に生成できますが、通常、最もセキュアなのは KeyStore を使用してキーを格納および共有する方法です。DSL は、キーの提供方法について非常に柔軟であり、多くのメカニズムを提供します。
通常は crypto:sign エンドポイントは 1 つのルートで定義され、補完的な crypto:verify は別のルートで定義されますが、わかりやすくするために例では順番に表示しています。署名と検証は、同じように設定する必要があります。
24.4. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは、以下の 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
24.4.1. コンポーネントオプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベルは、エンドポイントによって継承される一般的な設定を保持する最上位レベルです。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
コンポーネントによってはオプションが少ししかないものもあれば、多くのオプションを持つものもあります。コンポーネントには通常、一般的に使用されるデフォルトが事前設定されているため、コンポーネントにいくつかのオプションを設定するだけで済みます。あるいは、全く何も設定しない場合もあります。
コンポーネントの設定は、Component DSL、設定ファイル (application.properties|yaml)、または直接 Java コードで実行できます。
24.4.2. エンドポイントオプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントには多くのオプションがあり、エンドポイントに必要な動作を設定できます。オプションは、エンドポイントが consumer (from) または producer (to) として使用されるか、両方に使用されるかにも分類されます。
エンドポイントの設定は、パスおよびクエリーパラメーターとしてエンドポイント URI で直接行われます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
Property Placeholders を使用して、URL、ポート番号、機密情報、その他の設定をハードコーディングしないためのオプションを設定します。つまり、プレースホルダーを使用すると、コードから設定を外部化でき、柔軟性および再利用性が向上します。
以下の 2 つのセクションでは、最初にコンポーネント、次にエンドポイントのすべてのオプションを一覧表示します。
24.5. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
Crypto (JCE) コンポーネントは、以下に示す 21 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| algorithm (producer) | 署名者に使用するアルゴリズムの JCE 名を設定します。 | SHA256withRSA | String |
| alias (producer) | エクスチェンジの署名と検証に使用される鍵および \\{link java.security.cert.Certificate Certificates} を KeyStore に照会する際に使用するエイリアスを設定します。この値は、実行時にメッセージヘッダー org.apache.camel.component.crypto.DigitalSignatureConstants#KEYSTORE_ALIAS を介して提供できます。 | String | |
| certificateName (producer) | レジストリーで検索できる PrivateKey の参照名を設定します。 | String | |
| keystore (producer) | エクスチェンジの署名と検証に使用する鍵と証明書を格納できる KeyStore を設定します。KeyStore は通常、Route 定義で提供されるか、メッセージヘッダーの CamelSignatureKeyStoreAlias を介して動的に指定されるエイリアスと共に使用されます。エイリアスが指定されておらず、キーストアに 1 つのエントリーしかない場合は、この 1 つのエントリーが使用されます。 | KeyStore | |
| keystoreName (producer) | レジストリーで検索できる Keystore の参照名を設定します。 | String | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| privateKey* (producer) | エクスチェンジの署名に使用する PrivateKey を設定します。 | PrivateKey | |
| privateKeyName (producer) | レジストリーで検索できる PrivateKey の参照名を設定します。 | String | |
| provider (producer) | 設定された署名アルゴリズムを提供するセキュリティープロバイダーの ID を設定します。 | String | |
| publicKeyName (producer) | コンテキストが変更された場合に解決する必要がある参照。 | String | |
| secureRandomName (producer) | レジストリーで検索できる SecureRandom の参照名を設定します。 | String | |
| signatureHeaderName (producer) | base64 でエンコードされた署名を格納するために使用する必要があるメッセージヘッダーの名前を設定します。デフォルトは 'CamelDigitalSignature' です。 | String | |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| bufferSize (advanced) | Exchange ペイロードデータの読み込みに使用されるバッファーのサイズを設定します。 | 2048 | Integer |
| certificate (advanced) | ペイロードに基づいてエクスチェンジで署名を検証するために使用する証明書を設定します。 | 証明書 | |
| clearHeaders (advanced) | 署名と検証後に署名固有のヘッダーをクリアするかどうかを決定します。デフォルトは true ですが、設定を解除するとキーやパスワードなどの重要な個人情報が漏洩する可能性があるため、極度の危険がある場合にのみ設定する必要があります。 | true | boolean |
| configuration (advanced) | 共有 DigitalSignatureConfiguration を設定として使用する場合。 | DigitalSignatureConfiguration | |
| keyStoreParameters (advanced) | 指定された KeyStoreParameters に基づいて、エクスチェンジの署名と検証に使用するキーと証明書を格納できる KeyStore を設定します。KeyStore は通常、Route 定義で提供されるか、メッセージヘッダーの CamelSignatureKeyStoreAlias を介して動的に指定されるエイリアスと共に使用されます。エイリアスが指定されておらず、キーストアに 1 つのエントリーしかない場合は、この 1 つのエントリーが使用されます。 | KeyStoreParameters | |
| publicKey (advanced) | エクスチェンジで署名を検証するために使用する PublicKey を設定します。 | PublicKey | |
| secureRandom (advanced) | Signature サービスの初期化に使用する SecureRandom を設定します。 | SecureRandom | |
| password (security) | KeyStore でエイリアス化された PrivateKey にアクセスするために使用するパスワードを設定します。 | String |
24.6. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Crypto (JCE) エンドポイントは、URI 構文を使用して設定されます。
crypto:cryptoOperation:name
パスとクエリーのパラメーターは次のとおりです。
24.6.1. パスパラメーター (2 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| cryptoOperation (producer) | 必須 エンドポイント URI の暗号スキームの後に指定された暗号操作を設定します。たとえば、crypto:sign 操作として署名を設定します。 列挙値: * sign * verify | CryptoOperation | |
| name (producer) | 必須 この操作の論理名。 | String |
24.6.2. クエリーパラメーター (19 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| algorithm (producer) | 署名者に使用するアルゴリズムの JCE 名を設定します。 | SHA256withRSA | String |
| alias (producer) | エクスチェンジの署名と検証に使用される鍵および \\{link java.security.cert.Certificate Certificates} を KeyStore に照会する際に使用するエイリアスを設定します。この値は、実行時にメッセージヘッダー org.apache.camel.component.crypto.DigitalSignatureConstants#KEYSTORE_ALIAS を介して提供できます。 | String | |
| certificateName (producer) | レジストリーで検索できる PrivateKey の参照名を設定します。 | String | |
| keystore (producer) | エクスチェンジの署名と検証に使用するキーと証明書を格納できる KeyStore を設定します。KeyStore は通常、Route 定義で提供されるか、メッセージヘッダーの CamelSignatureKeyStoreAlias を介して動的に指定されるエイリアスと共に使用されます。エイリアスが指定されておらず、キーストアに 1 つのエントリーしかない場合は、この 1 つのエントリーが使用されます。 | KeyStore | |
| keystoreName (producer) | レジストリーで検索できる Keystore の参照名を設定します。 | String | |
| privateKey (producer) | エクスチェンジの署名に使用する PrivateKey を設定します。 | PrivateKey | |
| privateKeyName (producer) | レジストリーで検索できる PrivateKey の参照名を設定します。 | String | |
| provider (producer) | 設定された署名アルゴリズムを提供するセキュリティープロバイダーの ID を設定します。 | String | |
| publicKeyName (producer) | コンテキストが変更された場合に解決する必要がある参照。 | String | |
| secureRandomName (producer) | レジストリーで検索できる SecureRandom の参照名を設定します。 | String | |
| signatureHeaderName (producer) | base64 でエンコードされた署名を格納するために使用する必要があるメッセージヘッダーの名前を設定します。デフォルトは 'CamelDigitalSignature' です。 | String | |
| lazyStartProducer (producer (advanced)) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。これを遅らせて遅延起動することで、Camel のルーティングエラーハンドラーを使用してメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理された後は、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| bufferSize (advanced) | Exchange ペイロードデータの読み込みに使用されるバッファーのサイズを設定します。 | 2048 | Integer |
| certificate (advanced) | ペイロードに基づいてエクスチェンジで署名を検証するために使用する証明書を設定します。 | 証明書 | |
| clearHeaders (advanced) | 署名と検証後に署名固有のヘッダーをクリアするかどうかを決定します。デフォルトは true ですが、設定を解除するとキーやパスワードなどの重要な個人情報が漏洩する可能性があるため、極度の危険がある場合にのみ設定する必要があります。 | true | boolean |
| keyStoreParameters (advanced) | 指定された KeyStoreParameters に基づいて、エクスチェンジの署名と検証に使用するキーと証明書を格納できる KeyStore を設定します。KeyStore は通常、Route 定義で提供されるか、メッセージヘッダーの CamelSignatureKeyStoreAlias を介して動的に指定されるエイリアスと共に使用されます。エイリアスが指定されておらず、キーストアに 1 つのエントリーしかない場合は、この 1 つのエントリーが使用されます。 | KeyStoreParameters | |
| publicKey (advanced) | エクスチェンジで署名を検証するために使用する PublicKey を設定します。 | PublicKey | |
| secureRandom (advanced) | Signature サービスの初期化に使用する SecureRandom を設定します。 | SecureRandom | |
| password (security) | KeyStore でエイリアス化された PrivateKey にアクセスするために使用するパスワードを設定します。 | String |
24.7. メッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
Crypto (JCE) コンポーネントは、以下に示す 4 つのメッセージヘッダーをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| [CamelSignaturePrivateKey (producer) | メッセージの署名に使用する PrivateKey。 | PrivateKey | |
| [CamelSignaturePublicKeyOrCert (producer) | 署名の検証に使用する証明書または PublicKey。 | 証明書または PublicKey | |
| CamelSignatureKeyStoreAlias (producer)
定数: | エクスチェンジの署名と検証に使用される鍵と証明書を、KeyStore に照会する際に使用するエイリアス。 | String | |
| CamelSignatureKeyStorePassword (producer) | KeyStore でエイリアス化された PrivateKey にアクセスする際に使用するパスワード。 | char[] |
24.8. 使用 リンクのコピーリンクがクリップボードにコピーされました!
24.8.1. Raw keys リンクのコピーリンクがクリップボードにコピーされました!
エクスチェンジの署名および検証方法として最も基本的なのは、次のように KeyPair を使用する方法です。
KeyPair keyPair = KeyGenerator.getInstance("RSA").generateKeyPair();
from("direct:sign")
.setHeader(DigitalSignatureConstants.SIGNATURE_PRIVATE_KEY, constant(keys.getPrivate()))
.to("crypto:sign:message")
.to("direct:verify");
from("direct:verify")
.setHeader(DigitalSignatureConstants.SIGNATURE_PUBLIC_KEY_OR_CERT, constant(keys.getPublic()))
.to("crypto:verify:check");
Spring XML Extensions で鍵への参照を使用しても、同じ結果になります。
24.8.2. キーストアとエイリアス。 リンクのコピーリンクがクリップボードにコピーされました!
JCE は、秘密鍵と証明書のペアを格納し、それらを暗号化し、パスワードで保護するための非常に用途の広いキーストアの概念を提供します。これらは、取得 API にエイリアスを適用することで取得できます。鍵と証明書を鍵ストアに入れる方法はいくつかありますが、ほとんどの場合、これは外部の 'keytool' アプリケーションで行われます。
次のコマンドは、エイリアスが bob の鍵と証明書が格納された keystore を作成します。これは以下の例で使用できます。キーストアと鍵のパスワードは letmein です。
keytool -genkey -keyalg RSA -keysize 2048 -keystore keystore.jks -storepass letmein -alias bob -dname "CN=Bob,OU=IT,O=Camel" -noprompt
次のルートは、最初に Camel レジストリーにバインドされた KeyStore からエクスチェンジに Bob のエイリアスを使用して署名し、次に同じエイリアスを使用して検証します。
from("direct:sign")
.to("crypto:sign:keystoreSign?alias=bob&keystoreName=myKeystore&password=letmein")
.log("Signature: ${header.CamelDigitalSignature}")
.to("crypto:verify:keystoreVerify?alias=bob&keystoreName=myKeystore&password=letmein")
.log("Verified: ${body}");
次のコードは、上記の keytool コマンドを使用して作成されたキーストアをロードし、上記のルートで使用するために myKeystore という名前でレジストリーにバインドしてロードする方法を示しています。この例では、Camel 3 で導入された @Configuration および @BindToRegistry のアノテーションを使用して KeyStore をインスタンス化し、myKeyStore という名前で登録します。
@Configuration
public class KeystoreConfig {
@BindToRegistry
public KeyStore myKeystore() throws Exception {
KeyStore store = KeyStore.getInstance("JKS");
try (FileInputStream fis = new FileInputStream("keystore.jks")) {
store.load(fis, "letmein".toCharArray());
}
return store;
}
}
再び Spring では、ref を使用して実際のキーストアインスタンスを検索します。
24.8.3. JCE プロバイダーとアルゴリズムの変更 リンクのコピーリンクがクリップボードにコピーされました!
署名アルゴリズムまたはセキュリティープロバイダーの変更は、それらの名前を指定するだけの簡単な作業です。選択したアルゴリズムと互換性のあるキーも使用する必要があります。
24.8.4. 署名メッセージヘッダーの変更 リンクのコピーリンクがクリップボードにコピーされました!
署名を格納するために使用されるメッセージヘッダーを変更することが望ましい場合があります。次のように、ルート定義で別のヘッダー名を指定できます。
from("direct:sign")
.to("crypto:sign:keystoreSign?alias=bob&keystoreName=myKeystore&password=letmein&signatureHeaderName=mySignature")
.log("Signature: ${header.mySignature}")
.to("crypto:verify:keystoreVerify?alias=bob&keystoreName=myKeystore&password=letmein&signatureHeaderName=mySignature");
===bufferSize の変更
バッファーのサイズを更新する必要がある場合。
24.8.5. キーを動的に提供します。 リンクのコピーリンクがクリップボードにコピーされました!
受信者リストまたは同様の EIP を使用する場合、エクスチェンジの受信者は動的に変化する可能性があります。すべての受信者に同じキーを使用することは、実現可能でも望ましくもない場合があります。署名キーを交換ごとに動的に指定できると便利です。エクスチェンジは、署名する前に、ターゲット受信者のキーで動的に強化できます。これを容易にするために、署名メカニズムでは、以下のメッセージヘッダーを介して鍵を動的に提供できます。
-
DigitalSignatureConstants.SIGNATURE_PRIVATE_KEY,"CamelSignaturePrivateKey" -
DigitalSignatureConstants.SIGNATURE_PUBLIC_KEY_OR_CERT,"CamelSignaturePublicKeyOrCert"
キーストアエイリアスを動的に指定することを推奨します。この場合も、エイリアスはメッセージヘッダーで指定できます。
-
DigitalSignatureConstants.KEYSTORE_ALIAS,"CamelSignatureKeyStoreAlias"
ヘッダーは次のように設定されます。
Exchange unsigned = getMandatoryEndpoint("direct:alias-sign").createExchange();
unsigned.getIn().setBody(payload);
unsigned.getIn().setHeader(DigitalSignatureConstants.KEYSTORE_ALIAS, "bob");
unsigned.getIn().setHeader(DigitalSignatureConstants.KEYSTORE_PASSWORD, "letmein".toCharArray());
template.send("direct:alias-sign", unsigned);
Exchange signed = getMandatoryEndpoint("direct:alias-sign").createExchange();
signed.getIn().copyFrom(unsigned.getMessage());
signed.getIn().setHeader(DigitalSignatureConstants.KEYSTORE_ALIAS, "bob");
template.send("direct:alias-verify", signed);
24.9. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントは、以下に示す 47 個のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.crypto.algorithm | 署名者に使用するアルゴリズムの JCE 名を設定します。 | SHA256withRSA | String |
| camel.component.crypto.alias | エクスチェンジの署名と検証に使用される鍵および {link java.security.cert.Certificate Certificates} を KeyStore に照会する際に使用するエイリアスを設定します。この値は、実行時にメッセージヘッダー org.apache.camel.component.crypto.DigitalSignatureConstants#KEYSTORE_ALIAS を介して提供できます。 | String | |
| camel.component.crypto.autowired-enabled | 自動ワイヤリングが有効かどうか。自動ワイヤリングオプション (自動ワイヤリングとマークする必要あり) で使用されます。レジストリー内を、タイプが一致するシングルインスタンスがあるか検索し、それをコンポーネント上で設定します。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.crypto.buffer-size | Exchange ペイロードデータの読み込みに使用されるバッファーのサイズを設定します。 | 2048 | Integer |
| camel.component.crypto.certificate | ペイロードに基づいてエクスチェンジで署名を検証するために使用する証明書を設定します。オプションは java.security.cert.Certificate 型です。 | 証明書 | |
| camel.component.crypto.certificate-name | レジストリーで検索できる PrivateKey の参照名を設定します。 | String | |
| camel.component.crypto.clear-headers | 署名と検証後に署名固有のヘッダーをクリアするかどうかを決定します。デフォルトは true ですが、設定を解除するとキーやパスワードなどの重要な個人情報が漏洩する可能性があるため、極度の危険がある場合にのみ設定する必要があります。 | true | Boolean |
| camel.component.crypto.configuration | 共有 DigitalSignatureConfiguration を設定として使用する場合。オプションは org.apache.camel.component.crypto.DigitalSignatureConfiguration 型です。 | DigitalSignatureConfiguration | |
| camel.component.crypto.enabled | crypto コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.crypto.key-store-parameters | 指定された KeyStoreParameters に基づいて、エクスチェンジの署名と検証に使用するキーと証明書を格納できる KeyStore を設定します。KeyStore は通常、Route 定義で提供されるか、メッセージヘッダーの CamelSignatureKeyStoreAlias を介して動的に指定されるエイリアスと共に使用されます。エイリアスが指定されておらず、キーストアに 1 つのエントリーしかない場合は、この 1 つのエントリーが使用されます。オプションは org.apache.camel.support.jsse.KeyStoreParameters タイプです。 | KeyStoreParameters | |
| camel.component.crypto.keystore | エクスチェンジの署名と検証に使用するキーと証明書を格納できる KeyStore を設定します。KeyStore は通常、Route 定義で提供されるか、メッセージヘッダーの CamelSignatureKeyStoreAlias を介して動的に指定されるエイリアスと共に使用されます。エイリアスが指定されておらず、キーストアに 1 つのエントリーしかない場合は、この 1 つのエントリーが使用されます。オプションは java.security.KeyStore 型です。 | KeyStore | |
| camel.component.crypto.keystore-name | レジストリーで検索できる Keystore の参照名を設定します。 | String | |
| camel.component.crypto.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。これを遅らせて遅延起動することで、Camel のルーティングエラーハンドラーを経由するメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.crypto.password | KeyStore でエイリアス化された PrivateKey にアクセスするために使用するパスワードを設定します。 | String | |
| camel.component.crypto.private-key | エクスチェンジの署名に使用する PrivateKey を設定します。オプションは java.security.PrivateKey 型です。 | PrivateKey | |
| camel.component.crypto.private-key-name | レジストリーで検索できる PrivateKey の参照名を設定します。 | String | |
| camel.component.crypto.provider | 設定された署名アルゴリズムを提供するセキュリティープロバイダーの ID を設定します。 | String | |
| camel.component.crypto.public-key | エクスチェンジで署名を検証するために使用する PublicKey を設定します。オプションは java.security.PublicKey 型です。 | PublicKey | |
| camel.component.crypto.public-key-name | コンテキストが変更された場合に解決する必要がある参照。 | String | |
| camel.component.crypto.secure-random | Signature サービスの初期化に使用する SecureRandom を設定します。オプションは java.security.SecureRandom 型です。 | SecureRandom | |
| camel.component.crypto.secure-random-name | レジストリーで検索できる SecureRandom の参照名を設定します。 | String | |
| camel.component.crypto.signature-header-name | base64 でエンコードされた署名を格納するために使用する必要があるメッセージヘッダーの名前を設定します。デフォルトは 'CamelDigitalSignature' です。 | String | |
| camel.dataformat.crypto.algorithm | 使用される暗号アルゴリズムを示す JCE アルゴリズム名。 | String | |
| camel.dataformat.crypto.algorithm-parameter-ref | Cipher の初期化に使用される JCE AlgorithmParameterSpec。指定された名前を java.security.spec.AlgorithmParameterSpec タイプとして使用してタイプを検索します。 | String | |
| camel.dataformat.crypto.buffer-size | 署名プロセスで使用されるバッファーのサイズ。 | 4096 | Integer |
| camel.dataformat.crypto.crypto-provider | 使用する JCE セキュリティープロバイダーの名前。 | String | |
| camel.dataformat.crypto.enabled | crypto データ形式の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.dataformat.crypto.init-vector-ref | Cipher の初期化に使用される初期化ベクトルを含むバイト配列を参照します。 | String | |
| camel.dataformat.crypto.inline | 設定された IV を暗号化されたデータストリームにインライン化する必要があることを示すフラグ。デフォルトでは false です。 | false | Boolean |
| camel.dataformat.crypto.key-ref | 使用するレジスタから参照する秘密鍵を参照します。 | String | |
| camel.dataformat.crypto.mac-algorithm | メッセージ認証アルゴリズムを示す JCE アルゴリズム名。 | HmacSHA1 | String |
| camel.dataformat.crypto.should-append-h-m-a-c | メッセージ認証コードを計算して暗号化されたデータに追加する必要があることを示すフラグ。 | true | Boolean |
| camel.dataformat.pgp.algorithm | 対称鍵暗号化アルゴリズム。可能な値は org.bouncycastle.bcpg.SymmetricKeyAlgorithmTags で定義されています。たとえば、2 (= TRIPLE DES)、3 (= CAST5)、4 (= BLOWFISH)、6 (= DES)、7 (= AES_128) です。暗号化にのみ関連します。 | Integer | |
| camel.dataformat.pgp.armored | このオプションにより、PGP は暗号化されたテキストを base64 でエンコードし、コピー/貼り付けなどに使用できるようにします。 | false | Boolean |
| camel.dataformat.pgp.compression-algorithm | 圧縮アルゴリズム;可能な値は org.bouncycastle.bcpg.CompressionAlgorithmTags で定義されています。たとえば、0 (= 非圧縮)、1 (= ZIP)、2 (= ZLIB)、3 (= BZIP2) です。暗号化にのみ関連します。 | Integer | |
| camel.dataformat.pgp.enabled | pgp データ形式の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.dataformat.pgp.hash-algorithm | 署名ハッシュアルゴリズム。可能な値は org.bouncycastle.bcpg.HashAlgorithmTags で定義されています。たとえば、2 (= SHA1)、8 (= SHA256)、9 (= SHA384)、10 (= SHA512)、11 (=SHA224) です。署名にのみ関連します。 | Integer | |
| camel.dataformat.pgp.integrity | 整合性チェック/署名を暗号化ファイルに追加します。デフォルト値は true です。 | true | Boolean |
| camel.dataformat.pgp.key-file-name | キーリングのファイル名。クラスパスリソースとしてアクセスできる必要があります (ただし、file: 接頭辞を使用してファイルシステム内のロケーションを指定できます)。 | String | |
| camel.dataformat.pgp.key-userid | 暗号化中に使用される PGP キーリング内のキーのユーザー ID。ユーザー ID の一部のみにすることもできます。たとえば、ユーザー ID が Test User の場合、Test User または部分を使用してユーザー ID を指定できます。 | String | |
| camel.dataformat.pgp.password | 秘密鍵を開くときに使用されるパスワード (暗号化には使用されません)。 | String | |
| camel.dataformat.pgp.provider | Java Cryptography Extension (JCE) プロバイダー。デフォルトは Bouncy Castle (BC) です。あるいは、IAIK JCE プロバイダーなどを使用することもできます。この場合、プロバイダーは事前に登録する必要があり、Bouncy Castle プロバイダーは事前に登録しないでください。Sun JCE プロバイダーが機能しません。 | String | |
| camel.dataformat.pgp.signature-key-file-name | 署名 (暗号化中) または署名検証 (復号化中) に使用するキーリングのファイル名。クラスパスリソースとしてアクセスできる必要があります (ただし、file: 接頭辞を使用してファイルシステム内のロケーションを指定できます)。 | String | |
| camel.dataformat.pgp.signature-key-ring | バイト配列としての署名/検証に使用されるキーリング。signatureKeyFileName と signatureKeyRing を同時に設定することはできません。 | String | |
| camel.dataformat.pgp.signature-key-userid | 署名 (暗号化中) または署名検証 (復号化中) に使用される PGP キーリング内のキーのユーザー ID。署名検証プロセス中、指定されたユーザー ID は、検証に使用できる公開キーリングからの公開鍵を制限します。署名の検証にユーザー ID が指定されていない場合は、公開キーリング内の任意の公開鍵を検証に使用できます。ユーザー ID の一部のみにすることもできます。たとえば、ユーザー ID が Test User の場合、Test User の部分を使用したり、ユーザー ID をアドレス指定したりできます。 | String | |
| camel.dataformat.pgp.signature-password | 署名に使用する秘密鍵を開くとき (暗号化時) に使用するパスワード。 | String | |
| camel.dataformat.pgp.signature-verification-option | アンマーシャリング中に署名を検証する動作を制御します。設定可能な値は 4 つあります。オプション: PGP メッセージには署名が含まれる場合と含まれない場合があります。署名が含まれている場合は、署名の検証が実行されます。必須: PGP メッセージには少なくとも 1 つの署名が含まれている必要があります。そうでない場合は、例外 (PGPException) が出力されます。署名検証が実行されます。ignore: PGP メッセージに含まれる署名は無視されます。署名の検証は実行されません。no_signature_allowed: PGP メッセージに署名を含めることはできません。それ以外の場合は、例外 (PGPException) が出力されます。 | String |
第25章 CSimple リンクのコピーリンクがクリップボードにコピーされました!
CSimple 言語は、コンパイルされた Simple 言語です。
25.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で csimple を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-core-starter</artifactId>
</dependency>
25.2. CSimple と Simple の相違点 リンクのコピーリンクがクリップボードにコピーされました!
Simple 言語は動的な式言語であり、一連の Camel 式または述語に実行時に解析されます。
csimple 言語は、通常の Java ソースコードに解析され、他のすべてのソースコードと一緒にコンパイルされるか、camel-csimple-joor モジュールを介してブートストラップ中に 1 回コンパイルされます。
Simple 言語は通常、非常に軽量で高速ですが、OGNL パスを介した動的メソッドの呼び出しを伴う一部のユースケースでは、Simple 言語が実行時のイントロスペクションとリフレクションの呼び出しを行います。これにはパフォーマンスのオーバーヘッドがあり、csimple が作成された理由の 1 つです。
csimple 言語はタイプセーフである必要があり、OGNL パスを介したメソッド呼び出しでは、解析中に型を把握しておく必要があります。つまり、csimple 言語式の場合、スクリプトでクラスタイプを提供する必要ですが、simple の場合は実行時にこれをイントロスペクトします。
言い換えると、Simple 言語は ダックタイピング (アヒルのように見え、アヒルのように鳴く場合、それはアヒルである) を使用しており、csimple は Java 型 (タイプセーフ) を使用しています。型エラーがある場合には、Simple は実行時にこれを報告し、csimple では Java コンパイルエラーが発生します。
25.2.1. 追加の CSimple 関数 リンクのコピーリンクがクリップボードにコピーされました!
csimple 言語には、Collection、Map、または配列型を操作する一般的なユースケースをサポートするための追加関数がいくつか含まれています。次の関数 bodyAsIndex、headerAsIndex、および exchangePropertyAsIndex は、これらのユースケースに入力されたとおりに使用されます。
| 機能 | 型 | 説明 |
|---|---|---|
| bodyAsIndex(type, index) | 型 |
既存の |
| mandatoryBodyAsIndex(type, index) | 型 |
既存の |
| headerAsIndex(key, type, index) | 型 |
既存の |
| mandatoryHeaderAsIndex(key, type, index) | 型 |
既存の |
| exchangePropertyAsIndex(key, type, index) | 型 |
既存の |
| mandatoryExchangePropertyAsIndex(key, type, index) | 型 |
既存の |
たとえば、次の Simple 式があるとします。
Hello $\{body[0].name}
このスクリプトには型情報がありません。Simple 言語は、メッセージボディーをイントロスペクトし、コレクションベースの場合は最初の要素を検索し、reflection を介して getName という名前のメソッドを呼び出すことにより、実行時にこの名前を解決します。
csimple (コンパイル済み) では、これをプリコンパイルする必要があるため、エンドユーザーは bodyAsIndex 関数で型情報を提供する必要があります。
Hello $\{bodyAsIndex(com.foo.MyUser, 0).name}
25.3. コンパイル リンクのコピーリンクがクリップボードにコピーされました!
csimple 言語は、通常の Java ソースコードに解析され、他のすべてのソースコードと一緒にコンパイルされるか、camel-csimple-joor モジュールを介してブートストラップ中に 1 回コンパイルすることもできます。
csimple をコンパイルするには 2 つの方法があります
-
ビルド時に
camel-csimple-maven-plugin生成ソースコードを使用します。 -
Camel のブートストラップ中にランタイムインメモリーコンパイルを行う
camel-csimple-joorを使用します。
25.3.1. camel-csimple-maven-plugin の使用 リンクのコピーリンクがクリップボードにコピーされました!
camel-csimple-maven-plugin Maven プラグインは、ソースコードからすべての csimple スクリプトを検出するために使用され、src/generated/java フォルダーにソースコードが自動生成され、他のすべてのソースと共にコンパイルされます。
Maven プラグインは、.java および .xml ファイル (Java および XML DSL) のソースコードスキャンを実行します。スキャナーは特定のコードパターンの検出に制限をかけており、csimple スクリプトが異常または、まれな方法で使用されている場合に、csimple スクリプトの一部を検出できない可能性があります。
camel-csimple-joor を使用したランタイムコンパイルには、この制限はありません。
利点として、すべての csimple スクリプトが通常の Java コンパイラーを使用してコンパイルされるため、すべてがアプリケーションの JAR ファイルに .class ファイルとしてそのまま含まれており、実行時に追加の依存関係が必要ないことが挙げられます。
camel-csimple-maven-plugin を使用するには、次のように pom.xml ファイルに追加する必要があります。
<plugins>
<!-- generate source code for csimple languages -->
<plugin>
<groupId>org.apache.camel</groupId>
<artifactId>camel-csimple-maven-plugin</artifactId>
<version>${camel.version}</version>
<executions>
<execution>
<id>generate</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- include source code generated to maven sources paths -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
<goal>add-resource</goal>
</goals>
<configuration>
<sources>
<source>src/generated/java</source>
</sources>
<resources>
<resource>
<directory>src/generated/resources</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
そして、build-helper-maven-plugin Maven プラグインを追加して、src/generated を Java コンパイラーのソースフォルダーのリストに追加して、生成されたソースコードがコンパイルされ、アプリケーション JAR ファイルに含まれるようにする必要があります。
Maven プラグインを使用する Camel Examples の camel-example-csimple の例を参照してください。
25.3.2. camel-csimple-joor の使用 リンクのコピーリンクがクリップボードにコピーされました!
jOOR ライブラリーは Java コンパイラーと統合され、Java コードのランタイムコンパイルを実行します。
camel-simple-joor を使用するときにサポートされるランタイムは、Java スタンドアロン、Spring Boot、Camel Quarkus、およびその他のマイクロサービスランタイムを対象としています。OSGi、Camel Karaf、またはあらゆる種類の Java Application Server ランタイムではサポートされていません。
jOOR は、ファット jar パッケージ (https://github.com/jOOQ/jOOR/issues/69) を使用した Spring Boot でのランタイムコンパイルをサポートしていません。展開形式のクラスパスで動作します。
camel-simple-joor を使用するには、依存関係としてクラスパスに追加するだけです。
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-csimple-joor</artifactId>
<version>{CamelSBProjectVersion}</version>
</dependency>
pom.xml ファイルに Maven プラグインを追加する必要はありません。
jOOR コンパイラーを使用する Camel Examples の camel-example-csimple-joor の例を参照してください。
25.4. CSimple 言語オプション リンクのコピーリンクがクリップボードにコピーされました!
CSimple 言語は、次に示す 2 つのオプションをサポートしています。
| 名前 | デフォルト | Java タイプ | 説明 |
|---|---|---|---|
| resultType |
| 結果の型 (出力からの型) のクラス名を設定します。 | |
| trim |
| 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 |
25.5. 制限 リンクのコピーリンクがクリップボードにコピーされました!
現在、csimple 言語は以下をサポート していません。
- ネストされた関数 (別名、関数内の関数)
-
null セーフな 演算子 (
?)。
たとえば、次のスクリプトはコンパイルできません。
Hello ${bean:greeter(${body}, ${header.counter})}
${bodyAs(MyUser)?.address?.zip} > 10000
25.6. 自動インポート リンクのコピーリンクがクリップボードにコピーされました!
csimple 言語は、以下から自動的にインポートされます。
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.*;
import org.apache.camel.*;
import org.apache.camel.util.*;
25.7. 設定ファイル リンクのコピーリンクがクリップボードにコピーされました!
ルートクラスパスからロードされる camel-csimple.properties ファイルで csimple 言語を設定できます。
たとえば、camel-csimple.properties ファイルに追加のインポートを追加するには、次を追加します。
import com.foo.MyUser;
import com.bar.*;
import static com.foo.MyHelper.*;
また、コード内で省略形の置換として使用されるエイリアス (key=value) を追加することもできます。
echo()=${bodyAs(String)} ${bodyAs(String)}
次のような csimple 言語スクリプトで echo() を使用できます。
from("direct:hello")
.transform(csimple("Hello echo()"))
.log("You said ${body}");
echo() エイリアスはその値に置き換えられ、スクリプトは次のようになります。
.transform(csimple("Hello ${bodyAs(String)} ${bodyAs(String)}"))
25.8. 関連項目 リンクのコピーリンクがクリップボードにコピーされました!
csimple には Simple 言語と同じ関数セットがあるため、Simple 言語を参照してください。
25.9. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 147 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.cloud.consul.service-discovery.acl-token | Consul で使用する ACL トークンを設定します。 | String | |
| camel.cloud.consul.service-discovery.block-seconds | 監視イベントを待機する秒数。デフォルトは 10 秒です。 | 10 | Integer |
| camel.cloud.consul.service-discovery.configurations | 追加の設定定義を定義します。 | Map | |
| camel.cloud.consul.service-discovery.connect-timeout-millis | OkHttpClient の接続タイムアウト。 | Long | |
| camel.cloud.consul.service-discovery.datacenter | データセンター。 | String | |
| camel.cloud.consul.service-discovery.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.cloud.consul.service-discovery.password | 基本認証に使用するパスワードを設定します。 | String | |
| camel.cloud.consul.service-discovery.properties | 使用するクライアントプロパティーを設定します。これらのプロパティーは、使用中のサービスコールの実装に固有です。たとえば、リボンを使用していると、クライアントプロパティーは com.netflix.client.config.CommonClientConfigKey で定義されます。 | Map | |
| camel.cloud.consul.service-discovery.read-timeout-millis | OkHttpClient の読み取りタイムアウト。 | Long | |
| camel.cloud.consul.service-discovery.url | Consul エージェントの URL。 | String | |
| camel.cloud.consul.service-discovery.user-name | Basic 認証に使用するユーザー名を設定します。 | String | |
| camel.cloud.consul.service-discovery.write-timeout-millis | OkHttpClient の書き込みタイムアウト。 | Long | |
| camel.cloud.dns.service-discovery.configurations | 追加の設定定義を定義します。 | Map | |
| camel.cloud.dns.service-discovery.domain | ドメイン名;. | String | |
| camel.cloud.dns.service-discovery.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.cloud.dns.service-discovery.properties | 使用するクライアントプロパティーを設定します。これらのプロパティーは、使用中のサービスコールの実装に固有です。たとえば、リボンを使用していると、クライアントプロパティーは com.netflix.client.config.CommonClientConfigKey で定義されます。 | Map | |
| camel.cloud.dns.service-discovery.proto | 目的のサービスのトランスポートプロトコル。 | _tcp | String |
| camel.cloud.etcd.service-discovery.configurations | 追加の設定定義を定義します。 | Map | |
| camel.cloud.etcd.service-discovery.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.cloud.etcd.service-discovery.password | 基本認証に使用するパスワード。 | String | |
| camel.cloud.etcd.service-discovery.properties | 使用するクライアントプロパティーを設定します。これらのプロパティーは、使用中のサービスコールの実装に固有です。たとえば、リボンを使用していると、クライアントプロパティーは com.netflix.client.config.CommonClientConfigKey で定義されます。 | Map | |
| camel.cloud.etcd.service-discovery.service-path | サービス検出のために探すパス。 | /services/ | String |
| camel.cloud.etcd.service-discovery.timeout | アクションが完了するまでにかかる最大時間を設定します。 | Long | |
| camel.cloud.etcd.service-discovery.type | 検出タイプを設定するには、有効な値はオンデマンドとウォッチです。 | オンデマンド | String |
| camel.cloud.etcd.service-discovery.uris | クライアントが接続できる URI。 | String | |
| camel.cloud.etcd.service-discovery.user-name | 基本認証に使用するユーザー名。 | String | |
| camel.cloud.kubernetes.service-discovery.api-version | クライアントルックアップを使用する場合の API バージョンを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.ca-cert-data | クライアントルックアップをする際に使用する認証局データを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.ca-cert-file | クライアントルックアップをする際にファイルからロードされる認証局データを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-cert-data | クライアントルックアップをする際に使用するクライアント証明書データを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-cert-file | クライアントルックアップをする際にファイルからロードされるクライアント証明書データを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-key-algo | クライアントルックアップをする際に使用する、RSA などのクライアントキーストアアルゴリズムを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-key-data | クライアントルックアップをする際に使用する、クライアントキーストアデータを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-key-file | クライアントルックアップをする際にファイルからロードされるクライアントキーストアデータを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-key-passphrase | クライアントルックアップをする際に使用する、クライアントキーストアパスフレーズを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.configurations | 追加の設定定義を定義します。 | Map | |
| camel.cloud.kubernetes.service-discovery.dns-domain | DNS ルックアップに使用する DNS ドメインを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.cloud.kubernetes.service-discovery.lookup | サービスルックアップの実行方法。可能な値: client、dns、environment。クライアントを使用する場合、クライアントは kubernetes マスターにクエリーを実行して、サービスを提供するアクティブな Pod のリストを取得し、Pod をランダム (またはラウンドロビン) に選択します。DNS を使用する場合、サービス名は name.namespace.svc.dnsDomain として解決されます。dnssrv を使用する場合、サービス名は、.…svc…の SRV クエリーで解決されます。環境を使用する場合は、環境変数を使用してサービスを検索します。デフォルトの環境が使用されます。 | environment | String |
| camel.cloud.kubernetes.service-discovery.master-url | クライアントルックアップを使用するときに URL をマスターに設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.namespace | 使用する名前空間を設定します。デフォルトでは、ENV 変数 KUBERNETES_MASTER の名前空間を使用します。 | String | |
| camel.cloud.kubernetes.service-discovery.oauth-token | クライアントルックアップを使用する際に (ユーザー名/パスワードの代わりに) 認証用の OAUTH トークンを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.password | クライアントルックアップを使用する際に使用する、認証パスワードを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.port-name | DNS/DNSSRV ルックアップに使用するポート名を設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.port-protocol | DNS/DNSSRV ルックアップに使用するポートプロトコルを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.properties | 使用するクライアントプロパティーを設定します。これらのプロパティーは、使用中のサービスコールの実装に固有です。たとえば、リボンを使用していると、クライアントプロパティーは com.netflix.client.config.CommonClientConfigKey で定義されます。 | Map | |
| camel.cloud.kubernetes.service-discovery.trust-certs | クライアントルックアップを使用する際に使用する、トラスト証明書のチェックを有効にするかどうかを設定します。 | false | Boolean |
| camel.cloud.kubernetes.service-discovery.username | クライアントルックアップを使用する際に使用する、認証ユーザー名を設定します。 | String | |
| camel.cloud.ribbon.load-balancer.client-name | リボンクライアント名を設定します。 | String | |
| camel.cloud.ribbon.load-balancer.configurations | 追加の設定定義を定義します。 | Map | |
| camel.cloud.ribbon.load-balancer.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.cloud.ribbon.load-balancer.namespace | namespace。 | String | |
| camel.cloud.ribbon.load-balancer.password | パスワード。 | String | |
| camel.cloud.ribbon.load-balancer.properties | 使用するクライアントプロパティーを設定します。これらのプロパティーは、使用中のサービスコールの実装に固有です。たとえば、リボンを使用していると、クライアントプロパティーは com.netflix.client.config.CommonClientConfigKey で定義されます。 | Map | |
| camel.cloud.ribbon.load-balancer.username | ユーザー名 | String | |
| camel.hystrix.allow-maximum-size-to-diverge-from-core-size | maximumSize の設定を有効にします。その値は、coreSize 以上にすることができます。 | false | Boolean |
| camel.hystrix.circuit-breaker-enabled | HystrixCircuitBreaker を使用するかどうか。false の場合、サーキットブレーカーロジックは使用されず、すべての要求が許可されます。これは実質的に circuitBreakerForceClosed() と似ていますが、メトリックの追跡を継続し、それを開閉する必要があるかどうかを認識しているため、このプロパティーによってサーキットブレーカーがインスタンス化されることもありません。 | true | Boolean |
| camel.hystrix.circuit-breaker-error-threshold-percentage | サーキットブレーカーが開いて要求を拒否するエラー率のしきい値 (50 などの整数)。circuitBreakerSleepWindowInMilliseconds で定義された期間、トリップしたままになります。これが比較されるエラーのパーセンテージは、HystrixCommandMetrics.getHealthCounts() から取得されます。 | 50 | Integer |
| camel.hystrix.circuit-breaker-force-closed | true の場合、HystrixCircuitBreaker#allowRequest() は常に true を返し、HystrixCommandMetrics.getHealthCounts() からのエラーパーセンテージに関係なくリクエストを許可します。circuitBreakerForceOpen() プロパティーが優先されるため、true に設定すると、このプロパティーは何もしません。 | false | Boolean |
| camel.hystrix.circuit-breaker-force-open | true の場合、HystrixCircuitBreaker.allowRequest() は常に false を返します。これにより、回路が開かれ (トリップされ)、すべての要求が拒否されます。このプロパティーは circuitBreakerForceClosed() よりも優先されます。 | false | Boolean |
| camel.hystrix.circuit-breaker-request-volume-threshold | HystrixCircuitBreaker が作動する前に存在しなければならない metricsRollingStatisticalWindowInMilliseconds() 内の要求の最小数。この数値を下回ると、エラーのパーセンテージに関係なく、回路はトリップしません。 | 20 | Integer |
| camel.hystrix.circuit-breaker-sleep-window-in-milliseconds | HystrixCircuitBreaker がトリップして開いてから、要求を再試行するまで待機する時間 (ミリ秒単位)。 | 5000 | Integer |
| camel.hystrix.configurations | 追加の設定定義を定義します。 | Map | |
| camel.hystrix.core-pool-size | java.util.concurrent.ThreadPoolExecutor#setCorePoolSize(int) に渡されるコアスレッドプールサイズ。 | 10 | Integer |
| camel.hystrix.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.hystrix.execution-isolation-semaphore-max-concurrent-requests | HystrixCommand.run() に許可された同時要求の数。同時制限を超えるリクエストは拒否されます。executionIsolationStrategy == SEMAPHORE の場合にのみ適用されます。 | 20 | Integer |
| camel.hystrix.execution-isolation-strategy | HystrixCommand.run() を実行する分離戦略。THREAD の場合は、別のスレッドで実行し、同時要求はスレッドプール内のスレッド数によって制限されます。SEMAPHORE の場合、呼び出しスレッドで実行し、同時要求はセマフォ数によって制限されます。 | スレッド | String |
| camel.hystrix.execution-isolation-thread-interrupt-on-timeout | スレッドがタイムアウトしたときに、実行スレッドが (Future#cancel を使用して) 割り込みを試みるかどうか。executionIsolationStrategy() == THREAD の場合にのみ適用されます。 | true | Boolean |
| camel.hystrix.execution-timeout-enabled | このコマンドのタイムアウトメカニズムを有効にするかどうか。 | true | Boolean |
| camel.hystrix.execution-timeout-in-milliseconds | コマンドがタイムアウトして実行を停止する時間 (ミリ秒単位)。executionIsolationThreadInterruptOnTimeout == true で、コマンドがスレッド分離されている場合、実行中のスレッドは中断されます。コマンドがセマフォ分離されており、HystrixObservableCommand である場合、そのコマンドはサブスクライブ解除されます。 | 1000 | Integer |
| camel.hystrix.fallback-enabled | 障害が発生したときに HystrixCommand.getFallback() を試行するかどうか。 | true | Boolean |
| camel.hystrix.fallback-isolation-semaphore-max-concurrent-requests | HystrixCommand.getFallback() に許可された同時要求の数。同時制限を超えるリクエストはフェールファストになり、フォールバックの取得は試行されません。 | 10 | Integer |
| camel.hystrix.group-key | 使用するグループキーを設定します。デフォルト値は、CamelHystrix です。 | CamelHystrix | String |
| camel.hystrix.keep-alive-time | ThreadPoolExecutor#setKeepAliveTime(long,TimeUnit) に渡されるキープアライブ時間 (分単位)。 | 1 | Integer |
| camel.hystrix.max-queue-size | HystrixConcurrencyStrategy.getBlockingQueue(int) で BlockingQueue に渡される最大キューサイズ。これは、スレッドプールのインスタンス化にのみ影響します。その場でキューサイズを変更することはできません。そのためには、queueSizeRejectionThreshold() を使用します。 | -1 | Integer |
| camel.hystrix.maximum-size | ThreadPoolExecutor#setMaximumPoolSize(int) に渡されるスレッドプールの最大サイズ。これは、HystrixCommands を拒否し始めることなくサポートできる同時実行の最大量です。この設定は、allowMaximumSizeToDivergeFromCoreSize も設定した場合にのみ有効になることに注意してください。 | 10 | Integer |
| camel.hystrix.metrics-health-snapshot-interval-in-milliseconds | 成功率とエラー率を計算し、HystrixCircuitBreaker.isOpen() ステータスに影響を与えるヘルススナップショットの取得を許可するまでの待機時間 (ミリ秒単位)。大量の回路では、エラーパーセンテージの継続的な計算によって CPU が集中的に使用される可能性があるため、これが計算の頻度を制御します。 | 500 | Integer |
| camel.hystrix.metrics-rolling-percentile-bucket-size | ローリングパーセンタイルの各バケットに格納される値の最大数。これは、HystrixCommandMetrics 内の HystrixRollingPercentile に渡されます。 | 10 | Integer |
| camel.hystrix.metrics-rolling-percentile-enabled | HystrixCommandMetrics 内の HystrixRollingPercentile を使用してパーセンタイルメトリックをキャプチャする必要があるかどうか。 | true | Boolean |
| camel.hystrix.metrics-rolling-percentile-window-buckets | ローリングパーセンテージウィンドウが分割されるバケットの数。これは、HystrixCommandMetrics 内の HystrixRollingPercentile に渡されます。 | 6 | Integer |
| camel.hystrix.metrics-rolling-percentile-window-in-milliseconds | ミリ秒単位のパーセンタイルローリングウィンドウの期間。これは、HystrixCommandMetrics 内の HystrixRollingPercentile に渡されます。 | 10000 | Integer |
| camel.hystrix.metrics-rolling-statistical-window-buckets | ローリング統計ウィンドウが分割されるバケットの数。これは、HystrixCommandMetrics 内の HystrixRollingNumber に渡されます。 | 10 | Integer |
| camel.hystrix.metrics-rolling-statistical-window-in-milliseconds | このプロパティーは、統計ローリングウィンドウの期間をミリ秒単位で設定します。スレッドプール用にメトリクスが保持される期間です。ウィンドウは、それらの増分によってバケットとロールに分割されます。 | 10000 | Integer |
| camel.hystrix.queue-size-rejection-threshold | キューサイズの拒否しきい値は、maxQueueSize に到達していない場合でも拒否できる人為的な最大キューサイズを設定します。これは、BlockingQueue の maxQueueSize を動的に変更することができず、拒否に影響するキューサイズの動的な変更をサポートするために行われます。これは、実行のためにスレッドをキューに入れるときに HystrixCommand によって使用されます。 | 5 | Integer |
| camel.hystrix.request-log-enabled | HystrixCommand の実行およびイベントを HystrixRequestLog に記録するべきかどうかを示します。 | true | Boolean |
| camel.hystrix.thread-pool-key | 使用するスレッドプールキーを設定します。デフォルトでは、groupKey が使用するように設定されているのと同じ値を使用します。 | CamelHystrix | String |
| camel.hystrix.thread-pool-rolling-number-statistical-window-buckets | ローリング統計ウィンドウが分割されるバケットの数。これは、各 HystrixThreadPoolMetrics インスタンス内の HystrixRollingNumber に渡されます。 | 10 | Integer |
| camel.hystrix.thread-pool-rolling-number-statistical-window-in-milliseconds | 統計ローリングウィンドウの期間をミリ秒単位で設定します。これは、各 HystrixThreadPoolMetrics インスタンス内の HystrixRollingNumber に渡されます。 | 10000 | Integer |
| camel.language.constant.enabled | 定数言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.constant.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.csimple.enabled | csimple 言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.csimple.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.exchangeproperty.enabled | exchangeProperty 言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.exchangeproperty.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.file.enabled | ファイル言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.file.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.header.enabled | ヘッダー言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.header.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.ref.enabled | ref 言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.ref.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.simple.enabled | 簡易言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.simple.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.tokenize.enabled | tokenize 言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.tokenize.group-delimiter | グループ化時に使用する区切り文字を設定します。これが設定されていない場合は、トークンが区切り文字として使用されます。 | String | |
| camel.language.tokenize.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.resilience4j.automatic-transition-from-open-to-half-open-enabled | waitDurationInOpenState が経過すると、OPEN から HALF_OPEN 状態への自動移行を有効にします。 | false | Boolean |
| camel.resilience4j.circuit-breaker-ref | レジストリーから検索して使用する既存の io.github.resilience4j.circuitbreaker.CircuitBreaker インスタンスを参照します。これを使用する場合、他のサーキットブレーカーオプションは使用されません。 | String | |
| camel.resilience4j.config-ref | レジストリーから検索して使用する既存の github.resilience4j.circuitbreaker.CircuitBreakerConfig インスタンスを参照します。 | String | |
| camel.resilience4j.configurations | 追加の設定定義を定義します。 | Map | |
| camel.resilience4j.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.resilience4j.failure-rate-threshold | 失敗率のしきい値をパーセンテージで設定します。失敗率がしきい値以上の場合、CircuitBreaker はオープンに移行し、コールのショートサーキットを開始します。しきい値は 0 より大きく 100 以下である必要があります。デフォルト値は 50% です。 | Float | |
| camel.resilience4j.minimum-number-of-calls | CircuitBreaker がエラー率を計算できるようになるまでに必要な (スライディングウィンドウ期間ごとの) 呼び出しの最小数を設定します。たとえば、minimumNumberOfCalls が 10 の場合、失敗率を計算するには、少なくとも 10 件の呼び出しが記録される必要があります。9 つのコールのみが記録されている場合、CircuitBreaker は 9 つのコールすべてが失敗した場合でもオープンに移行しません。デフォルトの minimumNumberOfCalls は 100 です。 | 100 | Integer |
| camel.resilience4j.permitted-number-of-calls-in-half-open-state | CircuitBreaker が半分開いているときに許可される呼び出しの数を設定します。サイズは 0 より大きくなければなりませんデフォルトのサイズは 10 です。 | 10 | Integer |
| camel.resilience4j.sliding-window-size | CircuitBreaker が閉じられたときに呼び出しの結果を記録するために使用されるスライディングウィンドウのサイズを設定します。slidingWindowSize は、スライディングウィンドウのサイズを設定します。スライディングウィンドウは、カウントベースまたは時間ベースのいずれかです。slidingWindowType が COUNT_BASED の場合、最後の slidingWindowSize 呼び出しが記録され、集計されます。slidingWindowType が TIME_BASED の場合は、最後の slidingWindowSize 秒の呼び出しが記録され、集計されます。slidingWindowSize は 0 より大きくなければなりません。minimumNumberOfCalls は 0 より大きくする必要があります。slidingWindowType が COUNT_BASED の場合、minimumNumberOfCalls を slidingWindowSize より大きくすることはできません。slidingWindowType が TIME_BASED の場合は、好きなものを選択できます。デフォルトの slidingWindowSize は 100 です。 | 100 | Integer |
| camel.resilience4j.sliding-window-type | CircuitBreaker が閉じられたときに呼び出しの結果を記録するために使用されるスライディングウィンドウのサイズを設定します。スライディングウィンドウは、カウントベースまたは時間ベースのいずれかです。slidingWindowType が COUNT_BASED の場合、最後の slidingWindowSize 呼び出しが記録され、集計されます。slidingWindowType が TIME_BASED の場合は、最後の slidingWindowSize 秒の呼び出しが記録され、集計されます。デフォルトの slidingWindowType は COUNT_BASED です。 | COUNT_BASED | String |
| camel.resilience4j.slow-call-duration-threshold | それを超えると呼び出しが低速と見なされ、低速呼び出しのパーセンテージが増加する期間のしきい値 (秒) を設定します。デフォルト値は 60 秒です。 | 60 | Integer |
| camel.resilience4j.slow-call-rate-threshold | パーセンテージでしきい値を設定します。CircuitBreaker は、呼び出し時間が slowCallDurationThreshold Duration よりも長い場合、呼び出しが遅いと見なします。失敗率がしきい値以上の場合、CircuitBreaker はオープンに移行し、ショートサーキット呼び出しを開始します。しきい値は 0 より大きく 100 以下である必要があります。デフォルト値は 100 パーセントです。これは、記録されたすべてのコールが slowCallDurationThreshold より遅くなければならないことを意味します。 | Float | |
| camel.resilience4j.wait-duration-in-open-state | ハーフオープンに切り替わる前に CircuitBreaker が開いたままになる時間を指定する待機期間 (秒単位) を設定します。デフォルト値は 60 秒です。 | 60 | Integer |
| camel.resilience4j.writable-stack-trace-enabled | 書き込み可能なスタックトレースを有効にします。false に設定すると、Exception.getStackTrace は長さゼロの配列を返します。これは、例外の原因がすでにわかっている (サーキットブレーカーが呼び出しを短絡している) ため、サーキットブレーカーが開いているときにログスパムを減らすために使用できます。 | true | Boolean |
| camel.rest.api-component | REST API として使用する Camel コンポーネントの名前 (swagger など)。API コンポーネントが明示的に設定されていない場合は、REST API ドキュメントのサービスおよび生成を担当する Camel コンポーネントがある場合、または org.apache.camel.spi.RestApiProcessorFactory がレジストリーに登録されているかどうかを調べます。いずれかが見つかった場合は、それが使用されています。 | String | |
| camel.rest.api-context-path | REST API サービスが使用する主要な API コンテキストパスを設定します。これは、デプロイされた Web アプリケーションがコンテキストパスを使用してデプロイされる camel-servlet などのコンポーネントを使用する場合に使用できます。 | String | |
| camel.rest.api-context-route-id | REST API にサービスを提供するルートに使用するルート ID を設定します。デフォルトでは、ルートは自動割り当てのルート ID を使用します。 | String | |
| camel.rest.api-host | API ドキュメント (swagger など) に特定のホスト名を使用するには、これを使用して、生成されたホストをこの設定済みホスト名でオーバーライドできます。 | String | |
| camel.rest.api-property | API ドキュメント (swagger) の追加プロパティーをできるだけ多く設定できます。たとえば、プロパティー api.title をクールスタッフに設定します。 | Map | |
| camel.rest.api-vendor-extension | Rest API でベンダー拡張機能が有効になっているかどうか。有効にすると、Camel はルート ID、クラス名などの追加情報をベンダー拡張 (x- で始まるキーなど) として含めます。API ドキュメントをインポートするときに、すべてのサードパーティー API ゲートウェイおよびツールがベンダー拡張をサポートしているわけではありません。 | false | Boolean |
| camel.rest.binding-mode | 使用するバインドモードを設定します。デフォルト値は off です。 | RestBindingMode | |
| camel.rest.client-request-validation | クライアント要求の検証を有効にして、クライアントからの Content-Type および Accept ヘッダーがその消費/生成設定の Rest-DSL 設定によってサポートされているかどうかを確認するかどうか。これをオンにして、このチェックを有効にすることができます。検証エラーの場合は、HTTP ステータスコード 415 または 406 が返されます。デフォルト値は false です。 | false | Boolean |
| camel.rest.component | netty-http、jetty、servlet、undertow などの REST トランスポート (consumer) に使用する Camel Rest コンポーネント。コンポーネントが明示的に設定されていない場合、Rest DSL と統合する Camel コンポーネントがある場合、または org.apache.camel.spi.RestConsumerFactory がレジストリーに登録されている場合、Camel はルックアップします。いずれかが見つかった場合は、それが使用されています。 | String | |
| camel.rest.component-property | 使用中の残りのコンポーネントの追加プロパティーをできるだけ多く設定できます。 | Map | |
| camel.rest.consumer-property | 使用中の残りの consumer の追加プロパティーをできるだけ多く設定できます。 | Map | |
| camel.rest.context-path | REST サービスが使用する主要なコンテキストパスを設定します。これは、デプロイされた Web アプリケーションがコンテキストパスを使用してデプロイされる camel-servlet などのコンポーネントを使用する場合に使用できます。または、HTTP サーバーを含む camel -jetty や camel-netty-http などのコンポーネントの場合。 | String | |
| camel.rest.cors-headers | カスタム CORS ヘッダーを設定できます。 | Map | |
| camel.rest.data-format-property | 使用中のデータ形式の追加プロパティーをできるだけ多く設定できます。たとえば、プロパティー prettyPrint を true に設定すると、json がプリティモードで出力されます。オプションが JSON または XML のいずれか、および IN または OUT のいずれか専用であることを示すために、プロパティーに接頭辞を付けることができます。接頭辞は、json.in.、json.out.、xml.in.、xml.out です。たとえば、値が xml.out.mustBeJAXBElement のキーは、送信用の XML データ形式専用です。接頭辞のないキーは、すべての状況で共通のキーです。 | Map | |
| camel.rest.enable-cors | HTTP 応答で CORS ヘッダーを有効にするかどうか。デフォルト値は false です。 | false | Boolean |
| camel.rest.endpoint-property | 使用中の残りのエンドポイントの追加プロパティーをできるだけ多く設定できます。 | Map | |
| camel.rest.host | REST サービスの公開に使用するホスト名。 | String | |
| camel.rest.host-name-resolver | ホスト名が明示的に設定されていない場合、このリゾルバーは、REST サービスが使用するホスト名を計算するために使用されます。 | RestHostNameResolver | |
| camel.rest.json-data-format | 使用する特定の json データ形式の名前。デフォルトでは json-jackson が使用されます。重要: このオプションは、データ形式のカスタム名を設定するためのものであり、既存のデータ形式インスタンスを参照するためのものではありません。 | String | |
| camel.rest.port | REST サービスの公開に使用するポート番号。サーブレットコンポーネントを使用する場合は、ここで設定したポート番号は適用されないことに注意してください。使用中のポート番号は、サーブレットコンポーネントが使用している実際のポート番号であるためです。たとえば、Apache Tomcat を使用する場合は Tomcat http ポート、Apache Karaf を使用する場合はデフォルトでポート 8181 を使用する Karaf の HTTP サービスなどです。このような状況では、ここでポート番号を設定すると、ツールと JMX がポート番号を認識できるようになるため、ポート番号をサーブレットエンジンが使用する番号に設定することを推奨します。 | String | |
| camel.rest.producer-api-doc | REST producer が REST uri を検証するために使用する API ドキュメント (swagger api) の場所を設定し、API ドキュメントに応じてクエリーパラメーターが有効です。これには、クラスパスに camel-swagger-java を追加する必要があり、設定に誤りがあると、Camel が起動時に失敗し、エラーが報告されます。API ドキュメントの場所はデフォルトでクラスパスから読み込まれますが、file: または http: を使用してリソースを参照し、ファイルまたは http url から読み込むことができます。 | String | |
| camel.rest.producer-component | REST producer として使用する Camel コンポーネントの名前を設定します。 | String | |
| camel.rest.scheme | REST サービスの公開に使用するスキーム。通常、http または https がサポートされます。デフォルト値は http です。 | String | |
| camel.rest.skip-binding-on-error-code | カスタム HTTP エラーコードヘッダーがある場合は、出力でバインディングをスキップするかどうか。これにより、json/xml などにバインドしないカスタムエラーメッセージを作成できます。それ以外の場合は成功メッセージが作成されます。 | false | Boolean |
| camel.rest.use-x-forward-headers | ホストおよび関連する設定に X-Forward ヘッダーを使用するかどうか。デフォルト値は true です。 | true | Boolean |
| camel.rest.xml-data-format | 使用する特定の XML データ形式の名前。デフォルトでは jaxb が使用されます。重要: このオプションは、データ形式のカスタム名を設定するためのものであり、既存のデータ形式インスタンスを参照するためのものではありません。 | String | |
| camel.rest.api-context-id-pattern | 非推奨 CamelContext ID パターンを設定して、名前がパターンに一致する CamelContext 内の REST サービスからの Rest API のみを許可します。パターン 名 は CamelContext 名を参照し、現在の CamelContext のみに一致します。その他の値の場合、パターンは PatternHelper#matchPattern (String,String) のルールを使用します。 | String | |
| camel.rest.api-context-listing | 非推奨 JVM で REST サービスを使用して使用可能なすべての CamelContext のリストを有効にするかどうかを設定します。有効にすると、これらのコンテキストを検出できます。false の場合、現在の CamelContext のみが使用されます。 | false | Boolean |
第26章 CXF リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
CXF コンポーネントは、CXF でホストされている JAX-WS サービスに接続するための Apache CXF との統合を提供します。
ストリーミングモードで CXF を使用する場合 (DataFormat オプションを参照)、ストリームキャッシングについてもお読みください。
26.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で cxf を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-cxf-soap-starter</artifactId>
</dependency>
26.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
このエンドポイントには、cxfEndpoint と someAddress の 2 つの URI 形式があります。
cxf:bean:cxfEndpoint[?options]
cxfEndpoint は、Spring Bean レジストリー内の Bean を参照する Bean ID を表します。この URI 形式では、ほとんどのエンドポイントの詳細が Bean 定義で指定されます。
cxf://someAddress[?options]
someAddress は、CXF エンドポイントのアドレスを指定します。この URI 形式では、ほとんどのエンドポイントの詳細がオプションを使用して指定されます。
上記のどちらのスタイルでも、次のように URI にオプションを追加できます。
cxf:bean:cxfEndpoint?wsdlURL=wsdl/hello_world.wsdl&dataFormat=PAYLOAD
26.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
26.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
26.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
26.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
CXF コンポーネントは、以下に示す 6 つのオプションをサポートしています。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| allowStreaming (advanced) | このオプションは、CXF コンポーネントが PAYLOAD モードで実行されている場合に、着信メッセージを DOM 解析して DOM 要素にするか、場合によってはストリーミングを許可する javax.xml.transform.Source オブジェクトとしてペイロードを保持するかを制御します。 | Boolean | |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| headerFilterStrategy (filter) | カスタムの org.apache.camel.spi.HeaderFilterStrategy を使用して、Camel メッセージとの間でヘッダーをフィルターします。 | HeaderFilterStrategy | |
| useGlobalSslContextParameters (security) | グローバル SSL コンテキストパラメーターの使用を有効にします。 | false | boolean |
26.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
CXF エンドポイントは、URI 構文を使用して設定されます。
cxf:beanId:address
パスおよびクエリーパラメーターを使用します。
26.5.1. パスパラメーター (2 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| beanId (common) | 既存の設定済み CxfEndpoint を検索するには。bean: を接頭辞として使用する必要があります。 | String | |
| 住所 (サービス) | サービス公開アドレス。 | String |
26.5.2. クエリーパラメーター (35 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| dataFormat (common) | CXF エンドポイントでサポートされるデータタイプメッセージ。 列挙値:
| POJO | DataFormat |
| wrappedStyle (common) | パラメーターが SOAP 本文でどのように表現されるかを記述する WSDL スタイル。値が false の場合、CXF は document-literal のラップされていないスタイルを選択します。値が true の場合、CXF は document-literal のラップされたスタイルを選択します。 | Boolean | |
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| exceptionHandler (consumer (advanced)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (advanced)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| cookieHandler (producer) | HTTP セッションを維持するように Cookie ハンドラーを設定します。 | CookieHandler | |
| defaultOperationName (producer) | このオプションは、リモートサービスを呼び出す CxfProducer によって使用されるデフォルトの operationName を設定します。 | String | |
| defaultOperationNamespace (producer) | このオプションは、リモートサービスを呼び出す CxfProducer によって使用されるデフォルトの operationNamespace を設定します。 | String | |
| hostnameVerifier (producer) | 使用するホスト名ベリファイア。# 表記を使用して、レジストリーから HostnameVerifier を参照します。 | HostnameVerifier | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| sslContextParameters (producer) | Camel SSL 設定リファレンス。# 表記を使用して、SSL コンテキストを参照します。 | SSLContextParameters | |
| ラップ (producer) | CXF エンドポイント producer が呼び出す操作の種類。 | false | boolean |
| synchronous (producer (advanced)) | 同期処理を厳密に使用するかどうかを設定します。 | false | boolean |
| allowStreaming (advanced) | このオプションは、CXF コンポーネントが PAYLOAD モードで実行されている場合に、着信メッセージを DOM 解析して DOM 要素にするか、場合によってはストリーミングを許可する javax.xml.transform.Source オブジェクトとしてペイロードを保持するかを制御します。 | Boolean | |
| bus (advanced) | カスタム設定の CXF バスを使用するには。 | バス | |
| continuationTimeout (advanced) | このオプションは、CXF サーバーが Jetty またはサーブレットトランスポートを使用している場合にデフォルトで CxfConsumer で使用できる CXF 継続タイムアウトを設定するために使用されます。 | 30000 | long |
| cxfBinding (advanced) | カスタム CxfBinding を使用して、Camel メッセージと CXF メッセージ間のバインディングを制御します。 | CxfBinding | |
| cxfConfigurer (advanced) | このオプションは、プログラムによる方法での CXF エンドポイントの設定をサポートする org.apache.camel.component.cxf.CxfEndpointConfigurer の実装を適用できます。ユーザーは、CxfEndpointConfigurer の configure{ServerClient} メソッドを実装することで、CXF サーバーとクライアントを設定できます。 | CxfConfigurer | |
| defaultBus (advanced) | CXF エンドポイントが独自にバスを作成するときに、デフォルトのバスを設定します。 | false | boolean |
| headerFilterStrategy (advanced) | カスタムの HeaderFilterStrategy を使用して、Camel メッセージとの間でヘッダーをフィルタリングします。 | HeaderFilterStrategy | |
| mergeProtocolHeaders (advanced) | プロトコルヘッダーをマージするかどうか。有効にすると、Camel と CXF の間でヘッダーを伝播する際の一貫性と類似性が高まります。詳細は、CAMEL-6393 を参照してください。 | false | boolean |
| mtomEnabled (advanced) | MTOM (添付ファイル) を有効にします。これには、POJO または PAYLOAD データ形式モードを使用する必要があります。 | false | boolean |
| properties (advanced) | マップのキーと値のペアを使用して、追加の CXF オプションを設定します。たとえば、SOAP 障害でスタックトレースを有効にするには、properties.faultStackTraceEnabled=true とします。 | Map | |
| skipPayloadMessagePartCheck (advanced) | SOAP メッセージの検証を無効にするかどうかを設定します。 | false | boolean |
| loggingFeatureEnabled (logging) | このオプションは、インバウンドおよびアウトバウンドの SOAP メッセージをログに書き込む CXF ログ機能を有効にします。 | false | boolean |
| loggingSizeLimit (logging) | ロギング機能が有効になっているときにロガーが出力するバイト数の合計サイズを制限するには、制限なしの場合は -1 を指定します。 | 49152 | int |
| skipFaultLogging (ロギング) | このオプションは、PhaseInterceptorChain がキャッチした Fault のログ記録をスキップするかどうかを制御します。 | false | boolean |
| password (security) | このオプションは、CXF クライアントのパスワードの基本認証情報を設定するために使用されます。 | String | |
| username (security) | このオプションは、CXF クライアントのユーザー名の基本認証情報を設定するために使用されます。 | String | |
| bindingId (service) | 使用するサービスモデルの bindingId。 | String | |
| portName (サービス) | このサービスが実装しているエンドポイント名で、wsdl:portname にマップされます。ns:PORT_NAME の形式で、ns はこのスコープで有効な名前空間接頭辞です。 | String | |
| publishedEndpointUrl (service) | このオプションは、サービスアドレス URL と wsd でアクセスできる WSDL から発行された endpointUrl をオーバーライドできます。 | String | |
| serviceClass (サービス) | JSR181 アノテーションを持つかどうかにかかわらず、SEI (Service Endpoint Interface) クラスのクラス名。 | クラス | |
| serviceName (サービス) | このサービスが実装しているサービス名で、wsdl:servicename にマップされます。 | String | |
| wsdlURL (サービス) | WSDL のロケーション。クラスパス、ファイルシステム、またはリモートでホストできます。 | String |
serviceName と portName は QNames であるため、これらを指定する場合は、上記の例に示すように {namespace} を前に付けてください。
26.5.3. データ形式の説明 リンクのコピーリンクがクリップボードにコピーされました!
Apache Camel では、Camel CXF コンポーネントがルートを Web サービスと統合するための鍵となります。Camel CXF コンポーネントを使用して、次のいずれかの方法で使用できる CXF エンドポイントを作成できます。
- consumer — (ルートの開始時) は、ルートと統合される Web サービスインスタンスを表します。ルートに挿入されるペイロードのタイプは、エンドポイントの dataFormat オプションの値によって異なります。
- producer — (ルートの他のポイントで) WS クライアントプロキシーを表し、現在の交換オブジェクトをリモート Web サービスでの操作呼び出しに変換します。現在の交換の形式は、エンドポイントの dataFormat 設定と一致する必要があります。
| DataFormat | 説明 |
|---|---|
|
| POJO (Plain old Java objects) は、ターゲットサーバーで呼び出されるメソッドへの Java パラメーターです。プロトコル JAX-WS ハンドラーと論理 JAX-WS ハンドラーの両方がサポートされています。 |
|
|
|
|
|
|
|
|
|
交換プロパティー CamelCXFDataFormat を取得することで、交換のデータ形式モードを判別できます。交換キー定数は org.apache.camel.component.cxf.common.message.CxfConstants.DATA_FORMAT_PROPERTY で定義されています。
26.5.4. CXF の LoggingOutInterceptor を RAW モードで有効にする方法 リンクのコピーリンクがクリップボードにコピーされました!
CXF の LoggingOutInterceptor は、ロギングシステム (Java Util Logging) に送信されるアウトバウンドメッセージを出力します。LoggingOutInterceptor は PRE_STREAM フェーズにあるため (ただし、PRE_STREAM フェーズは RAW モードでは削除されます)、WRITE フェーズ中に実行されるように LoggingOutInterceptor を設定する必要があります。以下に例を示します。
@Bean
public CxfEndpoint serviceEndpoint(LoggingOutInterceptor loggingOutInterceptor) {
CxfSpringEndpoint cxfEndpoint = new CxfSpringEndpoint();
cxfEndpoint.setAddress("http://localhost:" + port
+ "/services" + SERVICE_ADDRESS);
cxfEndpoint.setServiceClass(org.apache.camel.component.cxf.HelloService.class);
Map<String, Object> properties = new HashMap<String, Object>();
properties.put("dataFormat", "RAW");
cxfEndpoint.setProperties(properties);
cxfEndpoint.getOutInterceptors().add(loggingOutInterceptor);
return cxfEndpoint;
}
@Bean
public LoggingOutInterceptor loggingOutInterceptor() {
LoggingOutInterceptor logger = new LoggingOutInterceptor("write");
return logger;
}
26.5.5. relayHeaders オプションの説明 リンクのコピーリンクがクリップボードにコピーされました!
JAXWS WSDL ファーストの開発者の観点から見ると、帯域内 ヘッダーと 帯域外 ヘッダーがあります。
インバンド ヘッダーは、SOAP ヘッダーなどのエンドポイントの WSDL バインディングコントラクトの一部として明示的に定義されるヘッダーです。
アウトオブバンド ヘッダーは、ネットワーク経由でシリアル化されるヘッダーですが、明示的に WSDL バインディングコントラクトの一部ではありません。
ヘッダーの中継/フィルタリングは双方向です。
ルートに CXF エンドポイントがあり、開発者が SOAP ヘッダーなどのオンザワイヤヘッダーをルートに沿ってリレーして、たとえば別の JAXWS エンドポイントで消費する必要がある場合、relayHeaders を true に設定する必要があります。デフォルト値。
26.5.6. POJO モードでのみ使用可能 リンクのコピーリンクがクリップボードにコピーされました!
relayHeaders=true は、ヘッダーをリレーする意図を表します。特定のヘッダーが中継されるかどうかの実際の決定は、MessageHeadersRelay インターフェイスを実装するプラグ可能なインスタンスに委譲されます。MessageHeadersRelay の具体的な実装を調べて、ヘッダーを中継する必要があるかどうかを判断します。既知の SOAP 名前空間にバインドする SoapMessageHeadersRelay の実装がすでにあります。現在、帯域外ヘッダーのみがフィルタリングされ、relayHeaders=true の場合、帯域内ヘッダーは常に中継されます。ネームスペースがランタイムに不明なヘッダーがワイヤ上にある場合、フォールバック DefaultMessageHeadersRelay が使用されます。これにより、すべてのヘッダーの中継が単純に許可されます。
relayHeaders=false 設定は、帯域内および帯域外のすべてのヘッダーをドロップする必要があることを指定します。
独自の MessageHeadersRelay 実装をプラグインして、リレーのリストをオーバーライドまたは追加することができます。プリロードされたリレーインスタンスをオーバーライドするには、MessageHeadersRelay 実装がオーバーライドしようとしている名前空間と同じ名前空間を提供していることを確認してください。また、オーバーライドするリレーは、オーバーライドしようとしているすべての名前空間にサービスを提供する必要があることに注意してください。そうしないと、インスタンスマッピングをリレーする名前空間にあいまいさが生じるため、ルートの起動時に実行時例外が出力されます。
<cxf:cxfEndpoint ...>
<cxf:properties>
<entry key="org.apache.camel.cxf.message.headers.relays">
<list>
<ref bean="customHeadersRelay"/>
</list>
</entry>
</cxf:properties>
</cxf:cxfEndpoint>
<bean id="customHeadersRelay" class="org.apache.camel.component.cxf.soap.headers.CustomHeadersRelay"/>
ここでヘッダーをリレー/ドロップする方法を示すテストを見てください。
-
POJOおよびPAYLOADモードがサポートされています。POJOモードでは、CXF によってインバンドヘッダーが処理され、ヘッダーリストから削除されているため、フィルタリングに使用できるのはアウトオブバンドメッセージヘッダーのみです。インバンドヘッダーは、POJO モードでMessageContentListに組み込まれます。camel-cxfコンポーネントは、インバンドヘッダーをMessageContentListから削除しようとします。インバンドヘッダーのフィルタリングが必要な場合は、PAYLOADモードを使用するか、(非常に簡単な) CXF インターセプター/JAXWS ハンドラーを CXF エンドポイントにプラグインしてください。 -
メッセージヘッダーリレーメカニズムは
CxfHeaderFilterStrategyにマージされました。relayHeadersオプション、そのセマンティクス、およびデフォルト値は同じままですが、CxfHeaderFilterStrategyのプロパティーです。以下はその設定例です。
@Bean
public HeaderFilterStrategy dropAllMessageHeadersStrategy() {
CxfHeaderFilterStrategy headerFilterStrategy = new CxfHeaderFilterStrategy();
headerFilterStrategy.setRelayHeaders(false);
return headerFilterStrategy;
}
その後、エンドポイントは CxfHeaderFilterStrategy を参照できます。
@Bean
public CxfEndpoint routerNoRelayEndpoint(HeaderFilterStrategy dropAllMessageHeadersStrategy) {
CxfSpringEndpoint cxfEndpoint = new CxfSpringEndpoint();
cxfEndpoint.setServiceClass(org.apache.camel.component.cxf.soap.headers.HeaderTester.class);
cxfEndpoint.setAddress("/CxfMessageHeadersRelayTest/HeaderService/routerNoRelayEndpoint");
cxfEndpoint.setWsdlURL("soap_header.wsdl");
cxfEndpoint.setEndpointNameAsQName(
QName.valueOf("{http://apache.org/camel/component/cxf/soap/headers}SoapPortNoRelay"));
cxfEndpoint.setServiceNameAsQName(SERVICENAME);
Map<String, Object> properties = new HashMap<String, Object>();
properties.put("dataFormat", "PAYLOAD");
cxfEndpoint.setProperties(properties);
cxfEndpoint.setHeaderFilterStrategy(dropAllMessageHeadersStrategy);
return cxfEndpoint;
}
@Bean
public CxfEndpoint serviceNoRelayEndpoint(HeaderFilterStrategy dropAllMessageHeadersStrategy) {
CxfSpringEndpoint cxfEndpoint = new CxfSpringEndpoint();
cxfEndpoint.setServiceClass(org.apache.camel.component.cxf.soap.headers.HeaderTester.class);
cxfEndpoint.setAddress("http://localhost:" + port + "/services/CxfMessageHeadersRelayTest/HeaderService/routerNoRelayEndpointBackend");
cxfEndpoint.setWsdlURL("soap_header.wsdl");
cxfEndpoint.setEndpointNameAsQName(
QName.valueOf("{http://apache.org/camel/component/cxf/soap/headers}SoapPortNoRelay"));
cxfEndpoint.setServiceNameAsQName(SERVICENAME);
Map<String, Object> properties = new HashMap<String, Object>();
properties.put("dataFormat", "PAYLOAD");
cxfEndpoint.setProperties(properties);
cxfEndpoint.setHeaderFilterStrategy(dropAllMessageHeadersStrategy);
return cxfEndpoint;
}
次に、ルートを次のように設定します。
rom("cxf:bean:routerNoRelayEndpoint")
.to("cxf:bean:serviceNoRelayEndpoint");
-
MessageHeadersRelayインターフェイスがわずかに変更され、名前がMessageHeaderFilterに変更されました。CxfHeaderFilterStrategyのプロパティーです。ユーザー定義のメッセージヘッダーフィルターを設定する例を次に示します。
@Bean
public HeaderFilterStrategy customMessageFilterStrategy() {
CxfHeaderFilterStrategy headerFilterStrategy = new CxfHeaderFilterStrategy();
List<MessageHeaderFilter> headerFilterList = new ArrayList<MessageHeaderFilter>();
headerFilterList.add(new SoapMessageHeaderFilter());
headerFilterList.add(new CustomHeaderFilter());
headerFilterStrategy.setMessageHeaderFilters(headerFilterList);
return headerFilterStrategy;
}
-
relayHeadersに加えて、次のプロパティーをCxfHeaderFilterStrategyで設定できます。
| 名前 | 必須 | 説明 |
|---|---|---|
|
| いいえ |
すべてのメッセージヘッダーは、メッセージヘッダーフィルターによって処理されます タイプ: |
|
| いいえ |
すべてのメッセージヘッダーが伝達されます (メッセージヘッダーフィルターによる処理なし) タイプ: |
|
| いいえ |
アクティベーション名前空間で 2 つのフィルターが重複する場合、プロパティーはその処理方法を制御します。値が |
26.6. Spring で CXF エンドポイントを設定する リンクのコピーリンクがクリップボードにコピーされました!
以下に示す Spring 設定ファイルを使用して CXF エンドポイントを設定できます。また、エンドポイントを camelContext タグに埋め込むこともできます。サービスエンドポイントを呼び出すときに、operationName ヘッダーと operationNamespace ヘッダーを設定して、呼び出す操作を明示的に指定できます。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cxf="http://camel.apache.org/schema/cxf/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://camel.apache.org/schema/cxf/jaxws http://camel.apache.org/schema/cxf/jaxws/camel-cxf.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
<cxf:cxfEndpoint id="routerEndpoint" address="http://localhost:9003/CamelContext/RouterPort"
serviceClass="org.apache.hello_world_soap_http.GreeterImpl"/>
<cxf:cxfEndpoint id="serviceEndpoint" address="http://localhost:9000/SoapContext/SoapPort"
wsdlURL="testutils/hello_world.wsdl"
serviceClass="org.apache.hello_world_soap_http.Greeter"
endpointName="s:SoapPort"
serviceName="s:SOAPService"
xmlns:s="http://apache.org/hello_world_soap_http" />
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="cxf:bean:routerEndpoint" />
<to uri="cxf:bean:serviceEndpoint" />
</route>
</camelContext>
</beans>
ルート Bean 要素で指定された JAX-WS schemaLocation 属性を必ず含めてください。これにより、CXF はファイルを検証できるようになります。これは必須です。<cxf:cxfEndpoint/> タグの末尾にある名前空間の宣言にも注意してください。結合された {namespace}localName 構文は現在、このタグの属性値に対してサポートされていないため、これらの宣言が必要です。
cxf:cxfEndpoint 要素は、多くの追加属性をサポートしています。
| 名前 | 値 |
|---|---|
|
|
このサービスが実装しているエンドポイント名で、 |
|
|
このサービスが実装しているサービス名で、 |
|
| WSDL のロケーション。クラスパス、ファイルシステム、またはリモートでホストできます。 |
|
|
使用するサービスモデルの |
|
| サービス公開アドレス。 |
|
| JAX-WS エンドポイントで使用されるバス名。 |
|
| JSR181 アノテーションを持つかどうかにかかわらず、SEI (Service Endpoint Interface) クラスのクラス名。 |
また、多くの子要素もサポートしています。
| 名前 | 値 |
|---|---|
|
|
このエンドポイントの着信インターセプター。 |
|
|
このエンドポイントの着信障害インターセプター。 |
|
|
このエンドポイントの発信インターセプター。 |
|
|
このエンドポイントの送信障害インターセプター。 |
|
| JAX-WS エンドポイントに提供する必要があるプロパティーマップ。以下を参照してください。 |
|
| JAX-WS エンドポイントに提供する必要がある JAX-WS ハンドラーリスト。以下を参照してください。 |
|
|
エンドポイントで使用する |
|
|
このエンドポイントが使用する |
|
| このエンドポイントのインターセプターを保持する機能。Bean または参照のリスト |
|
| エンドポイントが使用するスキーマの場所。schemaLocations のリスト |
|
|
このエンドポイントが使用するサービスファクトリー。これは、Spring |
CXF JAX-WS 設定ページ で、インターセプター、プロパティー、およびハンドラーを提供する方法を示すより高度な例を見つけることができます。
cxf:properties を使用して、Spring 設定ファイルから camel-cxf エンドポイントの dataFormat および setDefaultBus プロパティーを設定できます。
<cxf:cxfEndpoint id="testEndpoint" address="http://localhost:9000/router"
serviceClass="org.apache.camel.component.cxf.HelloService"
endpointName="s:PortName"
serviceName="s:ServiceName"
xmlns:s="http://www.example.com/test">
<cxf:properties>
<entry key="dataFormat" value="RAW"/>
<entry key="setDefaultBus" value="true"/>
</cxf:properties>
</cxf:cxfEndpoint>
SpringBoot では、Spring XML ファイルを使用して camel-cxf を設定し、次の例のようなコードを使用して XML 設定 Bean を作成できます。
@ImportResource({
"classpath:spring-configuration.xml"
})
ただし、SpringBoot では、(他の例で示されているように) Java コードで設定された Bean を使用するのがベストプラクティスです。
26.7. camel-cxf コンポーネントで java.util.logging の代わりに log4j を使用する方法 リンクのコピーリンクがクリップボードにコピーされました!
CXF のデフォルトのロガーは java.util.logging です。log4j に変更する場合は、次の手順を実行します。クラスパスに META-INF/cxf/org.apache.cxf.logger という名前のファイルを作成します。このファイルには、クラスの完全修飾名 org.apache.cxf.common.logging.Log4jLogger がコメントなしで 1 行に含まれている必要があります。
26.8. camel-cxf のレスポンスを xml 処理命令で開始させる方法 リンクのコピーリンクがクリップボードにコピーされました!
PHP などの SOAP クライアントを使用している場合、CXF は XML 処理命令 <?xml version="1.0" encoding="utf-8"?> を追加しないため、この種のエラーが発生します。
Error:sendSms: SoapFault exception: [Client] looks like we got no XML document in [...]
この問題を解決するには、以下の WriteXmlDeclarationInterceptor のように、StaxOutInterceptor に XML 開始ドキュメントを書き込むように指示します。
public class WriteXmlDeclarationInterceptor extends AbstractPhaseInterceptor<SoapMessage> {
public WriteXmlDeclarationInterceptor() {
super(Phase.PRE_STREAM);
addBefore(StaxOutInterceptor.class.getName());
}
public void handleMessage(SoapMessage message) throws Fault {
message.put("org.apache.cxf.stax.force-start-document", Boolean.TRUE);
}
}
別の方法として、CxfConsumerTest で示されているように、メッセージヘッダーを追加できます。
// set up the response context which force start document
Map<String, Object> map = new HashMap<String, Object>();
map.put("org.apache.cxf.stax.force-start-document", Boolean.TRUE);
exchange.getOut().setHeader(Client.RESPONSE_CONTEXT, map);
26.9. メッセージヘッダーから CXF producer アドレスを上書きする方法 リンクのコピーリンクがクリップボードにコピーされました!
camel-cxf producer は、メッセージヘッダー CamelDestinationOverrideUrl を設定することで、ターゲットサービスアドレスのオーバーライドをサポートします。
// set up the service address from the message header to override the setting of CXF endpoint
exchange.getIn().setHeader(Exchange.DESTINATION_OVERRIDE_URL, constant(getServiceAddress()));
26.10. POJO データ形式の camel-cxf エンドポイントからのメッセージを使用する方法 リンクのコピーリンクがクリップボードにコピーされました!
camel-cxf エンドポイント consumer POJO データ形式は CXF インボーカー に基づいているため、メッセージヘッダーには CxfConstants.OPERATION_NAME という名前のプロパティーがあり、メッセージ本文は SEI メソッドパラメーターのリストです。
PersonProcessor のサンプルコードを考えてみましょう。
public class PersonProcessor implements Processor {
private static final Logger LOG = LoggerFactory.getLogger(PersonProcessor.class);
@Override
@SuppressWarnings("unchecked")
public void process(Exchange exchange) throws Exception {
LOG.info("processing exchange in camel");
BindingOperationInfo boi = (BindingOperationInfo) exchange.getProperty(BindingOperationInfo.class.getName());
if (boi != null) {
LOG.info("boi.isUnwrapped" + boi.isUnwrapped());
}
// Get the parameters list which element is the holder.
MessageContentsList msgList = (MessageContentsList) exchange.getIn().getBody();
Holder<String> personId = (Holder<String>) msgList.get(0);
Holder<String> ssn = (Holder<String>) msgList.get(1);
Holder<String> name = (Holder<String>) msgList.get(2);
if (personId.value == null || personId.value.length() == 0) {
LOG.info("person id 123, so throwing exception");
// Try to throw out the soap fault message
org.apache.camel.wsdl_first.types.UnknownPersonFault personFault
= new org.apache.camel.wsdl_first.types.UnknownPersonFault();
personFault.setPersonId("");
org.apache.camel.wsdl_first.UnknownPersonFault fault
= new org.apache.camel.wsdl_first.UnknownPersonFault("Get the null value of person name", personFault);
exchange.getMessage().setBody(fault);
return;
}
name.value = "Bonjour";
ssn.value = "123";
LOG.info("setting Bonjour as the response");
// Set the response message, first element is the return value of the operation,
// the others are the holders of method parameters
exchange.getMessage().setBody(new Object[] { null, personId, ssn, name });
}
}
26.11. POJO データ形式で camel-cxf エンドポイントのメッセージを準備する方法 リンクのコピーリンクがクリップボードにコピーされました!
camel-cxf エンドポイント producer は、CXF client API に基づいています。まず、メッセージヘッダーでオペレーション名を指定し、次にメソッドパラメーターをリストに追加し、このパラメーターリストでメッセージを初期化する必要があります。応答メッセージの本文は messageContentsList であり、そのリストから結果を取得できます。
メッセージヘッダーで操作名を指定しない場合、CxfProducer は CxfEndpoint から defaultOperationName を使用しようとします。CxfEndpoint に defaultOperationName が設定されていない場合、操作リストから最初の operationName を取得します。
メッセージ本文からオブジェクト配列を取得する場合は、CxfProducerRouterTest.testInvokingSimpleServerWithParams に示すように、message.getBody(Object[].class) を使用して本文を取得できます。
Exchange senderExchange = new DefaultExchange(context, ExchangePattern.InOut);
final List<String> params = new ArrayList<>();
// Prepare the request message for the camel-cxf procedure
params.add(TEST_MESSAGE);
senderExchange.getIn().setBody(params);
senderExchange.getIn().setHeader(CxfConstants.OPERATION_NAME, ECHO_OPERATION);
Exchange exchange = template.send("direct:EndpointA", senderExchange);
org.apache.camel.Message out = exchange.getMessage();
// The response message's body is an MessageContentsList which first element is the return value of the operation,
// If there are some holder parameters, the holder parameter will be filled in the reset of List.
// The result will be extract from the MessageContentsList with the String class type
MessageContentsList result = (MessageContentsList) out.getBody();
LOG.info("Received output text: " + result.get(0));
Map<String, Object> responseContext = CastUtils.cast((Map<?, ?>) out.getHeader(Client.RESPONSE_CONTEXT));
assertNotNull(responseContext);
assertEquals("UTF-8", responseContext.get(org.apache.cxf.message.Message.ENCODING),
"We should get the response context here");
assertEquals("echo " + TEST_MESSAGE, result.get(0), "Reply body on Camel is wrong");
26.12. PAYLOAD データ形式の camel-cxf エンドポイントのメッセージを処理する方法 リンクのコピーリンクがクリップボードにコピーされました!
PAYLOAD は、SOAP エンベロープからのペイロードをネイティブ CxfPayload として処理することを意味します。Message.getBody () は org.apache.camel.component.cxf.CxfPayload オブジェクトを、SOAP メッセージヘッダーと SOAP 本文のゲッターと共に返します。
CxfConsumerPayloadTest を参照してください:
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
from(simpleEndpointURI + "&dataFormat=PAYLOAD").to("log:info").process(new Processor() {
@SuppressWarnings("unchecked")
public void process(final Exchange exchange) throws Exception {
CxfPayload<SoapHeader> requestPayload = exchange.getIn().getBody(CxfPayload.class);
List<Source> inElements = requestPayload.getBodySources();
List<Source> outElements = new ArrayList<>();
// You can use a customer toStringConverter to turn a CxfPayLoad message into String as you want
String request = exchange.getIn().getBody(String.class);
XmlConverter converter = new XmlConverter();
String documentString = ECHO_RESPONSE;
Element in = new XmlConverter().toDOMElement(inElements.get(0));
// Just check the element namespace
if (!in.getNamespaceURI().equals(ELEMENT_NAMESPACE)) {
throw new IllegalArgumentException("Wrong element namespace");
}
if (in.getLocalName().equals("echoBoolean")) {
documentString = ECHO_BOOLEAN_RESPONSE;
checkRequest("ECHO_BOOLEAN_REQUEST", request);
} else {
documentString = ECHO_RESPONSE;
checkRequest("ECHO_REQUEST", request);
}
Document outDocument = converter.toDOMDocument(documentString, exchange);
outElements.add(new DOMSource(outDocument.getDocumentElement()));
// set the payload header with null
CxfPayload<SoapHeader> responsePayload = new CxfPayload<>(null, outElements, null);
exchange.getMessage().setBody(responsePayload);
}
});
}
};
}
26.13. POJO モードで SOAP ヘッダーを取得および設定する方法 リンクのコピーリンクがクリップボードにコピーされました!
POJO は、camel-cxf エンドポイントが Camel 交換を生成または消費するときのデータ形式が "Java オブジェクトのリスト" であることを意味します。Camel はこのモードでメッセージ本文を POJO として公開しますが、camel-cxf は引き続き SOAP ヘッダーを読み書きするためのアクセスを提供します。ただし、CXF インターセプターはインバンド SOAP ヘッダーを処理後にヘッダーリストから削除するため、POJO モードの camel-cxf ではアウトオブバンド SOAP ヘッダーのみを使用できます。
次の例は、SOAP ヘッダーを取得/設定する方法を示しています。ある Camel-cxf エンドポイントから別のエンドポイントに転送するルートがあるとします。つまり、SOAP クライアント → Camel → CXF サービスです。2 つのプロセッサーを接続して、(1) 要求が CXF サービスに送信される前と (2) 応答が SOAP クライアントに返される前に、SOAP ヘッダーを取得/挿入できます。この例のプロセッサー (1) と (2) は、InsertRequestOutHeaderProcessor と InsertResponseOutHeaderProcessor です。ルートは次のようになります。
from("cxf:bean:routerRelayEndpointWithInsertion")
.process(new InsertRequestOutHeaderProcessor())
.to("cxf:bean:serviceRelayEndpointWithInsertion")
.process(new InsertResponseOutHeaderProcessor());
Bean routerRelayEndpointWithInsertion および serviceRelayEndpointWithInsertion は次のように定義されます。
@Bean
public CxfEndpoint routerRelayEndpointWithInsertion() {
CxfSpringEndpoint cxfEndpoint = new CxfSpringEndpoint();
cxfEndpoint.setServiceClass(org.apache.camel.component.cxf.soap.headers.HeaderTester.class);
cxfEndpoint.setAddress("/CxfMessageHeadersRelayTest/HeaderService/routerRelayEndpointWithInsertion");
cxfEndpoint.setWsdlURL("soap_header.wsdl");
cxfEndpoint.setEndpointNameAsQName(
QName.valueOf("{http://apache.org/camel/component/cxf/soap/headers}SoapPortRelayWithInsertion"));
cxfEndpoint.setServiceNameAsQName(SERVICENAME);
cxfEndpoint.getFeatures().add(new LoggingFeature());
return cxfEndpoint;
}
@Bean
public CxfEndpoint serviceRelayEndpointWithInsertion() {
CxfSpringEndpoint cxfEndpoint = new CxfSpringEndpoint();
cxfEndpoint.setServiceClass(org.apache.camel.component.cxf.soap.headers.HeaderTester.class);
cxfEndpoint.setAddress("http://localhost:" + port + "/services/CxfMessageHeadersRelayTest/HeaderService/routerRelayEndpointWithInsertionBackend");
cxfEndpoint.setWsdlURL("soap_header.wsdl");
cxfEndpoint.setEndpointNameAsQName(
QName.valueOf("{http://apache.org/camel/component/cxf/soap/headers}SoapPortRelayWithInsertion"));
cxfEndpoint.setServiceNameAsQName(SERVICENAME);
cxfEndpoint.getFeatures().add(new LoggingFeature());
return cxfEndpoint;
}
SOAP ヘッダーは、Camel メッセージヘッダーとの間で伝達されます。Camel メッセージヘッダー名は、CXF (org.apache.cxf.headers.Header.HEADER_LIST) で定義されている定数である "org.apache.cxf.headers.Header.list" です。ヘッダー値は、CXF SoapHeader オブジェクト (org.apache.cxf.binding.soap.SoapHeader) のリストです。次のスニペットは、InsertResponseOutHeaderProcessor (応答メッセージに新しい SOAP ヘッダーを挿入する) です。InsertResponseOutHeaderProcessor と InsertRequestOutHeaderProcessor の両方で SOAP ヘッダーにアクセスする方法は、実際には同じです。2 つのプロセッサーの唯一の違いは、挿入される SOAP ヘッダーの方向を設定することです。
InsertResponseOutHeaderProcessor の例は CxfMessageHeadersRelayTest にあります。
public static class InsertResponseOutHeaderProcessor implements Processor {
public void process(Exchange exchange) throws Exception {
List<SoapHeader> soapHeaders = CastUtils.cast((List<?>)exchange.getIn().getHeader(Header.HEADER_LIST));
// Insert a new header
String xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?><outofbandHeader "
+ "xmlns=\"http://cxf.apache.org/outofband/Header\" hdrAttribute=\"testHdrAttribute\" "
+ "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" soap:mustUnderstand=\"1\">"
+ "<name>New_testOobHeader</name><value>New_testOobHeaderValue</value></outofbandHeader>";
SoapHeader newHeader = new SoapHeader(soapHeaders.get(0).getName(),
DOMUtils.readXml(new StringReader(xml)).getDocumentElement());
// make sure direction is OUT since it is a response message.
newHeader.setDirection(Direction.DIRECTION_OUT);
//newHeader.setMustUnderstand(false);
soapHeaders.add(newHeader);
}
}
26.14. PAYLOAD モードで SOAP ヘッダーを取得および設定する方法 リンクのコピーリンクがクリップボードにコピーされました!
PAYLOAD モードで CxfPayload オブジェクトとして SOAP メッセージにアクセスする方法は、PAYLOAD データ形式で camel-cxf エンドポイントのメッセージを処理する方法 セクションですでに説明しました。
CxfPayload オブジェクトを取得したら、DOM 要素 (SOAP ヘッダー) のリストを返す CxfPayload.getHeaders () メソッドを呼び出すことができます。
例は、CxfPayLoadSoapHeaderTest を参照してください。
from(getRouterEndpointURI()).process(new Processor() {
@SuppressWarnings("unchecked")
public void process(Exchange exchange) throws Exception {
CxfPayload<SoapHeader> payload = exchange.getIn().getBody(CxfPayload.class);
List<Source> elements = payload.getBodySources();
assertNotNull(elements, "We should get the elements here");
assertEquals(1, elements.size(), "Get the wrong elements size");
Element el = new XmlConverter().toDOMElement(elements.get(0));
elements.set(0, new DOMSource(el));
assertEquals("http://camel.apache.org/pizza/types",
el.getNamespaceURI(), "Get the wrong namespace URI");
List<SoapHeader> headers = payload.getHeaders();
assertNotNull(headers, "We should get the headers here");
assertEquals(1, headers.size(), "Get the wrong headers size");
assertEquals("http://camel.apache.org/pizza/types",
((Element) (headers.get(0).getObject())).getNamespaceURI(), "Get the wrong namespace URI");
// alternatively you can also get the SOAP header via the camel header:
headers = exchange.getIn().getHeader(Header.HEADER_LIST, List.class);
assertNotNull(headers, "We should get the headers here");
assertEquals(1, headers.size(), "Get the wrong headers size");
assertEquals("http://camel.apache.org/pizza/types",
((Element) (headers.get(0).getObject())).getNamespaceURI(), "Get the wrong namespace URI");
}
})
.to(getServiceEndpointURI());
サブチャプター "POJO モードで SOAP ヘッダーを取得および設定する方法" で説明されているのと同じ方法を使用して、SOAP ヘッダーを設定または取得することもできます。したがって、ヘッダー "org.apache.cxf.headers.Header.list" を使用して、SOAP ヘッダーのリストを取得および設定できます。これは、ある Camel-cxf エンドポイントから別のエンドポイントに転送するルートがある場合も意味します。(SOAP クライアント → Camel → CXF サービス)、SOAP クライアントによって送信された SOAP ヘッダーも CXF サービスに転送されるようになりました。これらのヘッダーを転送したくない場合は、Camel ヘッダー "org.apache.cxf.headers.Header.list" でそれらを削除する必要があります。
26.15. SOAP ヘッダーは RAW モードでは使用できません リンクのコピーリンクがクリップボードにコピーされました!
SOAP 処理がスキップされるため、SOAP ヘッダーは RAW モードでは使用できません。
26.16. Camel から SOAP Fault を出力する方法 リンクのコピーリンクがクリップボードにコピーされました!
camel-cxf エンドポイントを使用して SOAP リクエストを使用している場合は、camel コンテキストから SOAP Fault を出力する必要がある場合があります。
基本的に、これを行うには throwFault DSL を使用できます。POJO、PAYLOAD、および MESSAGE データ形式で機能します。
CxfCustomizedExceptionTest に示すように、SOAP 障害を定義できます。
SOAP_FAULT = new SoapFault(EXCEPTION_MESSAGE, SoapFault.FAULT_CODE_CLIENT);
Element detail = SOAP_FAULT.getOrCreateDetail();
Document doc = detail.getOwnerDocument();
Text tn = doc.createTextNode(DETAIL_TEXT);
detail.appendChild(tn);
あとは好きなように投げてください
from(routerEndpointURI).setFaultBody(constant(SOAP_FAULT));
CXF エンドポイントが MESSAGE データ形式で動作している場合、CxfMessageStreamExceptionTest で示されているように、メッセージ本文に SOAP Fault メッセージを設定し、メッセージヘッダーに応答コードを設定できます。
from(routerEndpointURI).process(new Processor() {
public void process(Exchange exchange) throws Exception {
Message out = exchange.getOut();
// Set the message body with the
out.setBody(this.getClass().getResourceAsStream("SoapFaultMessage.xml"));
// Set the response code here
out.setHeader(org.apache.cxf.message.Message.RESPONSE_CODE, new Integer(500));
}
});
POJO データ形式を使用する場合も同様です。out body に SOAPFault を設定できます。
26.17. camel-cxf エンドポイントのリクエストとレスポンスのコンテキストを伝播する方法 リンクのコピーリンクがクリップボードにコピーされました!
CXF クライアント API は、要求と応答のコンテキストで操作を呼び出す方法を提供します。camel-cxf エンドポイント producer を使用して外部 Web サービスを呼び出す場合は、次のコードを使用して、要求コンテキストを設定し、応答コンテキストを取得できます。
CxfExchange exchange = (CxfExchange)template.send(getJaxwsEndpointUri(), new Processor() {
public void process(final Exchange exchange) {
final List<String> params = new ArrayList<String>();
params.add(TEST_MESSAGE);
// Set the request context to the inMessage
Map<String, Object> requestContext = new HashMap<String, Object>();
requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, JAXWS_SERVER_ADDRESS);
exchange.getIn().setBody(params);
exchange.getIn().setHeader(Client.REQUEST_CONTEXT , requestContext);
exchange.getIn().setHeader(CxfConstants.OPERATION_NAME, GREET_ME_OPERATION);
}
});
org.apache.camel.Message out = exchange.getOut();
// The output is an object array, the first element of the array is the return value
Object\[\] output = out.getBody(Object\[\].class);
LOG.info("Received output text: " + output\[0\]);
// Get the response context form outMessage
Map<String, Object> responseContext = CastUtils.cast((Map)out.getHeader(Client.RESPONSE_CONTEXT));
assertNotNull(responseContext);
assertEquals("Get the wrong wsdl operation name", "{http://apache.org/hello_world_soap_http}greetMe",
responseContext.get("javax.xml.ws.wsdl.operation").toString());
26.18. アタッチメントサポート リンクのコピーリンクがクリップボードにコピーされました!
POJO モード: SOAP with Attachment と MTOM の両方がサポートされています (MTOM を有効にするためのペイロードモードの例を参照してください)。ただし、SOAP with Attachment はテストされていません。添付ファイルは POJO にマーシャリングおよびアンマーシャリングされるため、通常、ユーザーは添付ファイル自体を処理する必要はありません。MTOM が有効になっていない場合、添付ファイルは Camel メッセージの添付ファイルに伝達されます。そのため、Camel Message API で添付ファイルを取得することができます。
DataHandler Message.getAttachment(String id)
ペイロードモード: MTOM はコンポーネントによってサポートされます。添付ファイルは、上記の Camel Message API によって取得できます。SOAP with Attachment (SwA) がサポートされており、添付ファイルを取得できます。SwA がデフォルトです (CXF エンドポイントプロパティー "mtom-enabled" を false に設定するのと同じです)。
MTOM を有効にするには、CXF エンドポイントプロパティー "mtom-enabled" を true に設定します。
@Bean
public CxfEndpoint routerEndpoint() {
CxfSpringEndpoint cxfEndpoint = new CxfSpringEndpoint();
cxfEndpoint.setServiceNameAsQName(SERVICE_QNAME);
cxfEndpoint.setEndpointNameAsQName(PORT_QNAME);
cxfEndpoint.setAddress("/" + getClass().getSimpleName()+ "/jaxws-mtom/hello");
cxfEndpoint.setWsdlURL("mtom.wsdl");
Map<String, Object> properties = new HashMap<String, Object>();
properties.put("dataFormat", "PAYLOAD");
properties.put("mtom-enabled", true);
cxfEndpoint.setProperties(properties);
return cxfEndpoint;
}
ペイロードモードで CXF エンドポイントに送信する添付ファイル付きの Camel メッセージを生成できます。
Exchange exchange = context.createProducerTemplate().send("direct:testEndpoint", new Processor() {
public void process(Exchange exchange) throws Exception {
exchange.setPattern(ExchangePattern.InOut);
List<Source> elements = new ArrayList<Source>();
elements.add(new DOMSource(DOMUtils.readXml(new StringReader(MtomTestHelper.REQ_MESSAGE)).getDocumentElement()));
CxfPayload<SoapHeader> body = new CxfPayload<SoapHeader>(new ArrayList<SoapHeader>(),
elements, null);
exchange.getIn().setBody(body);
exchange.getIn().addAttachment(MtomTestHelper.REQ_PHOTO_CID,
new DataHandler(new ByteArrayDataSource(MtomTestHelper.REQ_PHOTO_DATA, "application/octet-stream")));
exchange.getIn().addAttachment(MtomTestHelper.REQ_IMAGE_CID,
new DataHandler(new ByteArrayDataSource(MtomTestHelper.requestJpeg, "image/jpeg")));
}
});
// process response
CxfPayload<SoapHeader> out = exchange.getOut().getBody(CxfPayload.class);
Assert.assertEquals(1, out.getBody().size());
Map<String, String> ns = new HashMap<String, String>();
ns.put("ns", MtomTestHelper.SERVICE_TYPES_NS);
ns.put("xop", MtomTestHelper.XOP_NS);
XPathUtils xu = new XPathUtils(ns);
Element oute = new XmlConverter().toDOMElement(out.getBody().get(0));
Element ele = (Element)xu.getValue("//ns:DetailResponse/ns:photo/xop:Include", oute,
XPathConstants.NODE);
String photoId = ele.getAttribute("href").substring(4); // skip "cid:"
ele = (Element)xu.getValue("//ns:DetailResponse/ns:image/xop:Include", oute,
XPathConstants.NODE);
String imageId = ele.getAttribute("href").substring(4); // skip "cid:"
DataHandler dr = exchange.getOut().getAttachment(photoId);
Assert.assertEquals("application/octet-stream", dr.getContentType());
MtomTestHelper.assertEquals(MtomTestHelper.RESP_PHOTO_DATA, IOUtils.readBytesFromStream(dr.getInputStream()));
dr = exchange.getOut().getAttachment(imageId);
Assert.assertEquals("image/jpeg", dr.getContentType());
BufferedImage image = ImageIO.read(dr.getInputStream());
Assert.assertEquals(560, image.getWidth());
Assert.assertEquals(300, image.getHeight());
ペイロードモードで CXF エンドポイントから受信した Camel メッセージを使用することもできます。CxfMtomConsumerPayloadModeTest は、これがどのように機能するかを示しています。
public static class MyProcessor implements Processor {
@SuppressWarnings("unchecked")
public void process(Exchange exchange) throws Exception {
CxfPayload<SoapHeader> in = exchange.getIn().getBody(CxfPayload.class);
// verify request
Assert.assertEquals(1, in.getBody().size());
Map<String, String> ns = new HashMap<String, String>();
ns.put("ns", MtomTestHelper.SERVICE_TYPES_NS);
ns.put("xop", MtomTestHelper.XOP_NS);
XPathUtils xu = new XPathUtils(ns);
Element body = new XmlConverter().toDOMElement(in.getBody().get(0));
Element ele = (Element)xu.getValue("//ns:Detail/ns:photo/xop:Include", body,
XPathConstants.NODE);
String photoId = ele.getAttribute("href").substring(4); // skip "cid:"
Assert.assertEquals(MtomTestHelper.REQ_PHOTO_CID, photoId);
ele = (Element)xu.getValue("//ns:Detail/ns:image/xop:Include", body,
XPathConstants.NODE);
String imageId = ele.getAttribute("href").substring(4); // skip "cid:"
Assert.assertEquals(MtomTestHelper.REQ_IMAGE_CID, imageId);
DataHandler dr = exchange.getIn().getAttachment(photoId);
Assert.assertEquals("application/octet-stream", dr.getContentType());
MtomTestHelper.assertEquals(MtomTestHelper.REQ_PHOTO_DATA, IOUtils.readBytesFromStream(dr.getInputStream()));
dr = exchange.getIn().getAttachment(imageId);
Assert.assertEquals("image/jpeg", dr.getContentType());
MtomTestHelper.assertEquals(MtomTestHelper.requestJpeg, IOUtils.readBytesFromStream(dr.getInputStream()));
// create response
List<Source> elements = new ArrayList<Source>();
elements.add(new DOMSource(DOMUtils.readXml(new StringReader(MtomTestHelper.RESP_MESSAGE)).getDocumentElement()));
CxfPayload<SoapHeader> sbody = new CxfPayload<SoapHeader>(new ArrayList<SoapHeader>(),
elements, null);
exchange.getOut().setBody(sbody);
exchange.getOut().addAttachment(MtomTestHelper.RESP_PHOTO_CID,
new DataHandler(new ByteArrayDataSource(MtomTestHelper.RESP_PHOTO_DATA, "application/octet-stream")));
exchange.getOut().addAttachment(MtomTestHelper.RESP_IMAGE_CID,
new DataHandler(new ByteArrayDataSource(MtomTestHelper.responseJpeg, "image/jpeg")));
}
}
Raw モード: メッセージをまったく処理しないため、添付ファイルはサポートされていません。
CXF_RAW モード: MTOM がサポートされ、添付ファイルは上記の Camel Message API によって取得できます。マルチパート (つまり MTOM) メッセージを受信する場合、デフォルトの SOAPMessage から String へのコンバーターは、本文で完全なマルチパートペイロードを提供することに注意してください。文字列として SOAP XML だけが必要な場合は、message.getSOAPPart () でメッセージ本文を設定でき、Camel convert が残りの作業を実行できます。
26.19. PAYLOAD モードでのストリーミングのサポート リンクのコピーリンクがクリップボードにコピーされました!
camel-cxf コンポーネントは、PAYLOAD モードの使用時に受信メッセージのストリーミングをサポートするようになりました。以前は、着信メッセージは完全に DOM 解析されていました。大きなメッセージの場合、これには時間がかかり、大量のメモリーが使用されます。着信メッセージは、ルーティング中に javax.xml.transform.Source のままにすることができ、何もペイロードを変更しない場合は、ターゲットの宛先に直接ストリーミングできます。一般的な "単純なプロキシー" の使用例 (例: from ("cxf:…").to ("cxf:…")) では、これによりパフォーマンスが大幅に向上するだけでなく、メモリー要件が大幅に削減されます。
ただし、ストリーミングが適切でない、または望ましくない場合があります。ストリーミングの性質上、無効な着信 XML は、処理チェーンの後半までキャッチされない場合があります。また、特定のアクションでは、とにかくメッセージを DOM 解析する必要がある場合があります (WS-Security やメッセージトレースなど)。この場合、ストリーミングの利点は制限されます。この時点で、ストリーミングを制御する方法は 2 つあります。
- エンドポイントプロパティー: "allowStreaming=false" をエンドポイントプロパティーとして追加して、ストリーミングのオン/オフを切り替えることができます。
- Component プロパティー: CxfComponent オブジェクトには、そのコンポーネントから作成されたエンドポイントのデフォルトを設定できる allowStreaming プロパティーもあります。
グローバルシステムプロパティー: "org.apache.camel.component.cxf.streaming" のシステムプロパティーを "false" に追加してオフにすることができます。これによりグローバルなデフォルトが設定されますが、上記のエンドポイントプロパティーを設定すると、そのエンドポイントのこの値がオーバーライドされます。
26.20. 一般的な CXF ディスパッチモードの使用 リンクのコピーリンクがクリップボードにコピーされました!
camel-cxf コンポーネントは、任意の構造 (つまり、特定の XML スキーマにバインドされていない) のメッセージを転送できるジェネリック CXF ディスパッチモード をサポートしています。このモードを使用するには、CXF エンドポイントの wsdlURL および serviceClass 属性の指定を省略します。
<cxf:cxfEndpoint id="testEndpoint" address="http://localhost:9000/SoapContext/SoapAnyPort">
<cxf:properties>
<entry key="dataFormat" value="PAYLOAD"/>
</cxf:properties>
</cxf:cxfEndpoint>
デフォルトの CXF ディスパッチクライアントは、特定の SOAPAction ヘッダーを送信しないことに注意してください。したがって、ターゲットサービスが特定の SOAPAction 値を必要とする場合、キー SOAPAction (大文字と小文字を区別しない) を使用して Camel ヘッダーで提供されます。
26.21. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントは、以下に示す 13 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.cxf.allow-streaming | このオプションは、CXF コンポーネントが PAYLOAD モードで実行されている場合に、着信メッセージを DOM 解析して DOM 要素にするか、場合によってはストリーミングを許可する javax.xml.transform.Source オブジェクトとしてペイロードを保持するかを制御します。 | Boolean | |
| camel.component.cxf.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.cxf.bridge-error-handler | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | Boolean |
| camel.component.cxf.enabled | cxf コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.cxf.header-filter-strategy | カスタムの org.apache.camel.spi.HeaderFilterStrategy を使用して、Camel メッセージとの間でヘッダーをフィルターします。このオプションは org.apache.camel.spi.HeaderFilterStrategy タイプです。 | HeaderFilterStrategy | |
| camel.component.cxf.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.cxf.use-global-ssl-context-parameters | グローバル SSL コンテキストパラメーターの使用を有効にします。 | false | Boolean |
| camel.component.cxfrs.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.cxfrs.bridge-error-handler | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | Boolean |
| camel.component.cxfrs.enabled | cxfrs コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.cxfrs.header-filter-strategy | カスタムの org.apache.camel.spi.HeaderFilterStrategy を使用して、Camel メッセージとの間でヘッダーをフィルターします。このオプションは org.apache.camel.spi.HeaderFilterStrategy タイプです。 | HeaderFilterStrategy | |
| camel.component.cxfrs.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.cxfrs.use-global-ssl-context-parameters | グローバル SSL コンテキストパラメーターの使用を有効にします。 | false | Boolean |
第27章 CXF-RS リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
CXFRS コンポーネントは、CXF でホストされている JAX-RS 1.1 および 2.0 サービスに接続するための Apache CXF との統合を提供します。
27.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で camel-cxf-rest を使用する場合は、自動設定をサポートするために次の Maven 依存関係を pom.xml に追加します。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-cxf-rest-starter</artifactId>
</dependency>
27.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
cxfrs://address?options
ここで、address は CXF エンドポイントのアドレスを表します。
cxfrs:bean:rsEndpoint
ここで、rsEndpoint は CXFRS クライアントまたはサーバーを表す Spring Bean の名前を表します。
上記の形式では、次のように URI にオプションを追加できます。
cxfrs:bean:cxfEndpoint?resourceClasses=org.apache.camel.rs.Example
27.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
27.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
27.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
27.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
CXF-RS コンポーネントは、以下に示す 5 個のオプションをサポートしています。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | コンシューマーを Camel ルーティングエラーハンドラーにブリッジすることを可能にします。つまり、Camel コンシューマーが受信メッセージなどを取得しようとしているときに発生した例外 (可能な場合) は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されるようになります。重要: これは、サードパーティーコンポーネントが例外が出力された場合に Camel に警告することを許可している場合にのみ可能です。一部のコンポーネントはこれを内部でのみ処理するため、bridgeErrorHandler は使用できません。他の状況では、Camel コンポーネントを改良してサードパーティーコンポーネントに接続し、今後のリリースでこれを可能にする可能性があります。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| headerFilterStrategy (filter) | カスタムの org.apache.camel.spi.HeaderFilterStrategy を使用して、Camel メッセージとの間でヘッダーをフィルターします。 | HeaderFilterStrategy | |
| useGlobalSslContextParameters (security) | グローバル SSL コンテキストパラメーターの使用を有効にします。 | false | boolean |
27.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
CXF-RS エンドポイントは、URI 構文を使用して設定されます。
cxfrs:beanId:address
path パラメーターおよび query パラメーターを使用します。
27.5.1. パスパラメーター (2 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| beanId (common) |
既存の設定済み CxfRsEndpoint を検索する場合。接頭辞として | String | |
| address (common) | サービス公開アドレス。 | String |
27.5.2. クエリーパラメーター (31 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| features (common) | 機能リストを CxfRs エンドポイントに設定します。 | List | |
| loggingFeatureEnabled (common) | このオプションは、インバウンドおよびアウトバウンドの REST メッセージをログに書き込む CXF ロギング機能を有効にします。 | false | boolean |
| loggingSizeLimit (common) | ロギング機能が有効になっているときにロガーが出力するバイト数の合計サイズを制限します。 | int | |
| modelRef (common) | このオプションは、アノテーションのないリソースクラスに役立つモデルファイルを指定するために使用されます。このオプションを使用する場合、サービスクラスを省略して、ドキュメントのみのエンドポイントをエミュレートできます。 | String | |
| providers (common) | カスタム JAX-RS プロバイダーリストを CxfRs エンドポイントに設定します。コンマで区切られたレジストリーで検索するプロバイダーのリストを含む文字列を指定できます。 | String | |
| resourceClasses (common) | REST サービスとしてエクスポートするリソースクラス。複数のクラスはコンマで区切ることができます。 | List | |
| schemaLocations (common) | 着信 XML または JAXB 駆動型 JSON の検証に使用できるスキーマのロケーションを設定します。 | List | |
| skipFaultLogging (common) | このオプションは、PhaseInterceptorChain がキャッチした Fault のログ記録をスキップするかどうかを制御します。 | false | boolean |
| bindingStyle (consumer) | リクエストとレスポンスが Camel との間でどのようにマッピングされるかを設定します。2 つの値が可能です: SimpleConsumer: このバインディングスタイルは、リクエストパラメーター、マルチパートなどを処理し、それらを IN ヘッダー、IN 添付、およびメッセージボディーにマップします。org.apache.cxf.message.MessageContentsList の低レベル処理を排除することを目的としています。また、レスポンスマッピングの柔軟性とシンプルさも向上します。一般コンシューマーのみご利用いただけます。デフォルト: デフォルトのスタイル。コンシューマーの場合、これにより MessageContentsList がルートに渡され、ルートで低レベルの処理が必要になります。これは従来のバインディングスタイルで、CXF スタックから入ってくる org.apache.cxf.message.MessageContentsList を IN メッセージボディーに単純にダンプします。ユーザーは、JAX-RS メソッド署名によって定義されたコントラクトに従ってそれを処理する責任があります。カスタム: バインディングオプションを介してカスタムバインディングを指定できます。 列挙値:
| デフォルト | BindingStyle |
| publishedEndpointUrl (consumer) | このオプションは、リソースアドレス URL と _wadl でアクセスできる WADL から発行された endpointUrl をオーバーライドできます。 | String | |
| bridgeErrorHandler (consumer (advanced)) | コンシューマーを Camel ルーティングエラーハンドラーにブリッジすることを可能にします。つまり、Camel コンシューマーが受信メッセージなどを取得しようとしているときに発生した例外 (可能な場合) は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されるようになります。重要: これは、サードパーティーコンポーネントが例外が出力された場合に Camel に警告することを許可している場合にのみ可能です。一部のコンポーネントはこれを内部でのみ処理するため、bridgeErrorHandler は使用できません。他の状況では、Camel コンポーネントを改良してサードパーティーコンポーネントに接続し、今後のリリースでこれを可能にする可能性があります。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| exceptionHandler (consumer (advanced)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (advanced)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| serviceBeans (consumer (advanced)) | REST サービスとしてエクスポートするサービス Bean (レジストリーで検索する Bean ID)。複数の Bean はコンマで区切ることができます。 | String | |
| cookieHandler (producer) | HTTP セッションを維持するように Cookie ハンドラーを設定します。 | CookieHandler | |
| hostnameVerifier (producer) | 使用するホスト名ベリファイア。# 表記を使用して、レジストリーから HostnameVerifier を参照します。 | HostnameVerifier | |
| sslContextParameters (producer) | Camel SSL 設定リファレンス。# 表記を使用して、SSL コンテキストを参照します。 | SSLContextParameters | |
| throwExceptionOnFailure (producer) | このオプションは、CxfRsProducer に戻りコードを検査するように指示し、戻りコードが 207 より大きい場合は例外を生成します。 | true | boolean |
| httpClientAPI (producer (advanced)) | true の場合、CxfRsProducer は HttpClientAPI を使用してサービスを呼び出します。false の場合、CxfRsProducer は ProxyClientAPI を使用してサービスを呼び出します。 | true | boolean |
| ignoreDeleteMethodMessageBody (producer (advanced)) | このオプションは、HTTP API の使用時に DELETE メソッドのメッセージ本文を無視するように CxfRsProducer に指示するために使用されます。 | false | boolean |
| lazyStartProducer (producer (advanced)) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| maxClientCacheSize (producer (advanced)) | このオプションを使用すると、キャッシュの最大サイズを設定できます。実装は、CXF クライアントまたは ClientFactoryBean を CxfProvider および CxfRsProvider にキャッシュします。 | 10 | int |
| synchronous (producer (advanced)) | 同期処理を厳密に使用するかどうかを設定します。 | false | boolean |
| binding (advanced) | カスタム CxfBinding を使用して、Camel メッセージと CXF メッセージ間のバインディングを制御します。 | CxfRsBinding | |
| bus (advanced) | カスタム設定の CXF バスを使用するには。 | バス | |
| continuationTimeout (advanced) | このオプションは、CXF サーバーが Jetty またはサーブレットトランスポートを使用している場合にデフォルトで CxfConsumer で使用できる CXF 継続タイムアウトを設定するために使用されます。 | 30000 | long |
| cxfRsConfigurer (advanced) | このオプションは、プログラムによる方法での CXF エンドポイントの設定をサポートする org.apache.camel.component.cxf.jaxrs.CxfRsEndpointConfigurer の実装を適用できます。ユーザーは、CxfEndpointConfigurer の configure\\{Server/Client} メソッドを実装することで、CXF サーバーとクライアントを設定できます。 | CxfRsConfigurer | |
| defaultBus (advanced) | CXF エンドポイントが独自にバスを作成するときに、デフォルトのバスを設定します。 | false | boolean |
| headerFilterStrategy (advanced) | カスタムの HeaderFilterStrategy を使用して、Camel メッセージとの間でヘッダーをフィルタリングします。 | HeaderFilterStrategy | |
| performInvocation (advanced) | オプションが true の場合、Camel はリソースクラスインスタンスの呼び出しを実行し、さらに処理するために応答オブジェクトを交換に入れます。 | false | boolean |
| propagateContexts (advanced) | このオプションが true の場合、JAXRS UriInfo、HttpHeaders、Request、および SecurityContext コンテキストは、型指定された Camel エクスチェンジプロパティーとしてカスタム CXFRS プロセッサーで使用できます。これらのコンテキストは、JAX-RS API を使用して現在のリクエストを分析するために使用できます。 | false | boolean |
27.6. メッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
CXF-RS コンポーネントは、以下に示す 16 つのメッセージヘッダーをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| operationName (common) 定数: OPERATION_NAME | 操作の名前。 | String | |
| CamelAuthentication (common) 定数: AUTHENTICATION | 認証。 | Subject | |
| CamelHttpMethod (common) 定数: HTTP_METHOD | 使用する http メソッド | String | |
| CamelHttpPath (common) 定数: HTTP_PATH | http パス。 | String | |
| Content-Type (common) 定数: CONTENT_TYPE | コンテンツの種類。 | String | |
| CamelHttpQuery (common) 定数: HTTP_QUERY | http クエリー。 | String | |
| CamelHttpResponseCode (common) | http 応答コード。 | Integer | |
| Content-Encoding (common) 定数: CONTENT_ENCODING | コンテンツのエンコーディング。 | String | |
| org.apache.cxf.message.Message.PROTOCOL_HEADERS (common) 定数: PROTOCOL_HEADERS | プロトコルヘッダー。 | Map | |
| CamelCxfMessage (common) | CXF メッセージ。 | Message | |
| CamelCxfRsUsingHttpAPI (common) | true の場合、CxfRsProducer は HttpClientAPI を使用してサービスを呼び出します。false の場合、CxfRsProducer は ProxyClientAPI を使用してサービスを呼び出します。 | Boolean | |
| CamelCxfRsVarValues (common) | パスの値。 | Object[] | |
| CamelCxfRsResponseClass (common) | 応答クラス。 | クラス | |
| CamelCxfRsResponseGenericType (common) | 応答の汎用型。 | 型 | |
| CamelCxfRsQueryMap (common) | クエリーマップ。 | Map | |
| CamelCxfRsOperationResourceInfoStack (common) | JAX-RS 呼び出しがターゲットを検索するときのリソースパスを表す MethodInvocationInfo のスタック。 | OperationResourceInfoStack |
Spring 設定を使用して CXF REST エンドポイントを設定することもできます。
- 注記
CXF REST クライアントと CXF REST サーバーには多くの違いがあるため、それぞれに異なる設定を提供します。
詳細は、次のファイルを確認してください。
27.7. Camel で REST エンドポイントを設定する方法 リンクのコピーリンクがクリップボードにコピーされました!
camel-cxf スキーマファイル には、REST エンドポイント定義の 2 つの要素があります。
-
cxf:rsServerfor REST consumer -
REST プロデューサーの
cxf:rsClient。
Camel REST サービスのルート設定の例は、こちらにあります。
27.8. メッセージヘッダーから CXF producer アドレスを上書きする方法 リンクのコピーリンクがクリップボードにコピーされました!
camel-cxfrs プロデューサーは、CamelDestinationOverrideUrl キーを使用してメッセージを設定することにより、サービスアドレスのオーバーライドをサポートします。
// set up the service address from the message header to override the setting of CXF endpoint
exchange.getIn().setHeader(Exchange.DESTINATION_OVERRIDE_URL, constant(getServiceAddress()));
27.9. REST リクエストの使用 - シンプルなバインディングスタイル リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.11 以降
Default のバインディングスタイルはかなり低レベルであり、ユーザーはルートに入ってくる MessageContentsList オブジェクトを手動で処理する必要があります。したがって、ルートロジックは、JAX-RS 操作のメソッドシグネチャーおよびパラメーターインデックスと密接に結合されますが、これはやや洗練されておらず、難しく、エラーが発生しやすくなります。
対照的に、SimpleConsumer バインディングスタイルは、キャメルメッセージ内で リクエストデータにアクセスしやすくする ために、次のマッピングを実行します。
-
JAX-RS パラメーター (
@HeaderParam、@QueryParamなど) は、IN メッセージヘッダーとして挿入されます。ヘッダー名は、アノテーションの値と一致します。 -
リクエストエンティティー (POJO またはその他のタイプ) は、IN メッセージの本文になります。単一のエンティティーが JAX-RS メソッド署名で識別できない場合、元の
MessageContentsListにフォールバックします。 -
バイナリー
@Multipartボディパーツは IN メッセージの添付になり、DataHandler、InputStream、DataSource、および CXF のAttachmentクラスをサポートします。 -
非バイナリー
@Multipartボディパーツは、IN メッセージヘッダーとしてマップされます。ヘッダー名はボディパーツ名と一致します。
さらに、次のルールが Response マッピング に適用されます。
-
メッセージボディーのタイプが
javax.ws.rs.core.Response(ユーザー作成のレスポンス) と異なる場合、新しいResponseが作成され、メッセージボディーがエンティティーとして設定されます (null でない限り)。レスポンスステータスコードは、Exchange.HTTP_RESPONSE_CODEヘッダーから取得されるか、存在しない場合はデフォルトで 200 OK になります。 -
メッセージボディーのタイプが
javax.ws.rs.core.Responseと等しい場合、ユーザーがカスタムレスポンスを作成したことを意味し、それが尊重されて最終的なレスポンスになります。 -
いずれの場合も、カスタムまたはデフォルトの
HeaderFilterStrategyによって許可された Camel ヘッダーが HTTP 応答に追加されます。
27.9.1. Simple Binding Style の有効化 リンクのコピーリンクがクリップボードにコピーされました!
このバインディングスタイルは、コンシューマーエンドポイントの bindingStyle パラメーターを値 SimpleConsumer に設定することで有効化できます。
from("cxfrs:bean:rsServer?bindingStyle=SimpleConsumer")
.to("log:TEST?showAll=true");
27.9.2. 異なるメソッドシグネチャーを使用したリクエストバインディングの例 リンクのコピーリンクがクリップボードにコピーされました!
以下は、Simple バインディングから期待される結果と一緒にメソッドシグネチャーのリストです。
-
public Response doAction(BusinessObject request);: リクエストペイロードは、元の MessageContentsList を置き換えて、IN メッセージボディーに配置されます。 -
public Response doAction(BusinessObject request, @HeaderParam("abcd") String abcd, @QueryParam("defg") String defg);: 元のMessageContentsListを置き換えて、IN メッセージボディーに配置されたリクエストペイロード。両方のリクエストパラメーターは、"abcd" および "defg" という名前の IN メッセージヘッダーとしてマップされます。 -
public Response doAction(@HeaderParam("abcd") String abcd, @QueryParam("defg") String defg);: 両方のリクエストパラメーターは、"abcd" および "defg" という名前の IN メッセージヘッダーとしてマップされます。元のMessageContentsListは、2 個のパラメーターしか含まれていませんが、保持されます。 -
public Response doAction(@Multipart(value="body1") BusinessObject request, @Multipart(value="body2") BusinessObject request2);: 最初のパラメーターは "body1" という名前のヘッダーとして転送され、2 番目のパラメーターはヘッダー "body2" としてマップされます。元のMessageContentsListは IN メッセージボディーとして保持されます。 -
public Response doAction(InputStream abcd);:InputStreamはMessageContentsListからアンラップされ、IN メッセージボディーとして保存されます。 -
public Response doAction(DataHandler abcd);: DataHandler はMessageContentsListからアンラップされ、IN メッセージボディーとして保存されます。
27.9.3. Simple Binding Style の例 リンクのコピーリンクがクリップボードにコピーされました!
このメソッドで JAX-RS リソースクラスを指定すると、次のようになります。
@POST @Path("/customers/{type}")
public Response newCustomer(Customer customer, @PathParam("type") String type, @QueryParam("active") @DefaultValue("true") boolean active) {
return null;
}
以下のルートでサービスを提供します。
from("cxfrs:bean:rsServer?bindingStyle=SimpleConsumer")
.recipientList(simple("direct:${header.operationName}"));
from("direct:newCustomer")
.log("Request: type=${header.type}, active=${header.active}, customerData=${body}");
XML ペイロードを含む次の HTTP リクエスト (Customer DTO が JAXB アノテーション付きである場合):
POST /customers/gold?active=true
Payload:
<Customer>
<fullName>Raul Kripalani</fullName>
<country>Spain</country>
<project>Apache Camel</project>
</Customer>
メッセージを出力します:
Request: type=gold, active=true, customerData=<Customer.toString() representation>
- 注記
- リクエストの処理方法とレスポンスの書き込み方法に関するその他の例は、こちら を参照してください。
27.10. REST リクエストの使用 - デフォルトのバインディングスタイル リンクのコピーリンクがクリップボードにコピーされました!
CXF JAXRS フロントエンド は、JAX-RS (JSR-311) API を実装しているため、リソースクラスを REST サービスとしてエクスポートできます。CXF Invoker API を活用して、REST リクエストを通常の Java オブジェクトメソッド呼び出しに変換します。エンドポイント内で URI テンプレートを指定する必要はありません。CXF は、JSR-311 仕様に従って、REST リクエスト URI からリソースクラスメソッドへのマッピングを処理します。Camel で行う必要があるのは、このメソッドリクエストを適切なプロセッサーまたはエンドポイントに委任することだけです。
CXFRS ルートの例
private static final String CXF_RS_ENDPOINT_URI =
"cxfrs://http://localhost:" + CXT + "/rest?resourceClasses=org.apache.camel.component.cxf.jaxrs.testbean.CustomerServiceResource";
private static final String CXF_RS_ENDPOINT_URI2 =
"cxfrs://http://localhost:" + CXT + "/rest2?resourceClasses=org.apache.camel.component.cxf.jaxrs.testbean.CustomerService";
private static final String CXF_RS_ENDPOINT_URI3 =
"cxfrs://http://localhost:" + CXT + "/rest3?"
+ "resourceClasses=org.apache.camel.component.cxf.jaxrs.testbean.CustomerServiceNoAnnotations&"
+ "modelRef=classpath:/org/apache/camel/component/cxf/jaxrs/CustomerServiceModel.xml";
private static final String CXF_RS_ENDPOINT_URI4 =
"cxfrs://http://localhost:" + CXT + "/rest4?"
+ "modelRef=classpath:/org/apache/camel/component/cxf/jaxrs/CustomerServiceDefaultHandlerModel.xml";
private static final String CXF_RS_ENDPOINT_URI5 =
"cxfrs://http://localhost:" + CXT + "/rest5?"
+ "propagateContexts=true&"
+ "modelRef=classpath:/org/apache/camel/component/cxf/jaxrs/CustomerServiceDefaultHandlerModel.xml";
protected RouteBuilder createRouteBuilder() throws Exception {
final Processor testProcessor = new TestProcessor();
final Processor testProcessor2 = new TestProcessor2();
final Processor testProcessor3 = new TestProcessor3();
return new RouteBuilder() {
public void configure() {
errorHandler(new NoErrorHandlerBuilder());
from(CXF_RS_ENDPOINT_URI).process(testProcessor);
from(CXF_RS_ENDPOINT_URI2).process(testProcessor);
from(CXF_RS_ENDPOINT_URI3).process(testProcessor);
from(CXF_RS_ENDPOINT_URI4).process(testProcessor2);
from(CXF_RS_ENDPOINT_URI5).process(testProcessor3);
}
};
}
そして、エンドポイントの設定に使用される対応するリソースクラス…
- 注記
- デフォルトでは、JAX-RS リソースクラスは JAX-RS プロパティーを設定するために のみ 使用されます。エンドポイントへのメッセージのルーティング中はメソッドは実行 されません。代わりに、すべての処理を行うのはルートの責任です。
デフォルトモードでは、何も実行しないサービス実装クラスではなく、インターフェイスのみを提供すれば十分です。
performInvocation オプションが有効になっている場合、サービス実装が最初に呼び出され、レスポンスが Camel エクスチェンジに設定され、ルートの実行が通常どおり続行されます。これは、既存の JAX-RS 実装を Camel ルートに統合する場合や、カスタムプロセッサーで JAX-RS レスポンスを後処理する場合に役立ちます。
@Path("/customerservice/")
public interface CustomerServiceResource {
@GET
@Path("/customers/{id}/")
Customer getCustomer(@PathParam("id") String id);
@PUT
@Path("/customers/")
Response updateCustomer(Customer customer);
@Path("/{id}")
@PUT()
@Consumes({ "application/xml", "text/plain",
"application/json" })
@Produces({ "application/xml", "text/plain",
"application/json" })
Object invoke(@PathParam("id") String id,
String payload);
}
27.11. camel-cxfrs プロデューサーを介して REST サービスを呼び出す方法 リンクのコピーリンクがクリップボードにコピーされました!
CXF JAXRS フロントエンド は、プロキシーベースのクライアント API を実装します。この API を使用すると、プロキシー経由でリモート REST サービスを呼び出すことができます。camel-cxfrs producer は、この プロキシー API に基づいています。メッセージヘッダーに操作名を指定し、メッセージ本文にパラメーターを準備すると、camel-cxfrs プロデューサーが適切な REST リクエストを生成します。
例
Exchange exchange = template.send("direct://proxy", new Processor() {
public void process(Exchange exchange) throws Exception {
exchange.setPattern(ExchangePattern.InOut);
Message inMessage = exchange.getIn();
// set the operation name
inMessage.setHeader(CxfConstants.OPERATION_NAME, "getCustomer");
// using the proxy client API
inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_USING_HTTP_API, Boolean.FALSE);
// set a customer header
inMessage.setHeader("key", "value");
// set up the accepted content type
inMessage.setHeader(Exchange.ACCEPT_CONTENT_TYPE, "application/json");
// set the parameters, if you just have one parameter,
// camel will put this object into an Object[] itself
inMessage.setBody("123");
}
});
// get the response message
Customer response = (Customer) exchange.getMessage().getBody();
assertNotNull(response, "The response should not be null");
assertEquals(123, response.getId(), "Get a wrong customer id");
assertEquals("John", response.getName(), "Get a wrong customer name");
assertEquals(200, exchange.getMessage().getHeader(Exchange.HTTP_RESPONSE_CODE), "Get a wrong response code");
assertEquals("value", exchange.getMessage().getHeader("key"), "Get a wrong header value");
CXF JAXRS フロントエンド は、HTTP 中心のクライアント API も提供します。この API は、camel-cxfrs プロデューサーから呼び出すこともできます。HTTP_PATH と HTTP_METHOD を指定し、URI オプション httpClientAPI を使用するか、メッセージヘッダー CxfConstants.CAMEL_CXF_RS_USING_HTTP_API を設定することで、プロデューサーが http 中心のクライアント API を使用できるようにする必要があります。レスポンスオブジェクトを、メッセージヘッダー CxfConstants.CAMEL_CXF_RS_RESPONSE_CLASS で指定された型クラスに変換できます。
Exchange exchange = template.send("direct://http", new Processor() {
public void process(Exchange exchange) throws Exception {
exchange.setPattern(ExchangePattern.InOut)
Message inMessage = exchange.getIn();
// using the http central client API
inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_USING_HTTP_API, Boolean.TRUE);
// set the Http method
inMessage.setHeader(Exchange.HTTP_METHOD, "GET");
// set the relative path
inMessage.setHeader(Exchange.HTTP_PATH, "/customerservice/customers/123");
// Specify the response class, cxfrs will use InputStream as the response object type
inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_RESPONSE_CLASS, Customer.class);
// set a customer header
inMessage.setHeader("key", "value");
// since we use the Get method, so we don't need to set the message body
inMessage.setBody(null);
}
});
CXFRS http 中心クライアントの cxfrs URI からクエリーパラメーターを指定することもできます。
Exchange exchange = template.send("cxfrs://http://localhost:9003/testQuery?httpClientAPI=true&q1=12&q2=13"
動的ルーティングをサポートするには、CxfConstants.CAMEL_CXF_RS_QUERY_MAP ヘッダーを使用して URI のクエリーパラメーターをオーバーライドし、そのパラメーターマップを設定します。
Map<String, String> queryMap = new LinkedHashMap<>();
queryMap.put("q1", "new");
queryMap.put("q2", "world");
inMessage.setHeader(CxfConstants.CAMEL_CXF_RS_QUERY_MAP, queryMap);
27.12. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に示す 6 つのオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.cxfrs.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.cxfrs.bridge-error-handler | コンシューマーを Camel ルーティングエラーハンドラーにブリッジすることを可能にします。つまり、Camel コンシューマーが受信メッセージなどを取得しようとしているときに発生した例外 (可能な場合) は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されるようになります。重要: これは、サードパーティーコンポーネントが例外が出力された場合に Camel に警告することを許可している場合にのみ可能です。一部のコンポーネントはこれを内部でのみ処理するため、bridgeErrorHandler は使用できません。他の状況では、Camel コンポーネントを改良してサードパーティーコンポーネントに接続し、今後のリリースでこれを可能にする可能性があります。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | Boolean |
| camel.component.cxfrs.enabled | cxfrs コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.cxfrs.header-filter-strategy | カスタムの org.apache.camel.spi.HeaderFilterStrategy を使用して、Camel メッセージとの間でヘッダーをフィルターします。このオプションは org.apache.camel.spi.HeaderFilterStrategy タイプです。 | HeaderFilterStrategy | |
| camel.component.cxfrs.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.cxfrs.use-global-ssl-context-parameters | グローバル SSL コンテキストパラメーターの使用を有効にします。 | false | Boolean |
第28章 データ形式 リンクのコピーリンクがクリップボードにコピーされました!
producer のみサポート対象
Dataformat コンポーネントを使用すると、Data Format を Camel コンポーネントとして使用できます。
28.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で dataformat を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-dataformat-starter</artifactId>
</dependency>
28.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
dataformat:name:(marshal|unmarshal)[?options]
name はデータ形式の名前です。次に、marshal または unmarshal のいずれかでなければならない操作が続きます。オプションは、使用中の データ形式 を設定するために使用されます。どのオプションがサポートされているかについては、データ形式のドキュメントを参照してください。
28.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
28.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
28.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
28.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
データ形式コンポーネントは、以下に示す 2 つのオプションをサポートしています。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
28.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Data Format エンドポイントは、URI 構文を使用して設定されます。
dataformat:name:operation
パスおよびクエリーパラメーターを使用します。
28.5.1. パスパラメーター (2 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| name (producer) | 必須 データ形式の名前。 | String | |
| operation (producer) | マーシャリングまたはアンマーシャリングのいずれかを使用するために 必要な 操作。 列挙値:
| String |
28.5.2. クエリーパラメーター (1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
28.6. サンプル リンクのコピーリンクがクリップボードにコピーされました!
たとえば、JAXB データ形式 を使用するには、次のようにします。
from("activemq:My.Queue").
to("dataformat:jaxb:unmarshal?contextPath=com.acme.model").
to("mqseries:Another.Queue");
XML DSL では、次のようにします。
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="activemq:My.Queue"/>
<to uri="dataformat:jaxb:unmarshal?contextPath=com.acme.model"/>
<to uri="mqseries:Another.Queue"/>
</route>
</camelContext>
28.7. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 3 つのオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.dataformat.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.dataformat.enabled | dataformat コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.dataformat.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
第29章 Dataset リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
分散処理と非同期処理のテストは、非常に難しいことで知られています。Mock、Test、および DataSet エンドポイントは Camel テストフレームワークとうまく連携し、エンタープライズ統合パターン と Camel の幅広いコンポーネントを強力な Bean 統合と共に使用して、ユニットと統合のテストを簡素化します。
DataSet コンポーネントは、システムの負荷テストとソークテストを簡単に実行するメカニズムを提供します。メッセージのソースとして、またデータセットが受信されたことをアサートする方法として、DataSet インスタンス を作成できるようにすることで機能します。
Camel は、データセットを送信するときに スループットロガー を使用します。
29.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で dataset を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-dataset-starter</artifactId>
</dependency>
29.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
dataset:name[?options]
name は、レジストリーで DataSet インスタンス を検索するために使用されます
Camel には、独自の DataSet を実装するためのベースとして使用できる org.apache.camel.component.dataset.DataSet、org.apache.camel.component.dataset.DataSetSupport クラスのサポート実装が付属しています。Camel には、テストに使用できる実装もいくつか付属しています。org.apache.camel.component.dataset.SimpleDataSet、org.apache.camel.component.dataset.ListDataSet、org.apache.camel.component.dataset.FileDataSet など、すべて DataSetSupport を拡張します。
29.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
29.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
29.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
29.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
Dataset コンポーネントは、以下に示す 5 つのオプションをサポートしています。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| log (producer) | モックが着信メッセージを受信したときにロギングをオンにします。これは、着信メッセージの INFO レベルで 1 回だけログに記録されます。より詳細なログを取得するには、ロガーを org.apache.camel.component.mock.MockEndpoint クラスの DEBUG レベルに設定します。 | false | boolean |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| exchangeFormatter (advanced) | Autowired カスタム ExchangeFormatter を設定して、Exchange をログに適した文字列に変換します。指定しない場合は、デフォルトで DefaultExchangeFormatter になります。 | ExchangeFormatter |
29.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Dataset エンドポイントは、URI 構文を使用して設定されます。
dataset:name
パスおよびクエリーパラメーターを使用します。
29.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| name (common) | レジストリーで検索する DataSet の 必須 の名前。 | DataSet |
29.5.2. クエリーパラメーター (21 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| dataSetIndex (common) | CamelDataSetIndex ヘッダーの動作を制御します。consumer の場合: - off = ヘッダーは設定されません - strict/lenient = ヘッダーは設定されます producer の場合: - off = ヘッダー値は検証されず、存在しない場合は設定されません = strict =ヘッダー値が存在する必要があり、検証されます = lenient = ヘッダー値が存在する場合は検証され、存在しない場合は設定されます。 列挙値:
| lenient | String |
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| initialDelay (consumer) | メッセージの送信を開始する前に待機する時間 (ミリ単位)。 | 1000 | long |
| minRate (consumer) | DataSet に少なくともこの数のメッセージが含まれるまで待ちます。 | 0 | int |
| preloadSize (consumer) | ルートが初期化を完了する前にプリロード (送信) するメッセージの数を設定します。 | 0 | long |
| produceDelay (consumer) | メッセージが consumer によって送信されるときに遅延を引き起こす遅延を指定できるようにします (遅い処理をシミュレートするため)。 | 3 | long |
| exceptionHandler (consumer (advanced)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (advanced)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| assertPeriod (producer) | 暫定的なアサーションがまだ有効であることを確認するために、モックエンドポイントが再アサートするまでの猶予期間を設定します。これは、たとえば、正確な数のメッセージが到着したことをアサートするために使用されます。たとえば、expectedMessageCount (int) が 5 に設定されている場合、5 つ以上のメッセージが到着するとアサーションが満たされます。正確に 5 つのメッセージが到着するようにするには、それ以上メッセージが到着しないように少し待つ必要があります。これが、このメソッドを使用できるものです。デフォルトでは、この期間は無効になっています。 | long | |
| consumeDelay (producer) | メッセージがプロデューサによって消費されるときに遅延を引き起こす遅延を指定できるようにします (遅い処理をシミュレートするため)。 | 0 | long |
| expectedCount (producer) | このエンドポイントが受信するメッセージ交換の予想数を指定します。注意: 0 のメッセージを期待したい場合は、特別な注意が必要です。0 はテストの開始時に一致するため、アサート期間を設定して、テストをしばらく実行し、まだメッセージが到着していないことを確認する必要があります。;そのためには setAssertPeriod (long) を使用します。別の方法として、NotifyBuilder を使用し、モックで assertIsSatisfied() メソッドを呼び出す前に、NotifyBuilder を使用して、Camel がいくつかのメッセージのルーティングを完了したことを知ることができます。これにより、固定アサート期間を使用せずにテスト時間を短縮できます。正確に n 番目のメッセージがこのモックエンドポイントに到着することをアサートする場合は、詳細について setAssertPeriod (long) メソッドも参照してください。 | -1 | int |
| failFast (producer) | assertIsSatisfied () が最初に検出された失敗した期待で高速に失敗する必要があるかどうかを設定しますが、それ以外の場合は、期待されるすべてのメッセージが到着するのを待ってから、期待の検証を実行します。デフォルトでは true です。Camel 2.x のような動作を使用するには、false に設定します。 | false | boolean |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| log (producer) | モックが着信メッセージを受信したときにロギングをオンにします。これは、着信メッセージの INFO レベルで 1 回だけログに記録されます。より詳細なログを取得するには、ロガーを org.apache.camel.component.mock.MockEndpoint クラスの DEBUG レベルに設定します。 | false | boolean |
| reportGroup (producer) | サイズのグループに基づいてスループットログを有効にするために使用される数値。 | int | |
| resultMinimumWaitTime (producer) | ラッチが満たされるまで assertIsSatisfied () が待機する最小予想時間 (ミリ秒単位) を設定します。 | long | |
| resultWaitTime (producer) | ラッチが満たされるまで assertIsSatisfied () が待機する最大時間 (ミリ秒単位) を設定します。 | long | |
| retainFirst (producer) | 受信した Exchange の最初の n 番目の数だけを保持するように指定します。これは、ビッグデータでテストするときに使用され、このモックエンドポイントが受信するすべての Exchange のコピーを保存しないことでメモリー消費を削減します。重要: この制限を使用する場合、getReceivedCounter() は受信した Exchange の実際の数を返します。たとえば、5000 の交換を受信し、最初の 10 の交換のみを保持するように設定した場合、getReceivedCounter () は引き続き 5000 を返しますが、getExchanges () および getReceivedExchanges () メソッドには最初の 10 の交換しかありません。このメソッドを使用する場合、他の期待値メソッドの一部はサポートされません。たとえば、expectedBodiesReceived(Object…) は、受信した最初の数のボディに期待値を設定します。setRetainFirst(int) メソッドと setRetainLast(int) メソッドの両方を設定して、最初と最後の受信の両方を制限できます。 | -1 | int |
| retainLast (producer) | 受信した Exchange の最後の n 番目の数だけを保持するように指定します。これは、ビッグデータでテストするときに使用され、このモックエンドポイントが受信するすべての Exchange のコピーを保存しないことでメモリー消費を削減します。重要: この制限を使用する場合、getReceivedCounter() は受信した Exchange の実際の数を返します。たとえば、5000 の交換を受信し、最後の 20 の交換のみを保持するように設定した場合、getReceivedCounter () は引き続き 5000 を返しますが、getExchanges () および getReceivedExchanges () メソッドには最後の 20 の交換しかありません。このメソッドを使用する場合、他の期待値メソッドの一部はサポートされません。たとえば、expectedBodiesReceived(Object…) は、受信した最初の数のボディに期待値を設定します。setRetainFirst(int) メソッドと setRetainLast(int) メソッドの両方を設定して、最初と最後の受信の両方を制限できます。 | -1 | int |
| sleepForEmptyTest (producer) | expectedMessageCount (int) がゼロで呼び出されたときに、このエンドポイントが実際に空であることを確認するために待機するスリープを指定できるようにします。 | long | |
| copyOnExchange (producer (advanced)) | このモックエンドポイントで受信したときに受信 Exchange のディープコピーを作成するかどうかを設定します。デフォルトでは true です。 | true | boolean |
29.6. DataSet の設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel は、DataSet インターフェイスを実装する Bean をレジストリーで検索します。したがって、独自の DataSet を次のように登録できます。
<bean id="myDataSet" class="com.mycompany.MyDataSet">
<property name="size" value="100"/>
</bean>
29.7. 例 リンクのコピーリンクがクリップボードにコピーされました!
たとえば、一連のメッセージがキューに送信され、メッセージを失うことなくキューから消費されることをテストするには、次のようにします。
// send the dataset to a queue
from("dataset:foo").to("activemq:SomeQueue");
// now lets test that the messages are consumed correctly
from("activemq:SomeQueue").to("dataset:foo");
上記は、レジストリーを調べて、メッセージの作成に使用される foo DataSet インスタンスを見つけます。
次に、以下で説明するように SimpleDataSet を使用して DataSet 実装を作成し、データセットの大きさやメッセージの外観などを設定します。
29.8. DataSetSupport (抽象クラス) リンクのコピーリンクがクリップボードにコピーされました!
DataSetSupport 抽象クラスは、新しい DataSet の出発点として最適であり、派生クラスにいくつかの便利な機能を提供します。
29.8.1. DataSetSupport のプロパティー リンクのコピーリンクがクリップボードにコピーされました!
| プロパティー | 型 | デフォルト | 説明 |
|---|---|---|---|
|
|
|
|
デフォルトのメッセージ本文を指定します。SimpleDataSet の場合、これは一定のペイロードです。ただし、メッセージごとにカスタムペイロードを作成する場合は、 |
|
|
| null | |
|
|
|
| 送信/消費するメッセージの数を指定します。 |
|
|
|
|
進行状況を報告する前に受信するメッセージの数を指定します。大規模な負荷テストの進行状況を表示するのに役立ちます。< 0 の場合は |
29.9. SimpleDataSet リンクのコピーリンクがクリップボードにコピーされました!
SimpleDataSet は DataSetSupport を拡張し、デフォルトの本文を追加します。
29.9.1. SimpleDataSet の追加プロパティー リンクのコピーリンクがクリップボードにコピーされました!
| プロパティー | 型 | デフォルト | 説明 |
|---|---|---|---|
|
|
|
|
デフォルトのメッセージ本文を指定します。デフォルトでは、 |
29.10. ListDataSet リンクのコピーリンクがクリップボードにコピーされました!
List`DataSet` は DataSetSupport を拡張し、デフォルトボディのリストを追加します。
29.10.1. ListDataSet の追加プロパティー リンクのコピーリンクがクリップボードにコピーされました!
| プロパティー | 型 | デフォルト | 説明 |
|---|---|---|---|
|
|
|
|
デフォルトのメッセージ本文を指定します。デフォルトでは、 |
|
|
| defaultBodies リストのサイズ |
送信/消費するメッセージの数を指定します。この値は、 |
29.11. FileDataSet リンクのコピーリンクがクリップボードにコピーされました!
FileDataSet は ListDataSet を拡張し、ファイルから本文をロードするためのサポートを追加します。
29.11.1. FileDataSet の追加プロパティー リンクのコピーリンクがクリップボードにコピーされました!
| プロパティー | 型 | デフォルト | 説明 |
|---|---|---|---|
|
|
| null | ペイロードのソースファイルを指定します |
|
|
| \z |
ファイルを複数のペイロードに分割するために |
29.12. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 11 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.dataset-test.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.dataset-test.enabled | dataset-test コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.dataset-test.exchange-formatter | カスタム ExchangeFormatter を設定して、Exchange をログに適した文字列に変換します。指定しない場合は、デフォルトで DefaultExchangeFormatter になります。オプションは org.apache.camel.spi.ExchangeFormatter タイプです。 | ExchangeFormatter | |
| camel.component.dataset-test.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.dataset-test.log | モックが着信メッセージを受信したときにロギングをオンにします。これは、着信メッセージの INFO レベルで 1 回だけログに記録されます。より詳細なログを取得するには、ロガーを org.apache.camel.component.mock.MockEndpoint クラスの DEBUG レベルに設定します。 | false | Boolean |
| camel.component.dataset.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.dataset.bridge-error-handler | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | Boolean |
| camel.component.dataset.enabled | データセットコンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.dataset.exchange-formatter | カスタム ExchangeFormatter を設定して、Exchange をログに適した文字列に変換します。指定しない場合は、デフォルトで DefaultExchangeFormatter になります。オプションは org.apache.camel.spi.ExchangeFormatter タイプです。 | ExchangeFormatter | |
| camel.component.dataset.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.dataset.log | モックが着信メッセージを受信したときにロギングをオンにします。これは、着信メッセージの INFO レベルで 1 回だけログに記録されます。より詳細なログを取得するには、ロガーを org.apache.camel.component.mock.MockEndpoint クラスの DEBUG レベルに設定します。 | false | Boolean |
第30章 Direct リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
Direct コンポーネント producer がメッセージエクスチェンジを送信する際に、コンポーネントは consumer を直接、同期呼び出しを提供します。
このエンドポイントは、同じ Camel コンテキストの既存ルートを接続するために使用できます。
Asynchronous
SEDA コンポーネントは、プロデューサーがメッセージエクスチェンジを送信するときに、任意のコンシューマーの非同期呼び出しを提供します。
30.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で direct を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-direct-starter</artifactId>
</dependency>
30.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
direct:someName[?options]
someName は、エンドポイントを一意に識別する任意の文字列にすることができます。
30.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
30.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
30.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
30.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
Direct コンポーネントは、以下に示す 5 つのオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| block (producer) | アクティブな consumer を持たない direct エンドポイントにメッセージを送信する場合、ブロックして consumer がアクティブになるのを待つよう producer に指示できます。 | true | boolean |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| timeout (producer) | ブロックが有効な場合に使用するタイムアウト値。 | 30000 | long |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
30.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Direct エンドポイントは、URI 構文を使用して設定されます。
direct:name
パスおよびクエリーパラメーターを使用します。
30.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| name (common) | 必須 direct エンドポイントの名前 | String |
30.5.2. クエリーパラメーター (8 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| exceptionHandler (consumer (advanced)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (advanced)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| block (producer) | アクティブな consumer を持たない direct エンドポイントにメッセージを送信する場合、ブロックして consumer がアクティブになるのを待つよう producer に指示できます。 | true | boolean |
| failIfNoConsumers (producer) | アクティブな consumer のない DIRECT エンドポイントに送信するときに、producer が例外を出力して失敗するかどうか。 | true | boolean |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| timeout (producer) | ブロックが有効な場合に使用するタイムアウト値。 | 30000 | long |
| synchronous (advanced) | 同期処理を強制するかどうか。有効にすると、producer スレッドは、同じスレッドが処理を続行する前に、メッセージが完了するまで強制的に待機します。無効 (デフォルト) にすると、producer スレッドは解放され、他のスレッドが引き続きメッセージを処理する間、別の作業を行うことができます (リアクティブ)。 | false | boolean |
30.6. サンプル リンクのコピーリンクがクリップボードにコピーされました!
以下のルートでは、direct コンポーネントを使用して 2 つのルートをリンクします。
from("activemq:queue:order.in")
.to("bean:orderServer?method=validate")
.to("direct:processOrder");
from("direct:processOrder")
.to("bean:orderService?method=process")
.to("activemq:queue:order.out");
Spring DSL を使用した例:
<route>
<from uri="activemq:queue:order.in"/>
<to uri="bean:orderService?method=validate"/>
<to uri="direct:processOrder"/>
</route>
<route>
<from uri="direct:processOrder"/>
<to uri="bean:orderService?method=process"/>
<to uri="activemq:queue:order.out"/>
</route>
SEDA コンポーネントの例も参照し、どのように併用できるか確認してください。
30.7. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に示す 6 つのオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.direct.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.direct.block | アクティブな consumer を持たない direct エンドポイントにメッセージを送信する場合、ブロックして consumer がアクティブになるのを待つよう producer に指示できます。 | true | Boolean |
| camel.component.direct.bridge-error-handler | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | Boolean |
| camel.component.direct.enabled | direct コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.direct.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.direct.timeout | ブロックが有効な場合に使用するタイムアウト値。 | 30000 | Long |
第31章 Elasticsearch リンクのコピーリンクがクリップボードにコピーされました!
Since Camel 3.18.3
producer のみサポート対象
ElasticSearch コンポーネントを使用すると、Java API クライアントライブラリーを使用して ElasticSearch 8.x API とやり取りできます。
31.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で elasticsearch を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-elasticsearch-starter</artifactId>
</dependency>
31.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
elasticsearch://clusterName[?options]
31.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
31.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
31.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
31.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
Elasticsearch コンポーネントは、以下にリストされている 14 個のオプションをサポートしています。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| connectionTimeout (producer) | 接続がタイムアウトするまでのミリ秒単位の待機時間。 | 30000 | int |
| hostAddresses (producer) | 使用する ip:port 形式のリモートトランスポートアドレスを含むコンマ区切りのリスト。代わりに hostAddresses が考慮されるようにするには、ip オプションと port オプションを空白のままにする必要があります。 | String | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| maxRetryTimeout (producer) | 再試行までの時間 (ミリ秒)。 | 30000 | int |
| socketTimeout (producer) | ソケットがタイムアウトする前に待機するミリ秒単位のタイムアウト。 | 30000 | int |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| client (advanced) | Autowired エンドポイントごとにクライアントを作成する代わりに、既存の設定済み Elasticsearch クライアントを使用するには。これにより、特定の設定でクライアントをカスタマイズできます。 | RestClient | |
| enableSniffer (advanced) | 実行中の Elasticsearch クラスターからのノードの自動検出を有効にする。このオプションを Spring Boot と組み合わせて使用する場合、Spring Boot 設定によって管理されます (Spring Boot でスニファーを無効にするを参照)。 | false | boolean |
| sniffAfterFailureDelay (advanced) | 失敗後にスケジュールされたスニファ実行の遅延 (ミリ秒単位)。 | 60000 | int |
| snifferInterval (advanced) | 通常のスニファを連続して実行する間隔 (ミリ秒単位)。sniffOnFailure が無効になっている場合、または連続するスニファ実行の間に失敗がない場合に受け入れられます。 | 300000 | int |
| certificatePath (security) | Elasticsearch へのアクセスに使用する自己署名証明書のパス。 | String | |
| enableSSL (security) | SSL の有効化。 | false | boolean |
| password (security) | 認証用パスワード。 | String | |
| user (security) | 基本認証ユーザー。 | String |
31.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Elasticsearch エンドポイントは、URI 構文を使用して設定されます。
elasticsearch:clusterName
パスおよびクエリーパラメーターを使用します。
31.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| clusterName (producer) | 必須 クラスターの名前。 | String |
31.5.2. クエリーパラメーター (19 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| connectionTimeout (producer) | 接続がタイムアウトするまでのミリ秒単位の待機時間。 | 30000 | int |
| disconnect (producer) | producer の呼び出しが終了したら切断します。 | false | boolean |
| from (producer) | 応答の開始インデックス。 | Integer | |
| hostAddresses (producer) | 使用する ip:port 形式のリモートトランスポートアドレスを含むコンマ区切りのリスト。 | String | |
| indexName (producer) | 動作させるインデックスの名前。 | String | |
| maxRetryTimeout (producer) | 再試行までの時間 (ミリ秒)。 | 30000 | int |
| operation (producer) | 実行する操作。 列挙値:
| ElasticsearchOperation | |
| scrollKeepAliveMs (producer) | Elasticsearch が検索コンテキストを維持するミリ秒単位の時間。 | 60000 | int |
| size (producer) | レスポンスのサイズ。 | Integer | |
| socketTimeout (producer) | ソケットがタイムアウトする前に待機するミリ秒単位のタイムアウト。 | 30000 | int |
| useScroll (producer) | スクロールの使用を有効にする。 | false | boolean |
| waitForActiveShards (producer) | インデックスの作成は、シャードの書き込み整合性数が使用可能になるまで待機します。 | 1 | int |
| lazyStartProducer (producer (advanced)) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| documentClass (advanced) | ドキュメントを逆シリアル化するときに使用するクラス。 | ObjectNode | クラス |
| enableSniffer (advanced) | 実行中の Elasticsearch クラスターからのノードの自動検出を有効にする。このオプションを Spring Boot と組み合わせて使用する場合、Spring Boot 設定によって管理されます (Spring Boot でスニファーを無効にするを参照)。 | false | boolean |
| sniffAfterFailureDelay (advanced) | 失敗後にスケジュールされたスニファ実行の遅延 (ミリ秒単位)。 | 60000 | int |
| snifferInterval (advanced) | 通常のスニファを連続して実行する間隔 (ミリ秒単位)。sniffOnFailure が無効になっている場合、または連続するスニファ実行の間に失敗がない場合に受け入れられます。 | 300000 | int |
| certificatePath (security) | Elasticsearch へのアクセスに使用する自己署名証明書のパス。 | String | |
| enableSSL (security) | SSL の有効化。 | false | boolean |
31.6. メッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
Elasticsearch コンポーネントは、以下にリストされている 9 個のメッセージヘッダーをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| operation (producer) 定数: PARAM_OPERATION | 実行する操作。 列挙値:
| ElasticsearchOperation | |
| indexId (producer) 定数: PARAM_INDEX_ID | インデックス付けされたドキュメントの ID。 | String | |
| indexName (producer) 定数: PARAM_INDEX_NAME | 動作させるインデックスの名前。 | String | |
| documentClass (producer) | アンマーシャリングするドキュメントのクラスの完全修飾名。 | ObjectNode | クラス |
| waitForActiveShards (producer) | インデックスの作成は、シャードの書き込み整合性数が使用可能になるまで待機します | Integer | |
| scrollKeepAliveMs (producer) | 応答の開始インデックス。 | Integer | |
| useScroll (producer) 定数: PARAM_SCROLL | スクロールの使用を有効にするには、true に設定します。 | Boolean | |
| size (producer) 定数: PARAM_SIZE | レスポンスのサイズ。 | Integer | |
| from (producer) 定数: PARAM_FROM | 応答の開始インデックス。 | Integer |
31.7. メッセージ操作 リンクのコピーリンクがクリップボードにコピーされました!
現在、次の ElasticSearch 操作がサポートされています。"操作" のキーと次のいずれかに設定された値を使用して、エンドポイント URI オプションまたはエクスチェンジヘッダーを設定するだけです。一部の操作では、他のパラメーターまたはメッセージ本文を設定する必要もあります。
| operation | メッセージボディー | description |
|---|---|---|
| Index | Map、String、byte[]、Reader、InputStream または IndexRequest.Builder コンテンツをインデックスに登録する | コンテンツをインデックスに追加し、本文でコンテンツの indexId を返します。キー "indexName" でメッセージヘッダーを設定することにより、ターゲットインデックスの名前を設定できます。メッセージヘッダーにキー "indexId" を設定することで、indexId を設定できます。 |
| GetById | 取得するコンテンツの 文字列 または GetRequest.Builder インデックス ID | 指定されたインデックス ID に対応するドキュメントを取得し、本文で GetResponse オブジェクトを返します。キー "indexName" でメッセージヘッダーを設定することにより、ターゲットインデックスの名前を設定できます。キー "documentClass" でメッセージヘッダーを設定することにより、ドキュメントのタイプを設定できます。 |
| Delete | 削除するコンテンツの 文字列 または DeleteRequest.Builder インデックス ID | 指定された indexName を削除し、本文で Result オブジェクトを返します。キー "indexName" でメッセージヘッダーを設定することにより、ターゲットインデックスの名前を設定できます。 |
| DeleteIndex | 削除するインデックスの 文字列 または DeleteIndexRequest.Builder インデックス名 | 指定された indexName を削除し、本文でステータスコードを返します。キー "indexName" でメッセージヘッダーを設定することにより、ターゲットインデックスの名前を設定できます。 |
| バルク | すでに受け入れられている任意のタイプの Iterable または BulkRequest.Builder (削除操作の場合は DeleteOperation.Builder、更新操作の場合は UpdateOperation.Builder、作成操作の場合は CreateOperation.Builder、byte[]、InputStream、String、Reader、Map、または任意のドキュメントタイプインデックス操作) | インデックスに対してコンテンツを追加/更新/削除し、本文に List<BulkResponseItem> オブジェクトを返します。キー "indexName" でメッセージヘッダーを設定することにより、ターゲットインデックスの名前を設定できます。 |
| Search | Map、文字列 または SearchRequest.Builder | クエリー文字列のマップでコンテンツを検索します。キー "indexName" でメッセージヘッダーを設定することにより、ターゲットインデックスの名前を設定できます。キー "サイズ" でメッセージヘッダーを設定することで、返すヒット数を設定できます。キー "from" を使用してメッセージヘッダーを設定することにより、開始ドキュメントオフセットを設定できます。 |
| MultiSearch | MsearchRequest.Builder | 一度に複数の検索 |
| MultiGet | Iterable<String> または MgetRequest.Builder 取得するドキュメントの ID | 複数が 1 つに収まる キー "indexName" でメッセージヘッダーを設定することにより、ターゲットインデックスの名前を設定できます。 |
| Exists | なし | インデックスが存在するかどうかを確認し、本文に Boolean フラグを返します。 キー "indexName" を使用してメッセージヘッダーを設定することにより、ターゲットインデックスの名前を設定する必要があります。 |
| 更新 | byte[]、InputStream、String、Reader、Map、または更新するドキュメントタイプのコンテンツ | コンテンツをインデックスに更新し、本文でコンテンツの indexId を返します。キー "indexName" でメッセージヘッダーを設定することにより、ターゲットインデックスの名前を設定できます。メッセージヘッダーにキー "indexId" を設定することで、indexId を設定できます。 |
| Ping | なし | Elasticsearch クラスターに ping を実行し、ping が成功した場合は true、それ以外の場合は false を返します。 |
31.8. コンポーネントを設定して基本認証を有効にする リンクのコピーリンクがクリップボードにコピーされました!
Elasticsearch コンポーネントを使用するには、最小構成で設定する必要があります。
ElasticsearchComponent elasticsearchComponent = new ElasticsearchComponent();
elasticsearchComponent.setHostAddresses("myelkhost:9200");
camelContext.addComponent("elasticsearch", elasticsearchComponent);
Elasticsearch を使用した基本認証、または Elasticsearch クラスターの前でリバース HTTP プロキシーを使用する場合は、以下の例のようにコンポーネントで基本認証と SSL をセットアップするだけです。
ElasticsearchComponent elasticsearchComponent = new ElasticsearchComponent();
elasticsearchComponent.setHostAddresses("myelkhost:9200");
elasticsearchComponent.setUser("elkuser");
elasticsearchComponent.setPassword("secure!!");
elasticsearchComponent.setEnableSSL(true);
elasticsearchComponent.setCertificatePath(certPath);
camelContext.addComponent("elasticsearch", elasticsearchComponent);
31.9. インデックスの例 リンクのコピーリンクがクリップボードにコピーされました!
以下は単純な INDEX の例です
from("direct:index")
.to("elasticsearch://elasticsearch?operation=Index&indexName=twitter");
<route>
<from uri="direct:index"/>
<to uri="elasticsearch://elasticsearch?operation=Index&indexName=twitter"/>
</route>
この操作では、indexId ヘッダーを指定する必要があります。
クライアントは、Map を含む本文メッセージをルートに渡すだけで済みます。結果の本文には、作成された indexId が含まれます。
Map<String, String> map = new HashMap<String, String>();
map.put("content", "test");
String indexId = template.requestBody("direct:index", map, String.class);
31.10. 検索例 リンクのコピーリンクがクリップボードにコピーされました!
特定のフィールドと値を検索するには、検索操作を使用します。クエリーの JSON 文字列またはマップを渡します
from("direct:search")
.to("elasticsearch://elasticsearch?operation=Search&indexName=twitter");
<route>
<from uri="direct:search"/>
<to uri="elasticsearch://elasticsearch?operation=Search&indexName=twitter"/>
</route>
String query = "{\"query\":{\"match\":{\"doc.content\":\"new release of ApacheCamel\"}}}";
HitsMetadata<?> response = template.requestBody("direct:search", query, HitsMetadata.class);
マップを使用して特定のフィールドを検索します。
Map<String, Object> actualQuery = new HashMap<>();
actualQuery.put("doc.content", "new release of ApacheCamel");
Map<String, Object> match = new HashMap<>();
match.put("match", actualQuery);
Map<String, Object> query = new HashMap<>();
query.put("query", match);
HitsMetadata<?> response = template.requestBody("direct:search", query, HitsMetadata.class);
すべての結果を取得するには、Elasticsearch スクロール API を使用して検索します。
from("direct:search")
.to("elasticsearch://elasticsearch?operation=Search&indexName=twitter&useScroll=true&scrollKeepAliveMs=30000");
<route>
<from uri="direct:search"/>
<to uri="elasticsearch://elasticsearch?operation=Search&indexName=twitter&useScroll=true&scrollKeepAliveMs=30000"/>
</route>
String query = "{\"query\":{\"match\":{\"doc.content\":\"new release of ApacheCamel\"}}}";
try (ElasticsearchScrollRequestIterator response = template.requestBody("direct:search", query, ElasticsearchScrollRequestIterator.class)) {
// do something smart with results
}
以下も使用できます。
from("direct:search")
.to("elasticsearch://elasticsearch?operation=Search&indexName=twitter&useScroll=true&scrollKeepAliveMs=30000")
.split()
.body()
.streaming()
.to("mock:output")
.end();
31.11. マルチサーチの例 リンクのコピーリンクがクリップボードにコピーされました!
特定のフィールドと値に対する MultiSearching は、Operation 'MultiSearch' を使用します。MultiSearchRequest インスタンスを渡す
from("direct:multiSearch")
.to("elasticsearch://elasticsearch?operation=MultiSearch");
<route>
<from uri="direct:multiSearch"/>
<to uri="elasticsearch://elasticsearch?operation=MultiSearch"/>
</route>
特定のフィールドでの MultiSearch
MsearchRequest.Builder builder = new MsearchRequest.Builder().index("twitter").searches(
new RequestItem.Builder().header(new MultisearchHeader.Builder().build())
.body(new MultisearchBody.Builder().query(b -> b.matchAll(x -> x)).build()).build(),
new RequestItem.Builder().header(new MultisearchHeader.Builder().build())
.body(new MultisearchBody.Builder().query(b -> b.matchAll(x -> x)).build()).build());
List<MultiSearchResponseItem<?>> response = template.requestBody("direct:multiSearch", builder, List.class);
31.12. ドキュメントタイプ リンクのコピーリンクがクリップボードにコピーされました!
すべての検索操作で、取得するドキュメントのタイプを指定して、予想されるタイプで非整列化された結果を取得することができます。
ドキュメントタイプは、ヘッダー "documentClass" を使用するか、同じ名前の uri パラメーターを介して設定できます。
31.13. Spring Boot で Camel Elasticsearch を使用する リンクのコピーリンクがクリップボードにコピーされました!
Spring Boot v2 で camel-elasticsearch-starter を使用する場合、独自の pom.xml で次の依存関係を宣言する必要があります。
<dependency>
<groupId>jakarta.json</groupId>
<artifactId>jakarta.json-api</artifactId>
<version>2.0.2</version>
</dependency>
これが必要なのは、Spring Boot v2 が jakarta.json-api:1.1.6 を提供し、Elasticsearch が json-api v2 を使用する必要があるためです。
31.13.1. Spring Boot が提供する RestClient を使用する リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Spring Boot は camel によって使用される Elasticsearch RestClient を自動設定します。次の基本プロパティーを使用してクライアントをカスタマイズできます。
spring.elasticsearch.uris=myelkhost:9200
spring.elasticsearch.username=elkuser
spring.elasticsearch.password=secure!!
詳細は、application-properties.data.spring.elasticsearch.connection-timeout を参照してください。
31.13.2. Spring Boot 使用時に Sniffer を無効にする リンクのコピーリンクがクリップボードにコピーされました!
Spring Boot が classpath 上にある場合、Elasticsearch の Sniffer クライアントはデフォルトで有効になっています。このオプションは、Spring Boot 設定で無効にすることができます。
spring:
autoconfigure:
exclude: org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration
31.14. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 15 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.elasticsearch.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.elasticsearch.certificate-path | Elasticsearch へのアクセスに使用する自己署名証明書のパス。 | String | |
| camel.component.elasticsearch.client | エンドポイントごとにクライアントを作成する代わりに、既存の設定済み Elasticsearch クライアントを使用するには。これにより、特定の設定でクライアントをカスタマイズできます。オプションは org.elasticsearch.client.RestClient タイプです。 | RestClient | |
| camel.component.elasticsearch.connection-timeout | 接続がタイムアウトするまでのミリ秒単位の待機時間。 | 30000 | Integer |
| camel.component.elasticsearch.enable-s-s-l | SSL の有効化。 | false | Boolean |
| camel.component.elasticsearch.enable-sniffer | 実行中の Elasticsearch クラスターからのノードの自動検出を有効にする。このオプションを Spring Boot と組み合わせて使用する場合、Spring Boot 設定によって管理されます (Spring Boot でスニファーを無効にするを参照)。 | false | Boolean |
| camel.component.elasticsearch.enabled | elasticsearch コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.elasticsearch.host-addresses | 使用する ip:port 形式のリモートトランスポートアドレスを含むコンマ区切りのリスト。代わりに hostAddresses が考慮されるようにするには、ip オプションと port オプションを空白のままにする必要があります。 | String | |
| camel.component.elasticsearch.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.elasticsearch.max-retry-timeout | 再試行までの時間 (ミリ秒)。 | 30000 | Integer |
| camel.component.elasticsearch.password | 認証用パスワード。 | String | |
| camel.component.elasticsearch.sniff-after-failure-delay | 失敗後にスケジュールされたスニファ実行の遅延 (ミリ秒単位)。 | 60000 | Integer |
| camel.component.elasticsearch.sniffer-interval | 通常のスニファを連続して実行する間隔 (ミリ秒単位)。sniffOnFailure が無効になっている場合、または連続するスニファ実行の間に失敗がない場合に受け入れられます。 | 300000 | Integer |
| camel.component.elasticsearch.socket-timeout | ソケットがタイムアウトする前に待機するミリ秒単位のタイムアウト。 | 30000 | Integer |
| camel.component.elasticsearch.user | 基本認証ユーザー。 | String |
第32章 ExchangeProperty リンクのコピーリンクがクリップボードにコピーされました!
ExchangeProperty 式言語を使用すると、名前付きエクスチェンジプロパティーの値を抽出できます。
32.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
ExchangeProperty 言語は camel-core の一部です。
Red Hat build of Camel Spring Boot で exchangeProperty を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-core-starter</artifactId>
</dependency>
32.2. Exchange Property のオプション リンクのコピーリンクがクリップボードにコピーされました!
ExchangeProperty 言語は、以下にリストされている 1 つのオプションをサポートしています。
| 名前 | デフォルト | Java タイプ | 説明 |
|---|---|---|---|
| trim |
| 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 |
32.3. 例 リンクのコピーリンクがクリップボードにコピーされました!
recipientList EIP は、次のような exchangeProperty を利用できます。
<route>
<from uri="direct:a" />
<recipientList>
<exchangeProperty>myProperty</exchangeProperty>
</recipientList>
</route>
この場合、受信者のリストはプロパティ ('myProperty') に含まれています。
Java DSL での同じ例:
from("direct:a").recipientList(exchangeProperty("myProperty"));
32.4. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 147 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.cloud.consul.service-discovery.acl-token | Consul で使用する ACL トークンを設定します。 | String | |
| camel.cloud.consul.service-discovery.block-seconds | 監視イベントを待機する秒数。デフォルトは 10 秒です。 | 10 | Integer |
| camel.cloud.consul.service-discovery.configurations | 追加の設定定義を定義します。 | Map | |
| camel.cloud.consul.service-discovery.connect-timeout-millis | OkHttpClient の接続タイムアウト。 | Long | |
| camel.cloud.consul.service-discovery.datacenter | データセンター。 | String | |
| camel.cloud.consul.service-discovery.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.cloud.consul.service-discovery.password | 基本認証に使用するパスワードを設定します。 | String | |
| camel.cloud.consul.service-discovery.properties | 使用するクライアントプロパティーを設定します。これらのプロパティーは、使用中のサービスコールの実装に固有です。たとえば、リボンを使用していると、クライアントプロパティーは com.netflix.client.config.CommonClientConfigKey で定義されます。 | Map | |
| camel.cloud.consul.service-discovery.read-timeout-millis | OkHttpClient の読み取りタイムアウト。 | Long | |
| camel.cloud.consul.service-discovery.url | Consul エージェントの URL。 | String | |
| camel.cloud.consul.service-discovery.user-name | Basic 認証に使用するユーザー名を設定します。 | String | |
| camel.cloud.consul.service-discovery.write-timeout-millis | OkHttpClient の書き込みタイムアウト。 | Long | |
| camel.cloud.dns.service-discovery.configurations | 追加の設定定義を定義します。 | Map | |
| camel.cloud.dns.service-discovery.domain | ドメイン名;. | String | |
| camel.cloud.dns.service-discovery.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.cloud.dns.service-discovery.properties | 使用するクライアントプロパティーを設定します。これらのプロパティーは、使用中のサービスコールの実装に固有です。たとえば、リボンを使用していると、クライアントプロパティーは com.netflix.client.config.CommonClientConfigKey で定義されます。 | Map | |
| camel.cloud.dns.service-discovery.proto | 目的のサービスのトランスポートプロトコル。 | _tcp | String |
| camel.cloud.etcd.service-discovery.configurations | 追加の設定定義を定義します。 | Map | |
| camel.cloud.etcd.service-discovery.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.cloud.etcd.service-discovery.password | 基本認証に使用するパスワード。 | String | |
| camel.cloud.etcd.service-discovery.properties | 使用するクライアントプロパティーを設定します。これらのプロパティーは、使用中のサービスコールの実装に固有です。たとえば、リボンを使用していると、クライアントプロパティーは com.netflix.client.config.CommonClientConfigKey で定義されます。 | Map | |
| camel.cloud.etcd.service-discovery.service-path | サービス検出のために探すパス。 | /services/ | String |
| camel.cloud.etcd.service-discovery.timeout | アクションが完了するまでにかかる最大時間を設定します。 | Long | |
| camel.cloud.etcd.service-discovery.type | 検出タイプを設定するには、有効な値はオンデマンドとウォッチです。 | オンデマンド | String |
| camel.cloud.etcd.service-discovery.uris | クライアントが接続できる URI。 | String | |
| camel.cloud.etcd.service-discovery.user-name | 基本認証に使用するユーザー名。 | String | |
| camel.cloud.kubernetes.service-discovery.api-version | クライアントルックアップを使用する場合の API バージョンを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.ca-cert-data | クライアントルックアップをする際に使用する認証局データを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.ca-cert-file | クライアントルックアップをする際にファイルからロードされる認証局データを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-cert-data | クライアントルックアップをする際に使用するクライアント証明書データを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-cert-file | クライアントルックアップをする際にファイルからロードされるクライアント証明書データを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-key-algo | クライアントルックアップをする際に使用する、RSA などのクライアントキーストアアルゴリズムを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-key-data | クライアントルックアップをする際に使用する、クライアントキーストアデータを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-key-file | クライアントルックアップをする際にファイルからロードされるクライアントキーストアデータを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-key-passphrase | クライアントルックアップをする際に使用する、クライアントキーストアパスフレーズを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.configurations | 追加の設定定義を定義します。 | Map | |
| camel.cloud.kubernetes.service-discovery.dns-domain | DNS ルックアップに使用する DNS ドメインを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.cloud.kubernetes.service-discovery.lookup | サービスルックアップの実行方法。可能な値: client、dns、environment。クライアントを使用する場合、クライアントは kubernetes マスターにクエリーを実行して、サービスを提供するアクティブな Pod のリストを取得し、Pod をランダム (またはラウンドロビン) に選択します。DNS を使用する場合、サービス名は name.namespace.svc.dnsDomain として解決されます。dnssrv を使用する場合、サービス名は、.…svc…の SRV クエリーで解決されます。環境を使用する場合は、環境変数を使用してサービスを検索します。デフォルトの環境が使用されます。 | environment | String |
| camel.cloud.kubernetes.service-discovery.master-url | クライアントルックアップを使用するときに URL をマスターに設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.namespace | 使用する名前空間を設定します。デフォルトでは、ENV 変数 KUBERNETES_MASTER の名前空間を使用します。 | String | |
| camel.cloud.kubernetes.service-discovery.oauth-token | クライアントルックアップを使用する際に (ユーザー名/パスワードの代わりに) 認証用の OAUTH トークンを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.password | クライアントルックアップを使用する際に使用する、認証パスワードを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.port-name | DNS/DNSSRV ルックアップに使用するポート名を設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.port-protocol | DNS/DNSSRV ルックアップに使用するポートプロトコルを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.properties | 使用するクライアントプロパティーを設定します。これらのプロパティーは、使用中のサービスコールの実装に固有です。たとえば、リボンを使用していると、クライアントプロパティーは com.netflix.client.config.CommonClientConfigKey で定義されます。 | Map | |
| camel.cloud.kubernetes.service-discovery.trust-certs | クライアントルックアップを使用する際に使用する、トラスト証明書のチェックを有効にするかどうかを設定します。 | false | Boolean |
| camel.cloud.kubernetes.service-discovery.username | クライアントルックアップを使用する際に使用する、認証ユーザー名を設定します。 | String | |
| camel.cloud.ribbon.load-balancer.client-name | リボンクライアント名を設定します。 | String | |
| camel.cloud.ribbon.load-balancer.configurations | 追加の設定定義を定義します。 | Map | |
| camel.cloud.ribbon.load-balancer.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.cloud.ribbon.load-balancer.namespace | namespace。 | String | |
| camel.cloud.ribbon.load-balancer.password | パスワード。 | String | |
| camel.cloud.ribbon.load-balancer.properties | 使用するクライアントプロパティーを設定します。これらのプロパティーは、使用中のサービスコールの実装に固有です。たとえば、リボンを使用していると、クライアントプロパティーは com.netflix.client.config.CommonClientConfigKey で定義されます。 | Map | |
| camel.cloud.ribbon.load-balancer.username | ユーザー名 | String | |
| camel.hystrix.allow-maximum-size-to-diverge-from-core-size | maximumSize の設定を有効にします。その値は、coreSize 以上にすることができます。 | false | Boolean |
| camel.hystrix.circuit-breaker-enabled | HystrixCircuitBreaker を使用するかどうか。false の場合、サーキットブレーカーロジックは使用されず、すべての要求が許可されます。これは実質的に circuitBreakerForceClosed() と似ていますが、メトリックの追跡を継続し、それを開閉する必要があるかどうかを認識しているため、このプロパティーによってサーキットブレーカーがインスタンス化されることもありません。 | true | Boolean |
| camel.hystrix.circuit-breaker-error-threshold-percentage | サーキットブレーカーが開いて要求を拒否するエラー率のしきい値 (50 などの整数)。circuitBreakerSleepWindowInMilliseconds で定義された期間、トリップしたままになります。これが比較されるエラーのパーセンテージは、HystrixCommandMetrics.getHealthCounts() から取得されます。 | 50 | Integer |
| camel.hystrix.circuit-breaker-force-closed | true の場合、HystrixCircuitBreaker#allowRequest() は常に true を返し、HystrixCommandMetrics.getHealthCounts() からのエラーパーセンテージに関係なくリクエストを許可します。circuitBreakerForceOpen() プロパティーが優先されるため、true に設定すると、このプロパティーは何もしません。 | false | Boolean |
| camel.hystrix.circuit-breaker-force-open | true の場合、HystrixCircuitBreaker.allowRequest() は常に false を返します。これにより、回路が開かれ (トリップされ)、すべての要求が拒否されます。このプロパティーは circuitBreakerForceClosed() よりも優先されます。 | false | Boolean |
| camel.hystrix.circuit-breaker-request-volume-threshold | HystrixCircuitBreaker が作動する前に存在しなければならない metricsRollingStatisticalWindowInMilliseconds() 内の要求の最小数。この数値を下回ると、エラーのパーセンテージに関係なく、回路はトリップしません。 | 20 | Integer |
| camel.hystrix.circuit-breaker-sleep-window-in-milliseconds | HystrixCircuitBreaker がトリップして開いてから、要求を再試行するまで待機する時間 (ミリ秒単位)。 | 5000 | Integer |
| camel.hystrix.configurations | 追加の設定定義を定義します。 | Map | |
| camel.hystrix.core-pool-size | java.util.concurrent.ThreadPoolExecutor#setCorePoolSize(int) に渡されるコアスレッドプールサイズ。 | 10 | Integer |
| camel.hystrix.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.hystrix.execution-isolation-semaphore-max-concurrent-requests | HystrixCommand.run() に許可された同時要求の数。同時制限を超えるリクエストは拒否されます。executionIsolationStrategy == SEMAPHORE の場合にのみ適用されます。 | 20 | Integer |
| camel.hystrix.execution-isolation-strategy | HystrixCommand.run() を実行する分離戦略。THREAD の場合は、別のスレッドで実行し、同時要求はスレッドプール内のスレッド数によって制限されます。SEMAPHORE の場合、呼び出しスレッドで実行し、同時要求はセマフォ数によって制限されます。 | スレッド | String |
| camel.hystrix.execution-isolation-thread-interrupt-on-timeout | スレッドがタイムアウトしたときに、実行スレッドが (Future#cancel を使用して) 割り込みを試みるかどうか。executionIsolationStrategy() == THREAD の場合にのみ適用されます。 | true | Boolean |
| camel.hystrix.execution-timeout-enabled | このコマンドのタイムアウトメカニズムを有効にするかどうか。 | true | Boolean |
| camel.hystrix.execution-timeout-in-milliseconds | コマンドがタイムアウトして実行を停止する時間 (ミリ秒単位)。executionIsolationThreadInterruptOnTimeout == true で、コマンドがスレッド分離されている場合、実行中のスレッドは中断されます。コマンドがセマフォ分離されており、HystrixObservableCommand である場合、そのコマンドはサブスクライブ解除されます。 | 1000 | Integer |
| camel.hystrix.fallback-enabled | 障害が発生したときに HystrixCommand.getFallback() を試行するかどうか。 | true | Boolean |
| camel.hystrix.fallback-isolation-semaphore-max-concurrent-requests | HystrixCommand.getFallback() に許可された同時要求の数。同時制限を超えるリクエストはフェールファストになり、フォールバックの取得は試行されません。 | 10 | Integer |
| camel.hystrix.group-key | 使用するグループキーを設定します。デフォルト値は、CamelHystrix です。 | CamelHystrix | String |
| camel.hystrix.keep-alive-time | ThreadPoolExecutor#setKeepAliveTime(long,TimeUnit) に渡されるキープアライブ時間 (分単位)。 | 1 | Integer |
| camel.hystrix.max-queue-size | HystrixConcurrencyStrategy.getBlockingQueue(int) で BlockingQueue に渡される最大キューサイズ。これは、スレッドプールのインスタンス化にのみ影響します。その場でキューサイズを変更することはできません。そのためには、queueSizeRejectionThreshold() を使用します。 | -1 | Integer |
| camel.hystrix.maximum-size | ThreadPoolExecutor#setMaximumPoolSize(int) に渡されるスレッドプールの最大サイズ。これは、HystrixCommands を拒否し始めることなくサポートできる同時実行の最大量です。この設定は、allowMaximumSizeToDivergeFromCoreSize も設定した場合にのみ有効になることに注意してください。 | 10 | Integer |
| camel.hystrix.metrics-health-snapshot-interval-in-milliseconds | 成功率とエラー率を計算し、HystrixCircuitBreaker.isOpen() ステータスに影響を与えるヘルススナップショットの取得を許可するまでの待機時間 (ミリ秒単位)。大量の回路では、エラーパーセンテージの継続的な計算によって CPU が集中的に使用される可能性があるため、これが計算の頻度を制御します。 | 500 | Integer |
| camel.hystrix.metrics-rolling-percentile-bucket-size | ローリングパーセンタイルの各バケットに格納される値の最大数。これは、HystrixCommandMetrics 内の HystrixRollingPercentile に渡されます。 | 10 | Integer |
| camel.hystrix.metrics-rolling-percentile-enabled | HystrixCommandMetrics 内の HystrixRollingPercentile を使用してパーセンタイルメトリックをキャプチャする必要があるかどうか。 | true | Boolean |
| camel.hystrix.metrics-rolling-percentile-window-buckets | ローリングパーセンテージウィンドウが分割されるバケットの数。これは、HystrixCommandMetrics 内の HystrixRollingPercentile に渡されます。 | 6 | Integer |
| camel.hystrix.metrics-rolling-percentile-window-in-milliseconds | ミリ秒単位のパーセンタイルローリングウィンドウの期間。これは、HystrixCommandMetrics 内の HystrixRollingPercentile に渡されます。 | 10000 | Integer |
| camel.hystrix.metrics-rolling-statistical-window-buckets | ローリング統計ウィンドウが分割されるバケットの数。これは、HystrixCommandMetrics 内の HystrixRollingNumber に渡されます。 | 10 | Integer |
| camel.hystrix.metrics-rolling-statistical-window-in-milliseconds | このプロパティーは、統計ローリングウィンドウの期間をミリ秒単位で設定します。スレッドプール用にメトリクスが保持される期間です。ウィンドウは、それらの増分によってバケットとロールに分割されます。 | 10000 | Integer |
| camel.hystrix.queue-size-rejection-threshold | キューサイズの拒否しきい値は、maxQueueSize に到達していない場合でも拒否できる人為的な最大キューサイズを設定します。これは、BlockingQueue の maxQueueSize を動的に変更することができず、拒否に影響するキューサイズの動的な変更をサポートするために行われます。これは、実行のためにスレッドをキューに入れるときに HystrixCommand によって使用されます。 | 5 | Integer |
| camel.hystrix.request-log-enabled | HystrixCommand の実行およびイベントを HystrixRequestLog に記録するべきかどうかを示します。 | true | Boolean |
| camel.hystrix.thread-pool-key | 使用するスレッドプールキーを設定します。デフォルトでは、groupKey が使用するように設定されているのと同じ値を使用します。 | CamelHystrix | String |
| camel.hystrix.thread-pool-rolling-number-statistical-window-buckets | ローリング統計ウィンドウが分割されるバケットの数。これは、各 HystrixThreadPoolMetrics インスタンス内の HystrixRollingNumber に渡されます。 | 10 | Integer |
| camel.hystrix.thread-pool-rolling-number-statistical-window-in-milliseconds | 統計ローリングウィンドウの期間をミリ秒単位で設定します。これは、各 HystrixThreadPoolMetrics インスタンス内の HystrixRollingNumber に渡されます。 | 10000 | Integer |
| camel.language.constant.enabled | 定数言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.constant.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.csimple.enabled | csimple 言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.csimple.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.exchangeproperty.enabled | exchangeProperty 言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.exchangeproperty.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.file.enabled | ファイル言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.file.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.header.enabled | ヘッダー言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.header.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.ref.enabled | ref 言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.ref.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.simple.enabled | 簡易言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.simple.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.tokenize.enabled | tokenize 言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.tokenize.group-delimiter | グループ化時に使用する区切り文字を設定します。これが設定されていない場合は、トークンが区切り文字として使用されます。 | String | |
| camel.language.tokenize.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.resilience4j.automatic-transition-from-open-to-half-open-enabled | waitDurationInOpenState が経過すると、OPEN から HALF_OPEN 状態への自動移行を有効にします。 | false | Boolean |
| camel.resilience4j.circuit-breaker-ref | レジストリーから検索して使用する既存の io.github.resilience4j.circuitbreaker.CircuitBreaker インスタンスを参照します。これを使用する場合、他のサーキットブレーカーオプションは使用されません。 | String | |
| camel.resilience4j.config-ref | レジストリーから検索して使用する既存の github.resilience4j.circuitbreaker.CircuitBreakerConfig インスタンスを参照します。 | String | |
| camel.resilience4j.configurations | 追加の設定定義を定義します。 | Map | |
| camel.resilience4j.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.resilience4j.failure-rate-threshold | 失敗率のしきい値をパーセンテージで設定します。失敗率がしきい値以上の場合、CircuitBreaker はオープンに移行し、コールのショートサーキットを開始します。しきい値は 0 より大きく 100 以下である必要があります。デフォルト値は 50% です。 | Float | |
| camel.resilience4j.minimum-number-of-calls | CircuitBreaker がエラー率を計算できるようになるまでに必要な (スライディングウィンドウ期間ごとの) 呼び出しの最小数を設定します。たとえば、minimumNumberOfCalls が 10 の場合、失敗率を計算するには、少なくとも 10 件の呼び出しが記録される必要があります。9 つのコールのみが記録されている場合、CircuitBreaker は 9 つのコールすべてが失敗した場合でもオープンに移行しません。デフォルトの minimumNumberOfCalls は 100 です。 | 100 | Integer |
| camel.resilience4j.permitted-number-of-calls-in-half-open-state | CircuitBreaker が半分開いているときに許可される呼び出しの数を設定します。サイズは 0 より大きくなければなりませんデフォルトのサイズは 10 です。 | 10 | Integer |
| camel.resilience4j.sliding-window-size | CircuitBreaker が閉じられたときに呼び出しの結果を記録するために使用されるスライディングウィンドウのサイズを設定します。slidingWindowSize は、スライディングウィンドウのサイズを設定します。スライディングウィンドウは、カウントベースまたは時間ベースのいずれかです。slidingWindowType が COUNT_BASED の場合、最後の slidingWindowSize 呼び出しが記録され、集計されます。slidingWindowType が TIME_BASED の場合は、最後の slidingWindowSize 秒の呼び出しが記録され、集計されます。slidingWindowSize は 0 より大きくなければなりません。minimumNumberOfCalls は 0 より大きくする必要があります。slidingWindowType が COUNT_BASED の場合、minimumNumberOfCalls を slidingWindowSize より大きくすることはできません。slidingWindowType が TIME_BASED の場合は、好きなものを選択できます。デフォルトの slidingWindowSize は 100 です。 | 100 | Integer |
| camel.resilience4j.sliding-window-type | CircuitBreaker が閉じられたときに呼び出しの結果を記録するために使用されるスライディングウィンドウのサイズを設定します。スライディングウィンドウは、カウントベースまたは時間ベースのいずれかです。slidingWindowType が COUNT_BASED の場合、最後の slidingWindowSize 呼び出しが記録され、集計されます。slidingWindowType が TIME_BASED の場合は、最後の slidingWindowSize 秒の呼び出しが記録され、集計されます。デフォルトの slidingWindowType は COUNT_BASED です。 | COUNT_BASED | String |
| camel.resilience4j.slow-call-duration-threshold | それを超えると呼び出しが低速と見なされ、低速呼び出しのパーセンテージが増加する期間のしきい値 (秒) を設定します。デフォルト値は 60 秒です。 | 60 | Integer |
| camel.resilience4j.slow-call-rate-threshold | パーセンテージでしきい値を設定します。CircuitBreaker は、呼び出し時間が slowCallDurationThreshold Duration よりも長い場合、呼び出しが遅いと見なします。失敗率がしきい値以上の場合、CircuitBreaker はオープンに移行し、ショートサーキット呼び出しを開始します。しきい値は 0 より大きく 100 以下である必要があります。デフォルト値は 100 パーセントです。これは、記録されたすべてのコールが slowCallDurationThreshold より遅くなければならないことを意味します。 | Float | |
| camel.resilience4j.wait-duration-in-open-state | ハーフオープンに切り替わる前に CircuitBreaker が開いたままになる時間を指定する待機期間 (秒単位) を設定します。デフォルト値は 60 秒です。 | 60 | Integer |
| camel.resilience4j.writable-stack-trace-enabled | 書き込み可能なスタックトレースを有効にします。false に設定すると、Exception.getStackTrace は長さゼロの配列を返します。これは、例外の原因がすでにわかっている (サーキットブレーカーが呼び出しを短絡している) ため、サーキットブレーカーが開いているときにログスパムを減らすために使用できます。 | true | Boolean |
| camel.rest.api-component | REST API として使用する Camel コンポーネントの名前 (swagger など)。API コンポーネントが明示的に設定されていない場合は、REST API ドキュメントのサービスおよび生成を担当する Camel コンポーネントがある場合、または org.apache.camel.spi.RestApiProcessorFactory がレジストリーに登録されているかどうかを調べます。いずれかが見つかった場合は、それが使用されています。 | String | |
| camel.rest.api-context-path | REST API サービスが使用する主要な API コンテキストパスを設定します。これは、デプロイされた Web アプリケーションがコンテキストパスを使用してデプロイされる camel-servlet などのコンポーネントを使用する場合に使用できます。 | String | |
| camel.rest.api-context-route-id | REST API にサービスを提供するルートに使用するルート ID を設定します。デフォルトでは、ルートは自動割り当てのルート ID を使用します。 | String | |
| camel.rest.api-host | API ドキュメント (swagger など) に特定のホスト名を使用するには、これを使用して、生成されたホストをこの設定済みホスト名でオーバーライドできます。 | String | |
| camel.rest.api-property | API ドキュメント (swagger) の追加プロパティーをできるだけ多く設定できます。たとえば、プロパティー api.title をクールスタッフに設定します。 | Map | |
| camel.rest.api-vendor-extension | Rest API でベンダー拡張機能が有効になっているかどうか。有効にすると、Camel はルート ID、クラス名などの追加情報をベンダー拡張 (x- で始まるキーなど) として含めます。API ドキュメントをインポートするときに、すべてのサードパーティー API ゲートウェイおよびツールがベンダー拡張をサポートしているわけではありません。 | false | Boolean |
| camel.rest.binding-mode | 使用するバインドモードを設定します。デフォルト値は off です。 | RestBindingMode | |
| camel.rest.client-request-validation | クライアント要求の検証を有効にして、クライアントからの Content-Type および Accept ヘッダーがその消費/生成設定の Rest-DSL 設定によってサポートされているかどうかを確認するかどうか。これをオンにして、このチェックを有効にすることができます。検証エラーの場合は、HTTP ステータスコード 415 または 406 が返されます。デフォルト値は false です。 | false | Boolean |
| camel.rest.component | netty-http、jetty、servlet、undertow などの REST トランスポート (consumer) に使用する Camel Rest コンポーネント。コンポーネントが明示的に設定されていない場合、Rest DSL と統合する Camel コンポーネントがある場合、または org.apache.camel.spi.RestConsumerFactory がレジストリーに登録されている場合、Camel はルックアップします。いずれかが見つかった場合は、それが使用されています。 | String | |
| camel.rest.component-property | 使用中の残りのコンポーネントの追加プロパティーをできるだけ多く設定できます。 | Map | |
| camel.rest.consumer-property | 使用中の残りの consumer の追加プロパティーをできるだけ多く設定できます。 | Map | |
| camel.rest.context-path | REST サービスが使用する主要なコンテキストパスを設定します。これは、デプロイされた Web アプリケーションがコンテキストパスを使用してデプロイされる camel-servlet などのコンポーネントを使用する場合に使用できます。または、HTTP サーバーを含む camel -jetty や camel-netty-http などのコンポーネントの場合。 | String | |
| camel.rest.cors-headers | カスタム CORS ヘッダーを設定できます。 | Map | |
| camel.rest.data-format-property | 使用中のデータ形式の追加プロパティーをできるだけ多く設定できます。たとえば、プロパティー prettyPrint を true に設定すると、json がプリティモードで出力されます。オプションが JSON または XML のいずれか、および IN または OUT のいずれか専用であることを示すために、プロパティーに接頭辞を付けることができます。接頭辞は、json.in.、json.out.、xml.in.、xml.out です。たとえば、値が xml.out.mustBeJAXBElement のキーは、送信用の XML データ形式専用です。接頭辞のないキーは、すべての状況で共通のキーです。 | Map | |
| camel.rest.enable-cors | HTTP 応答で CORS ヘッダーを有効にするかどうか。デフォルト値は false です。 | false | Boolean |
| camel.rest.endpoint-property | 使用中の残りのエンドポイントの追加プロパティーをできるだけ多く設定できます。 | Map | |
| camel.rest.host | REST サービスの公開に使用するホスト名。 | String | |
| camel.rest.host-name-resolver | ホスト名が明示的に設定されていない場合、このリゾルバーは、REST サービスが使用するホスト名を計算するために使用されます。 | RestHostNameResolver | |
| camel.rest.json-data-format | 使用する特定の json データ形式の名前。デフォルトでは json-jackson が使用されます。重要: このオプションは、データ形式のカスタム名を設定するためのものであり、既存のデータ形式インスタンスを参照するためのものではありません。 | String | |
| camel.rest.port | REST サービスの公開に使用するポート番号。サーブレットコンポーネントを使用する場合は、ここで設定したポート番号は適用されないことに注意してください。使用中のポート番号は、サーブレットコンポーネントが使用している実際のポート番号であるためです。たとえば、Apache Tomcat を使用する場合は Tomcat http ポート、Apache Karaf を使用する場合はデフォルトでポート 8181 を使用する Karaf の HTTP サービスなどです。このような状況では、ここでポート番号を設定すると、ツールと JMX がポート番号を認識できるようになるため、ポート番号をサーブレットエンジンが使用する番号に設定することを推奨します。 | String | |
| camel.rest.producer-api-doc | REST producer が REST uri を検証するために使用する API ドキュメント (swagger api) の場所を設定し、API ドキュメントに応じてクエリーパラメーターが有効です。これには、クラスパスに camel-swagger-java を追加する必要があり、設定に誤りがあると、Camel が起動時に失敗し、エラーが報告されます。API ドキュメントの場所はデフォルトでクラスパスから読み込まれますが、file: または http: を使用してリソースを参照し、ファイルまたは http url から読み込むことができます。 | String | |
| camel.rest.producer-component | REST producer として使用する Camel コンポーネントの名前を設定します。 | String | |
| camel.rest.scheme | REST サービスの公開に使用するスキーム。通常、http または https がサポートされます。デフォルト値は http です。 | String | |
| camel.rest.skip-binding-on-error-code | カスタム HTTP エラーコードヘッダーがある場合は、出力でバインディングをスキップするかどうか。これにより、json/xml などにバインドしないカスタムエラーメッセージを作成できます。それ以外の場合は成功メッセージが作成されます。 | false | Boolean |
| camel.rest.use-x-forward-headers | ホストおよび関連する設定に X-Forward ヘッダーを使用するかどうか。デフォルト値は true です。 | true | Boolean |
| camel.rest.xml-data-format | 使用する特定の XML データ形式の名前。デフォルトでは jaxb が使用されます。重要: このオプションは、データ形式のカスタム名を設定するためのものであり、既存のデータ形式インスタンスを参照するためのものではありません。 | String | |
| camel.rest.api-context-id-pattern | 非推奨 CamelContext ID パターンを設定して、名前がパターンに一致する CamelContext 内の REST サービスからの Rest API のみを許可します。パターン 名 は CamelContext 名を参照し、現在の CamelContext のみに一致します。その他の値の場合、パターンは PatternHelper#matchPattern (String,String) のルールを使用します。 | String | |
| camel.rest.api-context-listing | 非推奨 JVM で REST サービスを使用して使用可能なすべての CamelContext のリストを有効にするかどうかを設定します。有効にすると、これらのコンテキストを検出できます。false の場合、現在の CamelContext のみが使用されます。 | false | Boolean |
第33章 FHIR リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
FHIR コンポーネントは、Java での FHIR (Fast Healthcare Interoperability Resources) 仕様のオープンソース実装である HAPI-FHIR ライブラリーと統合されます。
33.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で fhir を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-fhir-starter</artifactId>
</dependency>
33.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
FHIR コンポーネントは、次の URI 形式を使用します。
fhir://endpoint-prefix/endpoint?[options]
エンドポイント接頭辞は次のいずれかです。
- capabilities
- create
- delete
- history
- load-page
- meta
- operation
- patch
- read
- search
- transaction
- update
- validate
33.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
33.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
33.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
33.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 27 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| encoding (common) | すべてのリクエストに使用するエンコーディング。 列挙値:
| String | |
| fhirVersion (common) | 使用する FHIR バージョン。 列挙値:
| R4 | String |
| log (common) | リクエストとレスポンスをすべてログに記録します。 | false | boolean |
| prettyPrint (common) | すべてのリクエストをきれいに印刷します。 | false | boolean |
| serverUrl (common) | FHIR サーバーのベース URL。 | String | |
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| client (advanced) | カスタムクライアントを使用します。 | IGenericClient | |
| clientFactory (advanced) | カスタムクライアントファクトリーを使用します。 | IRestfulClientFactory | |
| compress (advanced) | 発信 (POST/PUT) コンテンツを GZIP 形式に圧縮します。 | false | boolean |
| configuration (advanced) | 共有設定を使用するには、以下を行います。 | FhirConfiguration | |
| connectionTimeout (advanced) | 初期 TCP 接続の試行と確立にかかる時間 (ミリ秒)。 | 10000 | Integer |
| deferModelScanning (advanced) | このオプションが設定されている場合は、指定されたタイプの子リストが実際にアクセスされるまで、モデルクラスの子はスキャンされません。 | false | boolean |
| fhirContext (advanced) | FhirContext は、作成するのにコストのかかるオブジェクトです。複数のインスタンスを作成しないようにするために、直接設定できます。 | FhirContext | |
| forceConformanceCheck (advanced) | 適合性チェックを強制します。 | false | boolean |
| sessionCookie (advanced) | すべてのリクエストに追加する HTTP セッション Cookie。 | String | |
| socketTimeout (advanced) | 個々の読み取り/書き込み操作をブロックする時間 (ミリ秒単位)。 | 10000 | Integer |
| summary (advanced) | _summary パラメーターを使用して、サーバーが応答を変更するように要求します。 列挙値:
| String | |
| validationMode (advanced) | Camel が FHIR Server の適合ステートメントをいつ検証する必要があるか。 列挙値:
| ONCE | String |
| proxyHost (プロキシー) | プロキシーホスト。 | String | |
| proxyPassword (プロキシー) | プロキシーパスワード。 | String | |
| proxyPort (プロキシー) | プロキシーポート。 | Integer | |
| proxyUser (プロキシー) | プロキシーのユーザー名。 | String | |
| accessToken (security) | OAuth アクセストークン。 | String | |
| password (security) | Basic 認証に使用するユーザー名。 | String | |
| username (security) | Basic 認証に使用するユーザー名。 | String |
33.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
FHIR エンドポイントは、URI 構文を使用して設定されます。
fhir:apiName/methodName
パスおよびクエリーパラメーターを使用します。
33.5.1. パスパラメーター (2 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| apiName (common) | 必須 実行する操作の種類 列挙値:
| FhirApiName | |
| methodName (common) | 必須: 選択した操作に使用するサブ操作 | String |
33.5.2. クエリーパラメーター (44 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| encoding (common) | すべてのリクエストに使用するエンコーディング。 列挙値:
| String | |
| fhirVersion (common) | 使用する FHIR バージョン。 列挙値:
| R4 | String |
| inBody (common) | ボディにて交換で渡されるパラメーターの名前を設定します。 | String | |
| log (common) | リクエストとレスポンスをすべてログに記録します。 | false | boolean |
| prettyPrint (common) | すべてのリクエストをきれいに印刷します。 | false | boolean |
| serverUrl (common) | FHIR サーバーのベース URL。 | String | |
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| sendEmptyMessageWhenIdle (consumer) | ポーリング consumer がファイルをポーリングしなかった場合、このオプションを有効にして、代わりに空のメッセージ (ボディーなし) を送信できます。 | false | boolean |
| exceptionHandler (consumer (advanced)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (advanced)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| pollStrategy (consumer (advanced)) | プラグ可能な org.apache.camel.PollingConsumerPollingStrategy を使用すると、エクスチェンジが作成され、Camel でルーティングされる前に、通常はポーリング操作中に発生するエラー処理を制御するカスタム実装が提供できます。 | PollingConsumerPollStrategy | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| client (advanced) | カスタムクライアントを使用します。 | IGenericClient | |
| clientFactory (advanced) | カスタムクライアントファクトリーを使用します。 | IRestfulClientFactory | |
| compress (advanced) | 発信 (POST/PUT) コンテンツを GZIP 形式に圧縮します。 | false | boolean |
| connectionTimeout (advanced) | 初期 TCP 接続の試行と確立にかかる時間 (ミリ秒)。 | 10000 | Integer |
| deferModelScanning (advanced) | このオプションが設定されている場合は、指定されたタイプの子リストが実際にアクセスされるまで、モデルクラスの子はスキャンされません。 | false | boolean |
| fhirContext (advanced) | FhirContext は、作成するのにコストのかかるオブジェクトです。複数のインスタンスを作成しないようにするために、直接設定できます。 | FhirContext | |
| forceConformanceCheck (advanced) | 適合性チェックを強制します。 | false | boolean |
| sessionCookie (advanced) | すべてのリクエストに追加する HTTP セッション Cookie。 | String | |
| socketTimeout (advanced) | 個々の読み取り/書き込み操作をブロックする時間 (ミリ秒単位)。 | 10000 | Integer |
| summary (advanced) | _summary パラメーターを使用して、サーバーが応答を変更するように要求します。 列挙値:
| String | |
| validationMode (advanced) | Camel が FHIR Server の適合ステートメントをいつ検証する必要があるか。 列挙値:
| ONCE | String |
| proxyHost (プロキシー) | プロキシーホスト。 | String | |
| proxyPassword (プロキシー) | プロキシーパスワード。 | String | |
| proxyPort (プロキシー) | プロキシーポート。 | Integer | |
| proxyUser (プロキシー) | プロキシーのユーザー名。 | String | |
| backoffErrorThreshold (scheduler) | backoffMultipler が開始する前に発生する必要がある後続のエラーポーリング (エラーによって失敗した) の数。 | int | |
| backoffIdleThreshold (scheduler) | backoffMultipler が開始する前に発生する必要がある後続のアイドルポーリングの数。 | int | |
| backoffMultiplier (scheduler) | 後続のアイドル状態/エラーが連続して発生した場合に、スケジュールされたポーリング consumer のバックオフを許可します。乗数は、実際に次の試行が行われる前にスキップされるポーリングの数です。このオプションが使用されている場合は、backoffIdleThreshold や backoffErrorThreshold も設定する必要があります。 | int | |
| delay (scheduler) | 次のポーリングまでの時間 (ミリ秒単位)。 | 500 | long |
| greedy (scheduler) | greedy が有効で、以前の実行が 1 つ以上のメッセージをポーリングした場合、ScheduledPollConsumer は即座に再度実行されます。 | false | boolean |
| initialDelay (scheduler) | 最初のポーリングが開始されるまでの時間 (ミリ秒単位)。 | 1000 | long |
| repeatCount (scheduler) | 実行の最大数を指定します。そのため、これを 1 に設定するとスケジューラーは 1 度だけ実行されます。これを 5 に設定した場合、5 回だけ実行されます。0 または負の値を設定すると、無制限に実行されます。 | 0 | long |
| runLoggingLevel (scheduler) | consumer はポーリング時に開始/完了のログ行を記録します。このオプションを使用すると、ログレベルを設定できます。 列挙値:
| TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | consumer に使用するカスタム/共有スレッドプールを設定できます。デフォルトでは、各 consumer に独自の単一スレッドのスレッドプールがあります。 | ScheduledExecutorService | |
| scheduler (scheduler) | camel-spring または camel-quartz コンポーネントから cron スケジューラーを使用します。スケジューラーにビルドされた値 spring または quartz を使用。 | none | オブジェクト |
| schedulerProperties (scheduler) | カスタムスケジューラーまたは Quartz や Spring ベースのスケジューラーを使用する場合に、追加のプロパティーを設定します。 | Map | |
| startScheduler (scheduler) | スケジューラーを自動起動するかどうか。 | true | boolean |
| timeUnit (scheduler) | initialDelay および delay オプションの時間単位。 列挙値:
| MILLISECONDS | TimeUnit |
| useFixedDelay (scheduler) | 固定遅延または固定レートを使用するかどうかを制御します。詳細は、JDK の ScheduledExecutorService を参照してください。 | true | boolean |
| accessToken (security) | OAuth アクセストークン。 | String | |
| password (security) | Basic 認証に使用するユーザー名。 | String | |
| username (security) | Basic 認証に使用するユーザー名。 | String |
33.6. API パラメーター (13 API) リンクのコピーリンクがクリップボードにコピーされました!
@FHIR エンドポイントは API ベースのコンポーネントであり、使用される API 名と API メソッドに基づく追加のパラメーターがあります。API 名と API メソッドは、apiName/methodName パスパラメーターとしてエンドポイント URI に配置されます。
fhir:apiName/methodName
次の表に示すように、13 の API 名があります。
| API 名 | 型 | 説明 |
|---|---|---|
| 両方 | サーバーの機能ステートメントをフェッチする API | |
| 両方 | サーバー上に新しいリソースインスタンスを作成する作成操作用の API | |
| 両方 | サーバーリソースで論理的な削除を実行する、削除操作用の API | |
| 両方 | history メソッドの API | |
| 両方 | Atom バンドル内の link type=next タグで指定されたリンクを使用して、ページセットからリソースの前/次のバンドルをロードする API | |
| 両方 | タグやその他のメタ要素をリソースから、またはサーバー全体で取得、追加、削除するために使用できるメタ操作用の API | |
| 両方 | 拡張 FHIR 操作用の API | |
| 両方 | サーバーリソースで論理パッチを実行する、パッチ操作用の API | |
| 両方 | 読み取り操作の API メソッド | |
| 両方 | 特定の基準セットに一致するリソースを検索する API | |
| 両方 | トランザクション (リソースの集まり) をサーバーに送信して単体で実行するための API | |
| 両方 | サーバーリソースで論理的な削除を実行する、更新操作用の API | |
| 両方 | リソースを検証するための API |
各 API は、以降のセクションで説明します。
33.6.1. API: 機能 リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
機能 API は、次の構文で定義されます。
fhir:capabilities/methodName?[parameters]
以下の表にメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)
| メソッド | 説明 |
|---|---|
| 指定されたモデルタイプを使用して適合ステートメントを取得します |
33.6.1.1. タイプの方法 リンクのコピーリンクがクリップボードにコピーされました!
署名:
- org.hl7.fhir.instance.model.api.IBaseConformance ofType(Class<org.hl7.fhir.instance.model.api.IBaseConformance> type, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/ofType API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| type | モデルタイプ | クラス |
上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。
いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHere は CamelFhir.myParameterNameHere ヘッダーをオーバーライドします。
33.6.2. API: 作成 リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
作成 API は、構文で次のように定義されます。
fhir:create/methodName?[parameters]
以下の表に 1 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)
| メソッド | 説明 |
|---|---|
| サーバー上に IBaseResource を作成します |
33.6.2.1. メソッドリソース リンクのコピーリンクがクリップボードにコピーされました!
署名:
- ca.uhn.fhir.rest.api.MethodOutcome resource(String resourceAsString, String url, ca.uhn.fhir.rest.api.PreferReturnEnum preferReturn, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
- ca.uhn.fhir.rest.api.MethodOutcome resource(org.hl7.fhir.instance.model.api.IBaseResource resource, String url, ca.uhn.fhir.rest.api.PreferReturnEnum preferReturn, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/resource API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| preferReturn | リクエストに Prefer ヘッダーを追加します。これは、サーバーが結果の一部としてリソース本文を含めるか抑制することを要求します。リソースがサーバーによって返された場合、それは解析され、MethodOutcome#getResource () を介してクライアントにアクセス可能になります。null の場合があります。 | PreferReturnEnum |
| resource | 作成するリソース | IBaseResource |
| resourceAsString | 作成するリソース | String |
| url | 使用する検索 URL。この URL の形式は、ResourceTypeParameters の形式にする必要があります。たとえば、Patientname=Smith&identifier=13.2.4.11.4%7C847366、null の可能性があります。 | String |
上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。
いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHere は CamelFhir.myParameterNameHere ヘッダーをオーバーライドします。
33.6.3. API: 削除 リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
削除 API は、構文で次のように定義されます。
fhir:delete/methodName?[parameters]
以下の表に 3 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)
| メソッド | 説明 |
|---|---|
| 指定されたリソースを削除します | |
| リソースタイプ e でリソースを削除する | |
| 特定の検索 URL に対する条件付き削除として削除を実行する必要があることを指定します。 |
33.6.3.1. メソッドリソース リンクのコピーリンクがクリップボードにコピーされました!
署名:
- org.hl7.fhir.instance.model.api.IBaseOperationOutcome resource(org.hl7.fhir.instance.model.api.IBaseResource resource, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/resource API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| resource | 削除する IBaseResource | IBaseResource |
33.6.3.2. メソッド resourceById リンクのコピーリンクがクリップボードにコピーされました!
署名:
- org.hl7.fhir.instance.model.api.IBaseOperationOutcome resourceById(String type, String stringId, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
- org.hl7.fhir.instance.model.api.IBaseOperationOutcome resourceById(org.hl7.fhir.instance.model.api.IIdType id, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/resourceById API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| id | リソースを参照する IIdType | IIdType |
| stringId | id です | String |
| type | リソースの種類 (患者など) | String |
33.6.3.3. メソッド resourceConditionalByUrl リンクのコピーリンクがクリップボードにコピーされました!
署名:
- org.hl7.fhir.instance.model.api.IBaseOperationOutcome resourceConditionalByUrl(String url, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/resourceConditionalByUrl API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| url | 使用する検索 URL。この URL の形式は、ResourceTypeParameters の形式にする必要があります。たとえば、Patientname=Smith&identifier=13.2.4.11.4%7C847366 です。 | String |
上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。
いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHere は CamelFhir.myParameterNameHere ヘッダーをオーバーライドします。
33.6.4. API: 履歴 リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
履歴 API は、次の構文で定義されます。
fhir:history/methodName?[parameters]
以下の表に 3 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)
| メソッド | 説明 |
|---|---|
| サーバー上の特定のリソースのすべてのバージョンに対して (ID とタイプによって) 操作を実行します | |
| サーバー上のすべてのタイプのすべてのリソースのすべてのバージョンで操作を実行します | |
| サーバー上の指定されたタイプのすべてのリソースのすべてのバージョンで操作を実行します |
33.6.4.1. メソッド onInstance リンクのコピーリンクがクリップボードにコピーされました!
署名:
- org.hl7.fhir.instance.model.api.IBaseBundle onInstance(org.hl7.fhir.instance.model.api.IIdType id, Class<org.hl7.fhir.instance.model.api.IBaseBundle> returnType, Integer count, java.util.Date cutoff, org.hl7.fhir.instance.model.api.IPrimitiveType<java.util.Date> iCutoff, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/onInstance API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| count | サーバーが theCount 数までのリソースのみを返すように要求します。NULL の場合があります | Integer |
| cutoff | 指定された時間以降に作成されたリソースバージョンのみをサーバーが返すように要求します。NULL の場合があります。 | 日付 |
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| iCutoff | 指定された時間以降に作成されたリソースバージョンのみをサーバーが返すように要求します。NULL の場合があります。 | IPrimitiveType |
| id | リソースタイプとリソース ID の両方を入力する必要がある IIdType | IIdType |
| returnType | メソッドが Bundle リソース (ca.uhn.fhir.model.dstu2.resource.Bundle など) を返すように要求します。DSTU2 サーバーにアクセスしている場合は、この方法を使用します。 | クラス |
33.6.4.2. メソッド onServer リンクのコピーリンクがクリップボードにコピーされました!
署名:
- org.hl7.fhir.instance.model.api.IBaseBundle onServer(Class<org.hl7.fhir.instance.model.api.IBaseBundle> returnType, Integer count, java.util.Date cutoff, org.hl7.fhir.instance.model.api.IPrimitiveType<java.util.Date> iCutoff, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/onServer API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| count | サーバーが theCount 数までのリソースのみを返すように要求します。NULL の場合があります | Integer |
| cutoff | 指定された時間以降に作成されたリソースバージョンのみをサーバーが返すように要求します。NULL の場合があります。 | 日付 |
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| iCutoff | 指定された時間以降に作成されたリソースバージョンのみをサーバーが返すように要求します。NULL の場合があります。 | IPrimitiveType |
| returnType | メソッドが Bundle リソース (ca.uhn.fhir.model.dstu2.resource.Bundle など) を返すように要求します。DSTU2 サーバーにアクセスしている場合は、この方法を使用します。 | クラス |
33.6.4.3. メソッド onType リンクのコピーリンクがクリップボードにコピーされました!
署名:
- org.hl7.fhir.instance.model.api.IBaseBundle onType(Class<org.hl7.fhir.instance.model.api.IBaseResource> resourceType, Class<org.hl7.fhir.instance.model.api.IBaseBundle> returnType, Integer count, java.util.Date cutoff, org.hl7.fhir.instance.model.api.IPrimitiveType<java.util.Date> iCutoff, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/onType API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| count | サーバーが theCount 数までのリソースのみを返すように要求します。NULL の場合があります | Integer |
| cutoff | 指定された時間以降に作成されたリソースバージョンのみをサーバーが返すように要求します。NULL の場合があります。 | 日付 |
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| iCutoff | 指定された時間以降に作成されたリソースバージョンのみをサーバーが返すように要求します。NULL の場合があります。 | IPrimitiveType |
| resourceType | 検索するリソースの種類 | クラス |
| returnType | メソッドが Bundle リソース (ca.uhn.fhir.model.dstu2.resource.Bundle など) を返すように要求します。DSTU2 サーバーにアクセスしている場合は、この方法を使用します。 | クラス |
上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。
いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHere は CamelFhir.myParameterNameHere ヘッダーをオーバーライドします。
33.6.5. API: ページの読み込み リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
ページ読み込み API は、次の構文で定義されます。
fhir:load-page/methodName?[parameters]
以下の表に 3 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)
| メソッド | 説明 |
|---|---|
| 指定された URL とバンドルタイプを使用して結果のページを読み込み、DSTU1 Atom バンドルを返します | |
| バンドル内のリレーション next のリンクを使用して、結果の次のページを読み込みます | |
| バンドル内のリレーション prev のリンクを使用して、結果の前のページをロードします |
33.6.5.1. メソッド byUrl リンクのコピーリンクがクリップボードにコピーされました!
署名:
- org.hl7.fhir.instance.model.api.IBaseBundle byUrl(String url, Class<org.hl7.fhir.instance.model.api.IBaseBundle> returnType, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/byUrl API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| returnType | リターンタイプ | クラス |
| url | 検索 URL | String |
33.6.5.2. 次の方法 リンクのコピーリンクがクリップボードにコピーされました!
署名:
- org.hl7.fhir.instance.model.api.IBaseBundle next(org.hl7.fhir.instance.model.api.IBaseBundle bundle, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/next API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| bundle | IBaseBundle | IBaseBundle |
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
33.6.5.3. 前の方法 リンクのコピーリンクがクリップボードにコピーされました!
署名:
- org.hl7.fhir.instance.model.api.IBaseBundle previous(org.hl7.fhir.instance.model.api.IBaseBundle bundle, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/previous API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| bundle | IBaseBundle | IBaseBundle |
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。
いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHere は CamelFhir.myParameterNameHere ヘッダーをオーバーライドします。
33.6.6. API: メタ リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
メタ API は、次の構文で定義されます。
fhir:meta/methodName?[parameters]
以下の表に 5 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)
| メソッド | 説明 |
|---|---|
| 指定されたメタデータの要素を既存のセットに追加します (削除しないでください)。 | |
| 指定された ID から指定されたメタデータの要素を削除します | |
| 特定のリソースから現在のメタデータを取得する | |
| サーバー全体から現在のメタデータを取得する | |
| 特定のタイプから現在のメタデータをフェッチする |
33.6.6.1. メソッドの追加 リンクのコピーリンクがクリップボードにコピーされました!
署名:
- org.hl7.fhir.instance.model.api.IBaseMetaType add(org.hl7.fhir.instance.model.api.IBaseMetaType meta, org.hl7.fhir.instance.model.api.IIdType id, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/add API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| id | ID | IIdType |
| meta | IBaseMetaType クラス | IBaseMetaType |
33.6.6.2. メソッド: DELETE リンクのコピーリンクがクリップボードにコピーされました!
署名:
- org.hl7.fhir.instance.model.api.IBaseMetaType delete(org.hl7.fhir.instance.model.api.IBaseMetaType meta, org.hl7.fhir.instance.model.api.IIdType id, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/delete API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| id | ID | IIdType |
| meta | IBaseMetaType クラス | IBaseMetaType |
33.6.6.3. メソッド getFromResource リンクのコピーリンクがクリップボードにコピーされました!
署名:
- org.hl7.fhir.instance.model.api.IBaseMetaType getFromResource(Class<org.hl7.fhir.instance.model.api.IBaseMetaType> metaType, org.hl7.fhir.instance.model.api.IIdType id, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/getFromResource API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| id | ID | IIdType |
| metaType | IBaseMetaType クラス | クラス |
33.6.6.4. メソッド: getFromServer リンクのコピーリンクがクリップボードにコピーされました!
署名:
- org.hl7.fhir.instance.model.api.IBaseMetaType getFromServer(Class<org.hl7.fhir.instance.model.api.IBaseMetaType> metaType, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/getFromServer API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| metaType | 特定の FHIR モデルバージョンのメタデータ型のタイプ (MetaDt.class または MetaType.class である必要があります) | クラス |
33.6.6.5. メソッド getFromType リンクのコピーリンクがクリップボードにコピーされました!
署名:
- org.hl7.fhir.instance.model.api.IBaseMetaType getFromType(Class<org.hl7.fhir.instance.model.api.IBaseMetaType> metaType, String resourceType, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/getFromType API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| metaType | IBaseMetaType クラス | クラス |
| resourceType | リソースの種類 (患者など) | String |
上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。
いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHere は CamelFhir.myParameterNameHere ヘッダーをオーバーライドします。
33.6.7. API: 操作 リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
操作 API は、次の構文で定義されます。
fhir:operation/methodName?[parameters]
以下の表に 5 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)
| メソッド | 説明 |
|---|---|
| サーバー上の特定のリソースのすべてのバージョンに対して (ID とタイプによって) 操作を実行します | |
| この操作は、リソースの特定のバージョンで動作します | |
| サーバー上のすべてのタイプのすべてのリソースのすべてのバージョンで操作を実行します | |
| サーバー上の指定されたタイプのすべてのリソースのすべてのバージョンで操作を実行します | |
| この操作は、FHIR 仕様で定義されているように $process-message と呼ばれます |
33.6.7.1. メソッド onInstance リンクのコピーリンクがクリップボードにコピーされました!
署名:
- org.hl7.fhir.instance.model.api.IBaseResource onInstance(org.hl7.fhir.instance.model.api.IIdType id, String name, org.hl7.fhir.instance.model.api.IBaseParameters parameters, Class<org.hl7.fhir.instance.model.api.IBaseParameters> outputParameterType, boolean useHttpGet, Class<org.hl7.fhir.instance.model.api.IBaseResource> returnType, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/onInstance API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| id | リソース (バージョンは削除されます) | IIdType |
| name | 操作名 | String |
| outputParameterType | 出力パラメーターに使用する型 (これは、使用している FHIR 構造のバージョンから引き出された Parameters.class に設定する必要があります) は、NULL の場合があります。 | クラス |
| parameters | 入力として使用するパラメーター。操作に入力パラメーターが必要ない場合は、null になることもあります。 | IBaseParameters |
| returnType | このオペレーションが、Parameters リソースではなく、単一のリソースボディを戻り値の型として返す場合は、このメソッドを使用してそのリソースの型を指定します。これは、Parameters リソースの代わりにバンドルを返す特定の操作 (Patient/NNN/$everything など) に役立ちます。NULL の場合があります。 | クラス |
| useHttpGet | HTTP GET 動詞を使用する | Boolean |
33.6.7.2. メソッド onInstanceVersion リンクのコピーリンクがクリップボードにコピーされました!
署名:
- org.hl7.fhir.instance.model.api.IBaseResource onInstanceVersion(org.hl7.fhir.instance.model.api.IIdType id, String name, org.hl7.fhir.instance.model.api.IBaseParameters parameters, Class<org.hl7.fhir.instance.model.api.IBaseParameters> outputParameterType, boolean useHttpGet, Class<org.hl7.fhir.instance.model.api.IBaseResource> returnType, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/onInstanceVersion API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| id | リソースのバージョン | IIdType |
| name | 操作名 | String |
| outputParameterType | 出力パラメーターに使用する型 (これは、使用している FHIR 構造のバージョンから引き出された Parameters.class に設定する必要があります) は、NULL の場合があります。 | クラス |
| parameters | 入力として使用するパラメーター。操作に入力パラメーターが必要ない場合は、null になることもあります。 | IBaseParameters |
| returnType | このオペレーションが、Parameters リソースではなく、単一のリソースボディを戻り値の型として返す場合は、このメソッドを使用してそのリソースの型を指定します。これは、Parameters リソースの代わりにバンドルを返す特定の操作 (Patient/NNN/$everything など) に役立ちます。NULL の場合があります。 | クラス |
| useHttpGet | HTTP GET 動詞を使用する | Boolean |
33.6.7.3. メソッド onServer リンクのコピーリンクがクリップボードにコピーされました!
署名:
- org.hl7.fhir.instance.model.api.IBaseResource onServer(String name, org.hl7.fhir.instance.model.api.IBaseParameters parameters, Class<org.hl7.fhir.instance.model.api.IBaseParameters> outputParameterType, boolean useHttpGet, Class<org.hl7.fhir.instance.model.api.IBaseResource> returnType, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/onServer API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| name | 操作名 | String |
| outputParameterType | 出力パラメーターに使用する型 (これは、使用している FHIR 構造のバージョンから引き出された Parameters.class に設定する必要があります) は、NULL の場合があります。 | クラス |
| parameters | 入力として使用するパラメーター。操作に入力パラメーターが必要ない場合は、null になることもあります。 | IBaseParameters |
| returnType | このオペレーションが、Parameters リソースではなく、単一のリソースボディを戻り値の型として返す場合は、このメソッドを使用してそのリソースの型を指定します。これは、Parameters リソースの代わりにバンドルを返す特定の操作 (Patient/NNN/$everything など) に役立ちます。NULL の場合があります。 | クラス |
| useHttpGet | HTTP GET 動詞を使用する | Boolean |
33.6.7.4. メソッド onType リンクのコピーリンクがクリップボードにコピーされました!
署名:
- org.hl7.fhir.instance.model.api.IBaseResource onType(Class<org.hl7.fhir.instance.model.api.IBaseResource> resourceType, String name, org.hl7.fhir.instance.model.api.IBaseParameters parameters, Class<org.hl7.fhir.instance.model.api.IBaseParameters> outputParameterType, boolean useHttpGet, Class<org.hl7.fhir.instance.model.api.IBaseResource> returnType, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/onType API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| name | 操作名 | String |
| outputParameterType | 出力パラメーターに使用する型 (これは、使用している FHIR 構造のバージョンから引き出された Parameters.class に設定する必要があります) は、NULL の場合があります。 | クラス |
| parameters | 入力として使用するパラメーター。操作に入力パラメーターが必要ない場合は、null になることもあります。 | IBaseParameters |
| resourceType | 操作するリソースの種類 | クラス |
| returnType | このオペレーションが、Parameters リソースではなく、単一のリソースボディを戻り値の型として返す場合は、このメソッドを使用してそのリソースの型を指定します。これは、Parameters リソースの代わりにバンドルを返す特定の操作 (Patient/NNN/$everything など) に役立ちます。NULL の場合があります。 | クラス |
| useHttpGet | HTTP GET 動詞を使用する | Boolean |
33.6.7.5. メソッド processMessage リンクのコピーリンクがクリップボードにコピーされました!
署名:
- org.hl7.fhir.instance.model.api.IBaseBundle processMessage(String respondToUri, org.hl7.fhir.instance.model.api.IBaseBundle msgBundle, boolean asynchronous, Class<org.hl7.fhir.instance.model.api.IBaseBundle> responseClass, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/processMessage API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| 非同期 | メッセージを非同期または同期のどちらで処理するか。デフォルトは同期です。 | Boolean |
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| msgBundle | メッセージバンドルをメッセージングサーバーへの POST に設定します。 | IBaseBundle |
| respondToUri | 受信サーバーからの応答をこの URI に送信する必要があることを示すオプションのクエリーパラメーター。NULL の場合があります。 | String |
| responseClass | 応答クラス | クラス |
上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。
いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHere は CamelFhir.myParameterNameHere ヘッダーをオーバーライドします。
33.6.8. API: パッチ リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
パッチ API は、次の構文で定義されます。
fhir:patch/methodName?[parameters]
以下の表に 2 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)
| メソッド | 説明 |
|---|---|
| 指定されたリソース ID にパッチを適用します | |
| 特定の検索 URL に対して条件付きの作成として更新を実行する必要があることを指定します。 |
33.6.8.1. メソッド patchById リンクのコピーリンクがクリップボードにコピーされました!
署名:
- ca.uhn.fhir.rest.api.MethodOutcome patchById(String patchBody, String stringId, ca.uhn.fhir.rest.api.PreferReturnEnum preferReturn, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
- ca.uhn.fhir.rest.api.MethodOutcome patchById(String patchBody, org.hl7.fhir.instance.model.api.IIdType id, ca.uhn.fhir.rest.api.PreferReturnEnum preferReturn, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/patchById API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| id | パッチを適用するリソース ID | IIdType |
| patchBody | に準拠する XML または JSON でシリアル化されたパッチドキュメントの本文 | String |
| preferReturn | リクエストに Prefer ヘッダーを追加します。これは、サーバーが結果の一部としてリソース本文を含めるか抑制することを要求します。リソースがサーバーによって返された場合、それは解析され、MethodOutcome#getResource () を介してクライアントにアクセス可能になります。 | PreferReturnEnum |
| stringId | パッチを適用するリソース ID | String |
33.6.8.2. メソッド patchByUrl リンクのコピーリンクがクリップボードにコピーされました!
署名:
- ca.uhn.fhir.rest.api.MethodOutcome patchByUrl(String patchBody, String url, ca.uhn.fhir.rest.api.PreferReturnEnum preferReturn, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/patchByUrl API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| patchBody | に準拠する XML または JSON でシリアル化されたパッチドキュメントの本文 | String |
| preferReturn | リクエストに Prefer ヘッダーを追加します。これは、サーバーが結果の一部としてリソース本文を含めるか抑制することを要求します。リソースがサーバーによって返された場合、それは解析され、MethodOutcome#getResource () を介してクライアントにアクセス可能になります。 | PreferReturnEnum |
| url | 使用する検索 URL。この URL の形式は、ResourceTypeParameters の形式にする必要があります。たとえば、Patientname=Smith&identifier=13.2.4.11.4%7C847366 です。 | String |
上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。
いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHere は CamelFhir.myParameterNameHere ヘッダーをオーバーライドします。
33.6.9. API: 読み取り リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
読み取り API は、次の構文で定義されます。
fhir:read/methodName?[parameters]
以下の表に 2 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)
| メソッド | 説明 |
|---|---|
| サーバー上の IBaseResource を ID で読み取ります | |
| サーバー上の IBaseResource を URL で読み取ります |
33.6.9.1. メソッド resourceById リンクのコピーリンクがクリップボードにコピーされました!
署名:
- org.hl7.fhir.instance.model.api.IBaseResource resourceById(Class<org.hl7.fhir.instance.model.api.IBaseResource> resource, Long longId, String ifVersionMatches, Boolean returnNull, org.hl7.fhir.instance.model.api.IBaseResource returnResource, Boolean throwError, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
- org.hl7.fhir.instance.model.api.IBaseResource resourceById(Class<org.hl7.fhir.instance.model.api.IBaseResource> resource, String stringId, String version, String ifVersionMatches, Boolean returnNull, org.hl7.fhir.instance.model.api.IBaseResource returnResource, Boolean throwError, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
- org.hl7.fhir.instance.model.api.IBaseResource resourceById(Class<org.hl7.fhir.instance.model.api.IBaseResource> resource, org.hl7.fhir.instance.model.api.IIdType id, String ifVersionMatches, Boolean returnNull, org.hl7.fhir.instance.model.api.IBaseResource returnResource, Boolean throwError, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
- org.hl7.fhir.instance.model.api.IBaseResource resourceById(String resourceClass, Long longId, String ifVersionMatches, Boolean returnNull, org.hl7.fhir.instance.model.api.IBaseResource returnResource, Boolean throwError, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
- org.hl7.fhir.instance.model.api.IBaseResource resourceById(String resourceClass, String stringId, String ifVersionMatches, String version, Boolean returnNull, org.hl7.fhir.instance.model.api.IBaseResource returnResource, Boolean throwError, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
- org.hl7.fhir.instance.model.api.IBaseResource resourceById(String resourceClass, org.hl7.fhir.instance.model.api.IIdType id, String ifVersionMatches, Boolean returnNull, org.hl7.fhir.instance.model.api.IBaseResource returnResource, Boolean throwError, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/resourceById API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| id | リソースを参照する IIdType | IIdType |
| ifVersionMatches | サーバー上の最新バージョンと照合するバージョン | String |
| longId | リソース ID | Long |
| resource | 読み取るリソース (Patient など) | クラス |
| resourceClass | 読み取るリソース (Patient など) | String |
| returnNull | バージョンが一致する場合は null を返す | Boolean |
| returnResource | バージョンが一致する場合はリソースを返します | IBaseResource |
| stringId | リソース ID | String |
| throwError | バージョンが一致する場合はエラーを出力します | Boolean |
| version | リソースのバージョン | String |
33.6.9.2. メソッド resourceByUrl リンクのコピーリンクがクリップボードにコピーされました!
署名:
- org.hl7.fhir.instance.model.api.IBaseResource resourceByUrl(Class<org.hl7.fhir.instance.model.api.IBaseResource> resource, String url, String ifVersionMatches, Boolean returnNull, org.hl7.fhir.instance.model.api.IBaseResource returnResource, Boolean throwError, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
- org.hl7.fhir.instance.model.api.IBaseResource resourceByUrl(Class<org.hl7.fhir.instance.model.api.IBaseResource> resource, org.hl7.fhir.instance.model.api.IIdType iUrl, String ifVersionMatches, Boolean returnNull, org.hl7.fhir.instance.model.api.IBaseResource returnResource, Boolean throwError, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
- org.hl7.fhir.instance.model.api.IBaseResource resourceByUrl(String resourceClass, String url, String ifVersionMatches, Boolean returnNull, org.hl7.fhir.instance.model.api.IBaseResource returnResource, Boolean throwError, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
- org.hl7.fhir.instance.model.api.IBaseResource resourceByUrl(String resourceClass, org.hl7.fhir.instance.model.api.IIdType iUrl, String ifVersionMatches, Boolean returnNull, org.hl7.fhir.instance.model.api.IBaseResource returnResource, Boolean throwError, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/resourceByUrl API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| iUrl | 絶対 URL でリソースを参照する IIdType | IIdType |
| ifVersionMatches | サーバー上の最新バージョンと照合するバージョン | String |
| resource | 読み取るリソース (Patient など) | クラス |
| resourceClass | 読み取るリソース (Patient.class など) | String |
| returnNull | バージョンが一致する場合は null を返す | Boolean |
| returnResource | バージョンが一致する場合はリソースを返します | IBaseResource |
| throwError | バージョンが一致する場合はエラーを出力します | Boolean |
| url | 絶対 URL によるリソースの参照 | String |
上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。
いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHere は CamelFhir.myParameterNameHere ヘッダーをオーバーライドします。
33.6.10. API: 検索 リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
検索 API は、次の構文で定義されます。
fhir:search/methodName?[parameters]
以下の表に 1 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)
| メソッド | 説明 |
|---|---|
| URL で直接検索を実行する |
33.6.10.1. メソッド searchByUrl リンクのコピーリンクがクリップボードにコピーされました!
署名:
- org.hl7.fhir.instance.model.api.IBaseBundle searchByUrl(String url, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/searchByUrl API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| url | 検索する URL。この URL が完全である場合があることに注意してください (例:)。その場合、クライアントのベース URL は無視されます。または、クライアントのベース URL が使用される場合に相対 (Patientname=foo など) にすることもできます。 | String |
上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。
いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHere は CamelFhir.myParameterNameHere ヘッダーをオーバーライドします。
33.6.11. API: トランザクション リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
トランザクション API は、次の構文で定義されます。
fhir:transaction/methodName?[parameters]
以下の表に 2 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)
| メソッド | 説明 |
|---|---|
| 指定された生のテキスト (バンドルリソースである必要があります) をトランザクション入力として使用します | |
| リソースのリストをトランザクション入力として使用する |
33.6.11.1. メソッド withBundle リンクのコピーリンクがクリップボードにコピーされました!
署名:
- String withBundle(String stringBundle, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
- org.hl7.fhir.instance.model.api.IBaseBundle withBundle(org.hl7.fhir.instance.model.api.IBaseBundle bundle, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/withBundle API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| bundle | トランザクションで使用するバンドル | IBaseBundle |
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| stringBundle | トランザクションで使用するバンドル | String |
33.6.11.2. メソッド withResources リンクのコピーリンクがクリップボードにコピーされました!
署名:
- java.util.List<org.hl7.fhir.instance.model.api.IBaseResource> withResources(java.util.List<org.hl7.fhir.instance.model.api.IBaseResource> resources, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/withResources API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| resources | トランザクションで使用するリソース | リスト |
上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。
いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHere は CamelFhir.myParameterNameHere ヘッダーをオーバーライドします。
33.6.12. API: 更新 リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
更新 API は、次の構文で定義されます。
fhir:update/methodName?[parameters]
以下の表に 2 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)
| メソッド | 説明 |
|---|---|
| サーバー上の IBaseResource を ID で更新します | |
| 検索 URL によってサーバー上の IBaseResource を更新します |
33.6.12.1. メソッドリソース リンクのコピーリンクがクリップボードにコピーされました!
署名:
- ca.uhn.fhir.rest.api.MethodOutcome resource(String resourceAsString, String stringId, ca.uhn.fhir.rest.api.PreferReturnEnum preferReturn, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
- ca.uhn.fhir.rest.api.MethodOutcome resource(String resourceAsString, org.hl7.fhir.instance.model.api.IIdType id, ca.uhn.fhir.rest.api.PreferReturnEnum preferReturn, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
- ca.uhn.fhir.rest.api.MethodOutcome resource(org.hl7.fhir.instance.model.api.IBaseResource resource, String stringId, ca.uhn.fhir.rest.api.PreferReturnEnum preferReturn, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
- ca.uhn.fhir.rest.api.MethodOutcome resource(org.hl7.fhir.instance.model.api.IBaseResource resource, org.hl7.fhir.instance.model.api.IIdType id, ca.uhn.fhir.rest.api.PreferReturnEnum preferReturn, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/resource API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| id | リソースを参照する IIdType | IIdType |
| preferReturn | サーバーが結果の一部としてリソース本体を含めるか抑制するか | PreferReturnEnum |
| resource | 更新するリソース (患者など) | IBaseResource |
| resourceAsString | 更新するリソース本体 | String |
| stringId | リソースを参照する ID | String |
33.6.12.2. メソッド resourceBySearchUrl リンクのコピーリンクがクリップボードにコピーされました!
署名:
- ca.uhn.fhir.rest.api.MethodOutcome resourceBySearchUrl(String resourceAsString, String url, ca.uhn.fhir.rest.api.PreferReturnEnum preferReturn, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
- ca.uhn.fhir.rest.api.MethodOutcome resourceBySearchUrl(org.hl7.fhir.instance.model.api.IBaseResource resource, String url, ca.uhn.fhir.rest.api.PreferReturnEnum preferReturn, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/resourceBySearchUrl API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| preferReturn | サーバーが結果の一部としてリソース本体を含めるか抑制するか | PreferReturnEnum |
| resource | 更新するリソース (患者など) | IBaseResource |
| resourceAsString | 更新するリソース本体 | String |
| url | 特定の検索 URL に対して条件付きの作成として更新を実行する必要があることを指定します。 | String |
上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。
いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHere は CamelFhir.myParameterNameHere ヘッダーをオーバーライドします。
33.6.13. API: 検証 リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
検証 API は、構文で次のように定義されます。
fhir:validate/methodName?[parameters]
以下の表に 1 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)
| メソッド | 説明 |
|---|---|
| リソースを検証します |
33.6.13.1. メソッドリソース リンクのコピーリンクがクリップボードにコピーされました!
署名:
- ca.uhn.fhir.rest.api.MethodOutcome resource(String resourceAsString, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
- ca.uhn.fhir.rest.api.MethodOutcome resource(org.hl7.fhir.instance.model.api.IBaseResource resource, java.util.Map<org.apache.camel.component.fhir.api.ExtraParameters, Object> extraParameters);
fhir/resource API メソッドには、次の表に示すパラメーターがあります。
| パラメーター | 説明 | 型 |
|---|---|---|
| extraParameters | 渡すことができるパラメーターの完全なリストは、ExtraParameters を参照してください。NULL の場合があります。 | Map |
| resource | 検証する IBaseResource | IBaseResource |
| resourceAsString | 検証する生のリソース | String |
上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。
いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHere は CamelFhir.myParameterNameHere ヘッダーをオーバーライドします。
33.7. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 56 オプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.fhir.access-token | OAuth アクセストークン。 | String | |
| camel.component.fhir.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.fhir.bridge-error-handler | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | Boolean |
| camel.component.fhir.client | カスタムクライアントを使用します。オプションは ca.uhn.fhir.rest.client.api.IGenericClient タイプです。 | IGenericClient | |
| camel.component.fhir.client-factory | カスタムクライアントファクトリーを使用します。オプションは ca.uhn.fhir.rest.client.api.IRestfulClientFactory タイプです。 | IRestfulClientFactory | |
| camel.component.fhir.compress | 発信 (POST/PUT) コンテンツを GZIP 形式に圧縮します。 | false | Boolean |
| camel.component.fhir.configuration | 共有設定を使用するには、以下を行います。オプションは org.apache.camel.component.fhir.FhirConfiguration タイプです。 | FhirConfiguration | |
| camel.component.fhir.connection-timeout | 初期 TCP 接続の試行と確立にかかる時間 (ミリ秒)。 | 10000 | Integer |
| camel.component.fhir.defer-model-scanning | このオプションが設定されている場合は、指定されたタイプの子リストが実際にアクセスされるまで、モデルクラスの子はスキャンされません。 | false | Boolean |
| camel.component.fhir.enabled | fhir コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.fhir.encoding | すべてのリクエストに使用するエンコーディング。 | String | |
| camel.component.fhir.fhir-context | FhirContext は、作成するのにコストのかかるオブジェクトです。複数のインスタンスを作成しないようにするために、直接設定できます。オプションは ca.uhn.fhir.context.FhirContext タイプです。 | FhirContext | |
| camel.component.fhir.fhir-version | 使用する FHIR バージョン。 | R4 | String |
| camel.component.fhir.force-conformance-check | 適合性チェックを強制します。 | false | Boolean |
| camel.component.fhir.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.fhir.log | リクエストとレスポンスをすべてログに記録します。 | false | Boolean |
| camel.component.fhir.password | Basic 認証に使用するユーザー名。 | String | |
| camel.component.fhir.pretty-print | すべてのリクエストをきれいに印刷します。 | false | Boolean |
| camel.component.fhir.proxy-host | プロキシーホスト。 | String | |
| camel.component.fhir.proxy-password | プロキシーパスワード。 | String | |
| camel.component.fhir.proxy-port | プロキシーポート。 | Integer | |
| camel.component.fhir.proxy-user | プロキシーのユーザー名。 | String | |
| camel.component.fhir.server-url | FHIR サーバーのベース URL。 | String | |
| camel.component.fhir.session-cookie | すべてのリクエストに追加する HTTP セッション Cookie。 | String | |
| camel.component.fhir.socket-timeout | 個々の読み取り/書き込み操作をブロックする時間 (ミリ秒単位)。 | 10000 | Integer |
| camel.component.fhir.summary | _summary パラメーターを使用して、サーバーが応答を変更するように要求します。 | String | |
| camel.component.fhir.username | Basic 認証に使用するユーザー名。 | String | |
| camel.component.fhir.validation-mode | Camel が FHIR Server の適合ステートメントをいつ検証する必要があるか。 | ONCE | String |
| camel.dataformat.fhirjson.content-type-header | データ形式が Content-Type ヘッダーにデータ形式のタイプを設定する必要があるかどうか。たとえば、XML にマーシャリングするデータ形式の場合は application/xml、JSON にマーシャリングするデータ形式の場合は application/json です。 | true | Boolean |
| camel.dataformat.fhirjson.dont-encode-elements | 提供されている場合、エンコードしてはならない要素を指定します。このフィールドの有効な値は次のとおりです。Patient - patient とそのすべての子をエンコードしないでください。Patient.name - patient の名前をエンコードしないでください。Patient.name.family - patient の姓をエンコードしないでください。.text - どのリソースのテキスト要素もエンコードしないでください (ワイルドカードを含めることができるのは最初の位置のみです)。DSTU2 に関する注意: Patient.meta などのメタを含む値は DSTU2 パーサーで機能しますが、Patient.meta.lastUpdated などのメタのサブ要素を含む値は DSTU3 モードでのみ機能することに注意してください。 | Set | |
| camel.dataformat.fhirjson.dont-strip-versions-from-references-at-paths | 指定された値の場合、指定されたパスのリソース参照には、エンコーディングプロセス中に自動的に削除されるのではなく、リソースバージョンがエンコードされます。この設定は、解析プロセスには影響しません。このメソッドは、setStripVersionsFromReferences(String) よりも詳細な制御レベルを提供し、setStripVersionsFromReferences(String) が true (デフォルト)に設定されている場合でも、このメソッドで指定されたパスはエンコードされます。 | リスト | |
| camel.dataformat.fhirjson.enabled | fhirJson データ形式の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.dataformat.fhirjson.encode-elements | 提供されている場合は、エンコードする必要がある要素を指定し、その他すべてを除外します。このフィールドの有効な値は次のとおりです: Patient - patient とそのすべての子をエンコードします。Patient.name - patient の名前のみをエンコードします。Patient.name.family - patient の姓のみをエンコードします。.text - 任意のリソースのテキスト要素をエンコードします (最初の位置にのみワイルドカードを含めることができます)。.(mandatory) - これは、必須フィールド (最小 0) がエンコードされる特殊なケースです。 | Set | |
| camel.dataformat.fhirjson.encode-elements-applies-to-child-resources-only | true (デフォルトが false)に設定すると、setEncodeElements (Set) に提供された値はルートリソース (通常は Bundle) には適用されませんが、その中に含まれるサブリソース (つまり、そのバンドル内の検索結果リソース) に適用されます。 | false | Boolean |
| camel.dataformat.fhirjson.fhir-version | 使用する FHIR のバージョン。可能な値は、DSTU2、DSTU2_HL7ORG、DSTU2_1、DSTU3、R4 です。 | DSTU3 | String |
| camel.dataformat.fhirjson.omit-resource-id | true に設定すると (デフォルトは false)、エンコードされるリソースの ID は出力に含まれません。これは含まれるリソースには適用されず、ルートリソースにのみ適用されることに注意してください。つまり、これが true に設定されている場合、含まれるリソースには引き続きローカル ID がありますが、外部/包含 ID には ID がありません。 | false | Boolean |
| camel.dataformat.fhirjson.override-resource-id-with-bundle-entry-full-url | true (デフォルト)に設定すると、fullUrl が定義されている場合には Bundle.entry.fullUrl は Bundle.entry.resource のリソース ID を上書きします。この動作は、ソースデータをバンドルオブジェクトに解析するときに発生します。これが望ましい動作でない場合は、これを false に設定します (たとえば、クライアントコードが fullUrl とリソース ID の間で追加の検証チェックを実行する場合)。 | false | Boolean |
| camel.dataformat.fhirjson.pretty-print | プリティプリントフラグを設定します。これは、パーサーが、出力を可能な限り圧縮するのではなく、人間が読めるスペースと要素間の改行でリソースをエンコードすることを意味します。 | false | Boolean |
| camel.dataformat.fhirjson.server-base-url | このパーサーが使用するサーバーのベース URL を設定します。値が設定されている場合、リソース参照が絶対 URL として提供されているが、指定されたベースと一致するベースを持っている場合、リソース参照は相対参照に変換されます。 | String | |
| camel.dataformat.fhirjson.strip-versions-from-references | true (デフォルト) に設定すると、バージョンを含むリソース参照は、リソースがエンコードされるときにバージョンが削除されます。ほとんどの場合、あるリソースから別のリソースへの参照は、ID とバージョンではなく、ID によってリソースを参照する必要があるため、これは通常は適切な動作です。ただし、場合によっては、リソースリンクでバージョンを保持することが望ましい場合があります。その場合、この値は false に設定する必要があります。このメソッドは、参照エンコーディングをグローバルに無効にする機能を提供します。より細かい制御が必要な場合は、setDontStripVersionsFromReferencesAtPaths(List) を使用します。 | false | Boolean |
| camel.dataformat.fhirjson.summary-mode | true に設定すると (デフォルトは false)、FHIR 仕様によって要約要素としてマークされた要素のみが含まれます。 | false | Boolean |
| camel.dataformat.fhirjson.suppress-narratives | true に設定すると (デフォルトは false)、物語はエンコードされた値に含まれません。 | false | Boolean |
| camel.dataformat.fhirxml.content-type-header | データ形式が Content-Type ヘッダーにデータ形式のタイプを設定する必要があるかどうか。たとえば、XML にマーシャリングするデータ形式の場合は application/xml、JSON にマーシャリングするデータ形式の場合は application/json です。 | true | Boolean |
| camel.dataformat.fhirxml.dont-encode-elements | 提供されている場合、エンコードしてはならない要素を指定します。このフィールドの有効な値は次のとおりです。Patient - patient とそのすべての子をエンコードしないでください。Patient.name - patient の名前をエンコードしないでください。Patient.name.family - patient の姓をエンコードしないでください。.text - どのリソースのテキスト要素もエンコードしないでください (ワイルドカードを含めることができるのは最初の位置のみです)。DSTU2 に関する注意: Patient.meta などのメタを含む値は DSTU2 パーサーで機能しますが、Patient.meta.lastUpdated などのメタのサブ要素を含む値は DSTU3 モードでのみ機能することに注意してください。 | Set | |
| camel.dataformat.fhirxml.dont-strip-versions-from-references-at-paths | 指定された値の場合、指定されたパスのリソース参照には、エンコーディングプロセス中に自動的に削除されるのではなく、リソースバージョンがエンコードされます。この設定は、解析プロセスには影響しません。このメソッドは、setStripVersionsFromReferences(String) よりも詳細な制御レベルを提供し、setStripVersionsFromReferences(String) が true (デフォルト)に設定されている場合でも、このメソッドで指定されたパスはエンコードされます。 | リスト | |
| camel.dataformat.fhirxml.enabled | fhirXml データ形式の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.dataformat.fhirxml.encode-elements | 提供されている場合は、エンコードする必要がある要素を指定し、その他すべてを除外します。このフィールドの有効な値は次のとおりです: Patient - patient とそのすべての子をエンコードします。Patient.name - patient の名前のみをエンコードします。Patient.name.family - patient の姓のみをエンコードします。.text - 任意のリソースのテキスト要素をエンコードします (最初の位置にのみワイルドカードを含めることができます)。.(mandatory) - これは、必須フィールド (最小 0) がエンコードされる特殊なケースです。 | Set | |
| camel.dataformat.fhirxml.encode-elements-applies-to-child-resources-only | true (デフォルトが false)に設定すると、setEncodeElements (Set) に提供された値はルートリソース (通常は Bundle) には適用されませんが、その中に含まれるサブリソース (つまり、そのバンドル内の検索結果リソース) に適用されます。 | false | Boolean |
| camel.dataformat.fhirxml.fhir-version | 使用する FHIR のバージョン。可能な値は、DSTU2、DSTU2_HL7ORG、DSTU2_1、DSTU3、R4 です。 | DSTU3 | String |
| camel.dataformat.fhirxml.omit-resource-id | true に設定すると (デフォルトは false)、エンコードされるリソースの ID は出力に含まれません。これは含まれるリソースには適用されず、ルートリソースにのみ適用されることに注意してください。つまり、これが true に設定されている場合、含まれるリソースには引き続きローカル ID がありますが、外部/包含 ID には ID がありません。 | false | Boolean |
| camel.dataformat.fhirxml.override-resource-id-with-bundle-entry-full-url | true (デフォルト)に設定すると、fullUrl が定義されている場合には Bundle.entry.fullUrl は Bundle.entry.resource のリソース ID を上書きします。この動作は、ソースデータをバンドルオブジェクトに解析するときに発生します。これが望ましい動作でない場合は、これを false に設定します (たとえば、クライアントコードが fullUrl とリソース ID の間で追加の検証チェックを実行する場合)。 | false | Boolean |
| camel.dataformat.fhirxml.pretty-print | プリティプリントフラグを設定します。これは、パーサーが、出力を可能な限り圧縮するのではなく、人間が読めるスペースと要素間の改行でリソースをエンコードすることを意味します。 | false | Boolean |
| camel.dataformat.fhirxml.server-base-url | このパーサーが使用するサーバーのベース URL を設定します。値が設定されている場合、リソース参照が絶対 URL として提供されているが、指定されたベースと一致するベースを持っている場合、リソース参照は相対参照に変換されます。 | String | |
| camel.dataformat.fhirxml.strip-versions-from-references | true (デフォルト) に設定すると、バージョンを含むリソース参照は、リソースがエンコードされるときにバージョンが削除されます。ほとんどの場合、あるリソースから別のリソースへの参照は、ID とバージョンではなく、ID によってリソースを参照する必要があるため、これは通常は適切な動作です。ただし、場合によっては、リソースリンクでバージョンを保持することが望ましい場合があります。その場合、この値は false に設定する必要があります。このメソッドは、参照エンコーディングをグローバルに無効にする機能を提供します。より細かい制御が必要な場合は、setDontStripVersionsFromReferencesAtPaths(List) を使用します。 | false | Boolean |
| camel.dataformat.fhirxml.summary-mode | true に設定すると (デフォルトは false)、FHIR 仕様によって要約要素としてマークされた要素のみが含まれます。 | false | Boolean |
| camel.dataformat.fhirxml.suppress-narratives | true に設定すると (デフォルトは false)、物語はエンコードされた値に含まれません。 | false | Boolean |
第34章 File リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
File コンポーネントはファイルシステムへのアクセスを提供します。これにより、ファイルを他の Camel コンポーネントで処理したり、他のコンポーネントからのメッセージをディスクに保存したりできます。
34.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で file を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-file-starter</artifactId>
</dependency>
34.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
file:directoryName[?options]
directoryName は基礎となるファイルディレクトリーを表します。
ディレクトリーのみ
Camel は、開始ディレクトリーで設定されたエンドポイントのみをサポートします。そのため、directoryName はディレクトリーである必要があります。1 つのファイルのみ使用する場合は、fileName オプションを使用できます (例: fileName=thefilename)。また、開始ディレクトリーに ${ } プレースホルダーを使用した動的な式を含めることはできません。ここでも、fileName オプションを使用してファイル名の動的部分を指定します。
別のアプリケーションによって書き込まれている最中のファイルの読み取りは回避してください。
JDK File IO API は、別のアプリケーションがファイルに対して書き込み/コピーを実行している最中かどうかの検出に少し制限があることに注意してください。実装は、OS プラットフォームによっても異なる場合があります。これにより、別のプロセスでロックされていないと Camel が判断して消費を開始する可能性があります。したがって、お使いの環境に何が適しているかを独自に調査する必要があります。これを支援するために、Camel では、使用できるさまざまな readLock オプションと doneFileName オプションを提供しています。他のユーザーがファイルを直接ドロップしたフォルダーからファイルを消費する セクションも参照してください。
34.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
34.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
34.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
34.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
File コンポーネントは、以下に示す 3 つのオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
34.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
File エンドポイントは、URI 構文を使用して設定されます。
file:directoryName
パスおよびクエリーパラメーターを使用します。
34.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| directoryName (common) | 必須: 開始ディレクトリー | File |
34.5.2. クエリーパラメーター (94 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| charset (common) | このオプションは、ファイルのエンコーディングを指定するために使用されます。consumer でこれを使用して、ファイルのエンコーディングを指定できます。これにより、Camel は、ファイルコンテンツがアクセスされている場合にファイルコンテンツをロードする必要がある charset を知ることができます。ファイルを書き込む場合も同様に、このオプションを使用して、ファイルを書き込む charset を指定できます。ファイルを書き込むとき、Camel はメッセージの内容をメモリーに読み込んで、データを設定された charset に変換できるようにする必要があることに注意してください。つまり、メッセージが大きい場合は、これを使用しないでください。 | String | |
| doneFileName (common) | Producer: 指定された場合、元のファイルが書き込まれると、Camel は 2 番目の完了ファイルを書き込みます。完了ファイルは空になります。このオプションは、使用するファイル名を設定します。固定の名前を指定できます。または、動的プレースホルダーを使用することもできます。完了ファイルは、常に元のファイルと同じフォルダーに書き込まれます。Consumer: 指定すると、Camel は完了ファイルが存在する場合にのみファイルを消費します。このオプションは、使用するファイル名を設定します。固定の名前を指定できます。または、動的なプレースホルダーを使用できます。完了ファイルは、常に元のファイルと同じフォルダーにあると想定されます。$\\{file.name} と $\\{file.name.next} のみが動的プレースホルダーとしてサポートされています。 | String | |
| fileName (common) | File Language などの式を使用して、ファイル名を動的に設定します。consumer の場合は、ファイル名フィルターとして使用されます。producer の場合、書き込むファイル名を評価するために使用されます。式が設定されている場合は、CamelFileName ヘッダーよりも優先されます。(注: ヘッダー自体を式にすることもできます)。式オプションは String タイプと Expression タイプの両方をサポートします。式が String タイプである場合、これは常にファイル言語を使用して評価されます。式が Expression タイプである場合、指定された Expression タイプが使用されます。これにより、たとえば OGNL 式を使用できます。consumer の場合、これを使用してファイル名をフィルタリングできるため、たとえば、ファイル言語構文 mydata-$\\{date:now:yyyyMMdd}.txt を使用して今日のファイルを消費できます。producer は、既存の CamelFileName ヘッダーよりも優先される CamelOverruleFileName ヘッダーをサポートします。CamelOverruleFileName は一度だけ使用されるヘッダーであり、CamelFileName を一時的に保存して後で復元する必要がなくなるため、簡単になります。 | String | |
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| delete (consumer) | true の場合、ファイルは正常に処理された後に削除されます。 | false | boolean |
| moveFailed (consumer) | Simple 言語に基づいて move failure 式を設定します。たとえば、ファイルを .error サブディレクトリーに移動するには、.error を使用します。注: ファイルを失敗したロケーションに移動すると、Camel はエラーを処理し、ファイルを再度取得しません。 | String | |
| noop (consumer) | true の場合、ファイルは移動または削除されません。このオプションは、読み取り専用データまたは ETL タイプの要件に適しています。noop=true の場合、Camel は idempotent=true も設定し、同じファイルを繰り返し消費しないようにします。 | false | boolean |
| preMove (consumer) | 処理前に移動する場合にファイル名を動的に設定するために使用される式 (File 言語など)。たとえば、進行中のファイルを order ディレクトリーに移動するには、この値を order に設定します。 | String | |
| preSort (consumer) | pre-sort が有効になっている場合、consumer はポーリング中に、ファイルシステムから取得されたファイル名とディレクトリー名を並べ替えます。ソートされた順序でファイルを操作する必要がある場合に、これを行うことができます。pre-sort は、consumer がフィルタリングを開始する前に実行され、Camel によって処理されるファイルを受け入れます。このオプション default=false で無効になっています。 | false | boolean |
| recursive (consumer) | ディレクトリーの場合は、すべてのサブディレクトリー内のファイルも検索します。 | false | boolean |
| sendEmptyMessageWhenIdle (consumer) | ポーリング consumer がファイルをポーリングしなかった場合、このオプションを有効にして、代わりに空のメッセージ (ボディーなし) を送信できます。 | false | boolean |
| directoryMustExist (consumer (advanced)) | startingDirectoryMustExist オプションと同様ですが、これはポーリング中に適用されます (consumer の起動後)。 | false | boolean |
| exceptionHandler (consumer (advanced)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (advanced)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| extendedAttributes (consumer (advanced)) | 対象のファイル属性を定義します。posix:permissions,posix:owner,basic:lastAccessTime と同様に、posix:、basic:lastAccessTime などの基本的なワイルドカードをサポートします。 | String | |
| inProgressRepository (consumer (advanced)) | プラグ可能な in-progress リポジトリー org.apache.camel.spi.IdempotentRepository。in-progress リポジトリーは、現在進行中のファイルが消費されていることを示すために使用されます。デフォルトでは、メモリーベースのリポジトリーが使用されます。 | IdempotentRepository | |
| localWorkDirectory (consumer (advanced)) | 使用する場合、ローカルの作業ディレクトリーを使用して、リモートファイルのコンテンツをローカルファイルに直接保存し、コンテンツがメモリーに読み込まれないようにできます。これは、非常に大きなリモートファイルを使用している場合に、メモリーを節約するために役立ちます。 | String | |
| onCompletionExceptionHandler (consumer (advanced)) | カスタム org.apache.camel.spi.ExceptionHandler を使用して、consumer がコミットまたはロールバックを実行する完了プロセスのファイル中に出力される例外を処理します。デフォルトの実装は、WARN レベルですべての例外をログに記録し、無視します。 | ExceptionHandler | |
| pollStrategy (consumer (advanced)) | プラグ可能な org.apache.camel.PollingConsumerPollingStrategy を使用すると、エクスチェンジが作成され、Camel でルーティングされる前に、通常はポーリング操作中に発生するエラー処理を制御するカスタム実装が提供できます。 | PollingConsumerPollStrategy | |
| probeContentType (consumer (advanced)) | コンテンツタイプのプローブを有効にするかどうか。有効な場合、consumer は Files#probeContentType(java.nio.file.Path) を使用してファイルのコンテンツタイプを判断し、それをキー Exchange#FILE_CONTENT_TYPE を持つヘッダーとしてメッセージに格納します。 | false | boolean |
| processStrategy (consumer (advanced)) | プラグ可能な org.apache.camel.component.file.GenericFileProcessStrategy を使用すると、独自の readLock オプションまたは同様のものを実装できます。特別な準備完了ファイルが存在するなど、ファイルを使用する前に特別な条件を満たす必要がある場合にも使用できます。このオプションを設定すると、readLock オプションは適用されません。 | GenericFileProcessStrategy | |
| resumeStrategy (consumer (advanced)) | ファイルの再開戦略を設定します。これにより、アプリケーションを停止する前に、最後のポイントの後にファイルの読み取りを再開するための戦略を定義できます。実装の詳細は、FileConsumerResumeStrategy を参照してください。 | FileConsumerResumeStrategy | |
| startingDirectoryMustExist (consumer (advanced)) | 開始ディレクトリーの存在が必要かどうか。autoCreate オプションがデフォルトで有効になっていることに注意してください。これは、開始ディレクトリーが存在しない場合、通常は自動作成されることを意味します。autoCreate を無効にして有効にすると、開始ディレクトリーの存在が必要なことを確認できます。ディレクトリーが存在しない場合は例外が発生します。 | false | boolean |
| startingDirectoryMustHaveAccess (consumer (advanced)) | 開始ディレクトリーにアクセス権があるかどうか。ディレクトリーが存在することを確認するには、startingDirectoryMustExist パラメーターを true に設定する必要があります。ディレクトリーに読み取りおよび書き込みパーミッションがない場合は例外が発生します。 | false | boolean |
| appendChars (producer) | ファイルの書き込み後に文字 (テキスト) を追加するために使用されます。たとえば、新規ファイルや既存ファイルを書き込んで追加する際に、新しい行やその他のセパレーターを追加するために使用できます。改行 (slash-n または slash-r) またはタブ (slash-t) 文字を指定するには、slash-slash-n のように追加のスラッシュでエスケープします。 | String | |
| fileExist (producer) | 同じ名前のファイルがすでに存在する場合のアクション。デフォルトの上書きは、既存のファイルを置き換えます。- 追加 - 既存のファイルにコンテンツを追加します。- 失敗 - 既存のファイルがすでに存在することを示す GenericFileOperationException を出力します。- 無視 - 問題を黙って無視し、既存のファイルを上書きしませんが、すべて問題ないと想定します。- 移動 - オプションを設定するには、moveExisting オプションも使用する必要があります。オプション eagerDeleteTargetFile を使用して、ファイルを移動する際に既存ファイルが存在する場合に何をすべきか制御でき、そうでない場合は移動操作が失敗します。移動オプションは、ターゲットファイルを書き込む前に、既存のファイルを移動します。- TryRename は、tempFileName オプションが使用されている場合にのみ適用されます。これにより、存在チェックを実行せずに、一時的なファイル名から実際のファイル名への変更を試みることができます。このチェックは、一部のファイルシステム、特に FTP サーバーでは高速になる場合があります。 列挙値:
| オーバーライド | GenericFileExist |
| flatten (producer) | flatten は、ファイル名パスをフラット化して先頭のパスを削除するために使用されるので、ファイル名だけになります。これにより、サブディレクトリーに再帰的に使用できますが、たとえばファイルを別のディレクトリーに書き込む場合、ファイルは単一のディレクトリーに書き込まれます。これを producer で true に設定すると、CamelFileName ヘッダーのファイル名が先頭パスから削除されます。 | false | boolean |
| jailStartingDirectory (producer) | ファイルの書き込みを開始ディレクトリー (およびサブ) のみに拘束 (制限) するために使用されます。これはデフォルトで有効になっており、Camel は外部ディレクトリーにファイルを書き込むことができません (そのままでセキュアにするため)。無効にすると、親フォルダーやルートフォルダーなど、開始ディレクトリー以外のディレクトリーにファイルを書き込むことができます。 | true | boolean |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| moveExisting (producer) | fileExist=Move が設定されている場合に使用するファイル名の計算に使用される式 (File 言語など)。ファイルをバックアップサブディレクトリーに移動するには、backup と入力します。このオプションは、file:name、file:name.ext、file:name.noext、file:onlyname、file:onlyname.noext、file:ext、および file:parent の File Language トークンのみをサポートします。FTP コンポーネントでは file:parent がサポートされていないことに注意してください。FTP コンポーネントは、既存のファイルを現在のディレクトリーをベースとする相対ディレクトリーにしか移動できないためです。 | String | |
| tempFileName (producer) | tempPrefix オプションと同じですが、ファイル言語を使用するため、一時ファイル名の命名をより細かく制御できます。tempFilename の場所は、ベース uri のターゲットディレクトリーではなく、オプション 'fileName' の最終的なファイルの場所に相対的です。たとえば、オプション fileName にディレクトリー接頭辞が含まれている場合: dir/finalFilename の場合、tempFileName はそのサブディレクトリー dir に対して相対的です。 | String | |
| tempPrefix (producer) | このオプションは、一時的な名前を使用してファイルを書き込み、書き込みが完了した後に、その名前を実際の名前に変更するために使用されます。書き込み中のファイルを識別し、(排他的読み取りロックを使用せずに) consumer が進行中のファイルを読み取らないようにするために使用できます。大きなファイルをアップロードするときに FTP でよく使用されます。 | String | |
| allowNullBody (producer (advanced)) | ファイルの書き込み中に null の本文を許可するかどうかを指定するために使用されます。true に設定すると空のファイルが作成され、false に設定して null の本文をファイルコンポーネントに送信しようとすると、'Cannot write null body to file.' という GenericFileWriteException が出力されます。fileExist オプションを 'Override' に設定するとファイルは切り捨てられ、append に設定するとファイルは変更されません。 | false | boolean |
| chmod (producer (advanced)) | producer によって送信されるファイルパーミッションを指定します。chmod の値は 000 から 777 の間の値である必要があります。0755 のように先頭に数字がある場合は無視します。 | String | |
| chmodDirectory (producer (advanced)) | 不足しているディレクトリーを producer が作成するときに使用するディレクトリーパーミッションを指定します。chmod 値は 000 から 777 の間である必要があります。0755 のように先頭に数字がある場合は無視します。 | String | |
| eagerDeleteTargetFile (producer (advanced)) | 既存のターゲットファイルを積極的に削除するかどうか。このオプションは、fileExists=Override および tempFileName オプションを使用している場合にのみ適用されます。これを使用して、一時ファイルが書き込まれる前にターゲットファイルを削除することを無効化 (false に設定) できます。たとえば、大きなファイルを書き込んで、一時ファイルの書き込み中にターゲットファイルを存在させたい場合があります。これにより、一時ファイルの名前がターゲットファイル名に変更される直前まで、ターゲットファイルは削除されません。このオプションは、fileExist=Move が有効で、既存のファイルが存在する場合に、既存のファイルを削除するかどうかを制御するためにも使用されます。このオプション copyAndDeleteOnRenameFails が false の場合、既存のファイルが存在する場合は例外が出力されます。true の場合、移動操作の前に既存のファイルが削除されます。 | true | boolean |
| forceWrites (producer (advanced)) | ファイルシステムへの書き込みを強制的に同期するかどうか。たとえばログや監査ログへの書き込みなど、このレベルの保証が必要ない場合はオフにすることでパフォーマンスが向上します。 | true | boolean |
| keepLastModified (producer (advanced)) | ソースファイル (存在する場合) からの最終変更のタイムスタンプを保持します。Exchange.FILE_LAST_MODIFIED ヘッダーを使用してタイムスタンプを見つけます。このヘッダーには、java.util.Date またはタイムスタンプ付きの long を含めることができます。タイムスタンプが存在し、オプションが有効な場合は、書き込まれたファイルにこのタイムスタンプが設定されます。注記: このオプションは、ファイル producer にのみ適用されます。このオプションは、ftp producer では使用できません。 | false | boolean |
| moveExistingFileStrategy (producer (advanced)) | fileExist=Move が設定されている場合に使用する特別な命名トークンを持つファイルを移動するために使用されるストラテジー (カスタムストラテジー)。デフォルトでは、カスタムストラテジーが指定されていない場合に使用される実装があります。 | FileMoveExistingStrategy | |
| autoCreate (advanced) | ファイルのパス名に不足しているディレクトリーを自動的に作成します。ファイル consumer の場合は、開始ディレクトリーを作成することを意味します。ファイル producer の場合、ファイルが書き込まれるディレクトリーを意味します。 | true | boolean |
| bufferSize (advanced) | ファイルの書き込みに使用されるバッファーサイズ (バイト単位) (または、ファイルのダウンロードとアップロードに使用される FTP の場合)。 | 131072 | int |
| copyAndDeleteOnRenameFail (advanced) | ファイルの名前を直接変更できなかった場合に、フォールバックしてファイルのコピーと削除を行うかどうか。このオプションは FTP コンポーネントでは使用できません。 | true | boolean |
| renameUsingCopy (advanced) | コピーおよび削除ストラテジーを使用して名前変更操作を実行します。これは主に、通常の名前変更操作が信頼できない環境で使用されます (たとえば、異なるファイルシステムまたはネットワーク間)。このオプションは、遅延が追加された後に限り、コピーおよび削除ストラテジーに自動的にフォールバックする copyAndDeleteOnRenameFail パラメーターよりも優先されます。 | false | boolean |
| synchronous (advanced) | 同期処理を厳密に使用するかどうかを設定します。 | false | boolean |
| antExclude (filter) | ant スタイルのフィルターの除外。antInclude と antExclude の両方を使用する場合は、antInclude よりも antExclude が優先されます。コンマ区切り形式で複数の除外を指定できます。 | String | |
| antFilterCaseSensitive (filter) | ant フィルターに大文字と小文字を区別するフラグを設定します | true | boolean |
| antInclude (filter) | Ant スタイルフィルターの組み込み。コンマ区切り形式で複数の組み込みを指定できます。 | String | |
| eagerMaxMessagesPerPoll (filter) | maxMessagesPerPoll の制限が eager かどうかを制御できます。eager の場合、ファイルのスキャン中に制限されます。false の場合、すべてのファイルをスキャンし、並び替えを実行します。このオプションを false に設定すると、すべてのファイルを最初にソートしてからポーリングを制限できます。ソートのためにすべてのファイルの詳細がメモリー内にあるため、メモリー使用量が大きくなることに注意してください。 | true | boolean |
| exclude (filter) | ファイル名が正規表現パターンに一致する場合にファイルを除外するために使用されます (一致は大文字と小文字を区別しません)。プラス記号などのシンボルを使用する場合は、エンドポイント URI としてこれを設定する場合は RAW() 構文を使用して設定する必要があります。詳細はエンドポイント URI の設定を参照してください。 | String | |
| excludeExt (filter) | ファイル拡張子名 (大文字と小文字を区別しない) に一致するファイルを除外するために使用されます。たとえば、bak ファイルを除外するには、excludeExt=bak を使用します。bak ファイルおよび dat ファイルを除外する場合など、複数の拡張子は excludeExt=bak,dat のようにコンマで区切ることができます。ファイル拡張子にはすべての部分が含まれています。たとえば、mydata.tar.gz という名前のファイルの場合、拡張子は tar.gz になります。より柔軟性を高めるには、include/exclude オプションを使用します。 | String | |
| filter (filter) | org.apache.camel.component.file.GenericFileFilter クラスとしてのプラグ可能なフィルター。フィルターがその accept () メソッドで false を返す場合、ファイルをスキップします。 | GenericFileFilter | |
| filterDirectory (filter) | Simple 言語に基づいてディレクトリーをフィルタリングします。たとえば、現在の日付でフィルタリングするには、$\\{date:now:yyyMMdd} などの単純な日付パターンを使用できます。 | String | |
| filterFile (filter) | Simple 言語に基づいてファイルをフィルタリングします。たとえば、ファイルサイズでフィルタリングするには、$\\{file:size} 5000 を使用できます。 | String | |
| idempotent (filter) | Camel がすでに処理されたファイルをスキップできるように、Idempotent Consumer EIP パターンを使用するオプション。デフォルトでは、1000 エントリーを保持するメモリーベースの LRUCache を使用します。noop=true の場合は、同じファイルを何度も使用することを回避するため、べき等性も有効になります。 | false | Boolean |
| idempotentKey (filter) | カスタムのべき等性キーを使用するには、以下を行います。デフォルトでは、ファイルの絶対パスが使用されます。File 言語を使用できます。たとえば、ファイル名とファイルサイズを使用するには idempotentKey=$\\{file:name}-$\\{file:size} となります。 | String | |
| idempotentRepository (filter) | プラグイン可能なリポジトリー org.apache.camel.spi.IdempotentRepository は、何も指定されておらずべき等が true の場合、デフォルトで MemoryIdempotentRepository を使用します。 | IdempotentRepository | |
| include (filter) | ファイル名が正規表現パターンに一致する場合にファイルを含めるために使用されます (照合では大文字と小文字を区別します)。プラス記号などのシンボルを使用する場合は、エンドポイント URI としてこれを設定する場合は RAW() 構文を使用して設定する必要があります。詳細はエンドポイント URI の設定を参照してください。 | String | |
| includeExt (filter) | ファイル拡張子名 (大文字と小文字を区別しない) に一致するファイルを含めるために使用されます。たとえば、txt ファイルを含めるには includeExt=txt を使用します。複数の拡張子はコンマで区切ることができます。たとえば、txt ファイルと xml ファイルを含める場合は、includeExt=txt,xml を使用します。ファイル拡張子にはすべての部分が含まれています。たとえば、mydata.tar.gz という名前のファイルの場合、拡張子は tar.gz になります。より柔軟性を高めるには、include/exclude オプションを使用します。 | String | |
| maxDepth (filter) | ディレクトリーを再帰的に処理する際にトラバースする最大深度。 | 2147483647 | int |
| maxMessagesPerPoll (filter) | ポーリングごとに収集する最大メッセージを定義します。デフォルトでは最大値は設定されていません。たとえば制限を 1000 などに設定して、数千のファイルがあるサーバーの起動を回避できます。無効にするには、0 または負の値を設定します。注記: このオプションが使用されている場合、File および FTP コンポーネントはソート前に制限されます。たとえば、100000 個のファイルがある場合に maxMessagesPerPoll=500 を使用すると、最初の 500 個のファイルのみ選択され、ソートされます。eagerMaxMessagesPerPoll オプションを使用して、これを false に設定すると、最初にすべてのファイルをスキャンし、後でソートできます。 | int | |
| minDepth (filter) | ディレクトリーを再帰的に処理する際に処理を開始する最小深度。minDepth=1 はベースディレクトリーを意味します。minDepth=2 は最初のサブディレクトリーを意味します。 | int | |
| move (filter) | 処理後に移動する場合にファイル名を動的に設定するために使用される式 (Simple 言語など)。ファイルを .done サブディレクトリーに移動するには、.done と入力します。 | String | |
| exclusiveReadLockStrategy (lock) | org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy 実装としてのプラグ可能な読み取りロック。 | GenericFileExclusiveReadLockStrategy | |
| readLock (ロック) | ファイルに排他的な読み取りロックがある (つまり、ファイルが進行中または書き込み中ではない) 場合にのみファイルをポーリングするために、consumer が使用します。Camel はファイルロックが許可されるまで待機します。このオプションは、ストラテジーでビルドを提供します。none: 読み取りロックは使用されていません。markerFile: Camel はマーカーファイル (fileName.camelLock) を作成してロックを保持します。このオプションは、FTP コンポーネント changed では使用できません。changed は、ファイルの長さ/変更のタイムスタンプを使用して、ファイルが現在コピーされているかどうかを検出します。この判断には 1 秒以上かかるため、このオプションは他のオプションほど速くファイルを消費できませんが、JDK IO API はファイルが別のプロセスで使用中かどうか判断できないため、信頼性が高くなります。readLockCheckInterval オプションを使用してチェック頻度を設定できます。fileLock は java.nio.channels.FileLock 用です。このオプションは、Windows OS および FTP コンポーネントでは使用できません。ファイルシステムが分散ファイルロックをサポートしていない限り、マウント/共有によりリモートファイルシステムにアクセスする場合、このアプローチは避ける必要があります。rename: 排他的な読み取りロックを取得できるかどうかのテストとしてファイル名の変更を試みるために使用します。idempotent: (ファイルコンポーネントのみ) 読み取りロックとして idempotentRepository を使用するためのものです。これにより、べき等性リポジトリーの実装がサポートする場合に、クラスタリングをサポートする読み取りロックを使用できます。idempotent-changed: (ファイルコンポーネントのみ) idempotentRepository および changed を結合された read-lock として使用するためのものです。これにより、べき等性リポジトリーの実装がサポートする場合に、クラスタリングをサポートする読み取りロックを使用できます。idempotent-rename: (ファイルコンポーネントのみ) idempotentRepository および rename を結合された読み取りロックとして使用するためのものです。これにより、べき等リポジトリー実装がクラスタリングをサポートする場合、クラスタリングをサポートする読み取りロックを使用できます。注意: さまざまな読み取りロックは、異なるノードの concurrent consumer が共有ファイルシステム上の同じファイルを求めて競合するクラスターモードでの動作にすべて適しているわけではありません。.アトミックに近い操作を使用して空のマーカーファイルを作成する markerFile ですが、クラスターでの動作は保証されていません。fileLock の方が良好に機能しますが、ファイルシステムは分散ファイルロックなどに対応する必要があります。べき等性リポジトリーが Hazelcast コンポーネントや Infinispan などのクラスタリングに対応している場合、べき等性等読み取りロックを使用できます。 列挙値:
| none | String |
| readLockCheckInterval (lock) | 読み取りロックでサポートされている場合、読み取りロックの間隔 (ミリ単位)。この間隔は、読み取りロックを取得する試行間のスリープに使用されます。たとえば、changed 読み取りロックを使用する場合、遅い書き込みに対応するために間隔を長く設定できます。デフォルトは 1 秒ですが、producer によるファイルの書き込みが非常に遅い場合は短すぎる可能性があります。注記: FTP の場合、デフォルトの readLockCheckInterval は 5000 です。readLockTimeout の値は readLockCheckInterval よりも大きくする必要がありますが、thumb のルールではタイムアウトは readLockCheckInterval の 2 倍以上にする必要があります。これは、タイムアウトに達する前に読み取りロックプロセスがロックを取得しようとするためのアンブル時間を確保するために必要です。 | 1000 | long |
| readLockDeleteOrphanLockFiles (lock) | Camel が適切にシャットダウンされなかった場合 (JVM クラッシュなど)、マーカーファイルを使用した読み取りロックが、ファイルシステムに残っている可能性のある孤立した読み取りロックファイルを起動時に削除する必要があるかどうか。このオプションを false にすると、孤立したロックファイルがあると Camel はそのファイルを取得しようとしなくなります。これは、別のノードが同じ共有ディレクトリーから同時にファイルを読み取っているが原因である可能性もあります。 | true | boolean |
| readLockIdempotentReleaseAsync (lock) | 遅延リリースタスクを同期と非同期のどちらにするか。詳細は、readLockIdempotentReleaseDelay オプションを参照してください。 | false | boolean |
| readLockIdempotentReleaseAsyncPoolSize (lock) | 非同期リリースタスクを使用する場合の、スケジュール済みスレッドプール内のスレッドの数。デフォルトの 1 コアスレッドの使用で、ほとんどすべてのユースケースに対応できます。べき等リポジトリーの更新が遅い場合、または処理するファイルが多い場合にのみ、より高い値に設定してください。readLockIdempotentReleaseExecutorService オプションを設定して共有スレッドプールを使用する場合、このオプションは使用されません。詳細は、readLockIdempotentReleaseDelay オプションを参照してください。 | int | |
| readLockIdempotentReleaseDelay (lock) | リリースタスクをミリ秒遅らせるかどうか。これを使用して、共有べき等性リポジトリーを使用するアクティブ/アクティブクラスターシナリオで、ファイルに読み取りロックが適用されていると見なされる場合にウィンドウを拡張するリリースタスクを遅らせることができます。そうすることで、競合条件により、他のノードは同じファイルをスキャンして取得できくなります。リリースタスクの期間を拡張することで、このような状況を防ぐことができます。readLockRemoveOnCommit を true に設定した場合にのみ、遅延が必要になることに注意してください。 | int | |
| readLockIdempotentReleaseExecutorService (lock) | 非同期リリースタスクにカスタムおよび共有スレッドプールを使用します。詳細は、readLockIdempotentReleaseDelay オプションを参照してください。 | ScheduledExecutorService | |
| readLockLoggingLevel (lock) | 読み取りロックを取得できなかったときに使用されるロギングレベル。デフォルトでは、DEBUG がログに記録されます。このレベルを変更できます。たとえば、ログを記録しないように OFF に設定できます。このオプションを適用できる readLock タイプは、changed、fileLock、idempotent、idempotent-changed、idempotent-rename、rename のみです。 列挙値:
| DEBUG | LoggingLevel |
| readLockMarkerFile (lock) | changed、rename、exclusive の読み取りロックタイプでマーカーファイルを使用するかどうか。デフォルトでは、他のプロセスが同じファイルを取得するのを防ぐために、マーカーファイルも使用されます。このオプションを false に設定すると、この動作をオフにできます。たとえば、Camel アプリケーションによってマーカーファイルをファイルシステムに書き込みたくない場合などです。 | true | boolean |
| readLockMinAge (lock) | このオプションは、readLock=changed の場合にのみ適用されます。読み取りロックを取得しようとする前に、ファイルが経過しなければならない最小期間を指定できます。たとえば、readLockMinAge=300s を使用して、ファイルに 5 分以上の経過を要求します。これにより、指定された期間以上のファイルの取得を試みるため、changed 読み取りロックが高速化されます。 | 0 | long |
| readLockMinLength (lock) | このオプションは、readLock=changed の場合にのみ適用されます。最小ファイル長を設定できます。デフォルトで Camel はファイルにデータが含まれていると想定するため、デフォルト値は 1 です。このオプションをゼロに設定すると、長さがゼロのファイルを使用できます。 | 1 | long |
| readLockRemoveOnCommit (lock) | このオプションは、readLock=idempotent にのみ適用されます。ファイル処理に成功し、コミットが行われるときに、べき等性リポジトリーからファイル名のエントリーを削除するかどうかを指定できます。デフォルトはファイルは削除されないため、競合状態が発生せず、別のアクティブなノードがファイルを取得しようとする可能性があります。代わりにべき等性リポジトリーは、X 分後にファイル名のエントリーをエビクトするように設定するエビクションストラテジーをサポートする場合があります。これにより、競合状態の問題がなくなります。詳細は、readLockIdempotentReleaseDelay オプションを参照してください。 | false | boolean |
| readLockRemoveOnRollback (lock) | このオプションは、readLock=idempotent にのみ適用されます。ファイル処理に失敗し、ロールバックが発生するときに、べき等性リポジトリーからファイル名のエントリーを削除するかどうかを指定できます。このオプションが false の場合、ファイル名のエントリーが (ファイルがコミットされたかのように) 確認されます。 | true | boolean |
| readLockTimeout (lock) | 読み取りロックでサポートされている場合、読み取りロックのオプションのタイムアウト (ミリ秒単位)。読み取りロックを許可できず、タイムアウトがトリガーされた場合、Camel はファイルをスキップします。次のポーリングで、Camel はファイルを再試行します。このときに、読み取りロックが許可される可能性があります。無期限を指定するには、0 以下の値を使用します。現在、fileLock、changed、および rename がタイムアウトに対応しています。注記: FTP の場合、デフォルトの readLockTimeout 値は 10000 ではなく 20000 です。readLockTimeout の値は readLockCheckInterval よりも大きくする必要がありますが、thumb のルールではタイムアウトは readLockCheckInterval の 2 倍以上にする必要があります。これは、タイムアウトに達する前に読み取りロックプロセスがロックを取得しようとするためのアンブル時間を確保するために必要です。 | 10000 | long |
| backoffErrorThreshold (scheduler) | backoffMultipler が開始する前に発生する必要がある後続のエラーポーリング (エラーによって失敗した) の数。 | int | |
| backoffIdleThreshold (scheduler) | backoffMultipler が開始する前に発生する必要がある後続のアイドルポーリングの数。 | int | |
| backoffMultiplier (scheduler) | 後続のアイドル状態/エラーが連続して発生した場合に、スケジュールされたポーリング consumer のバックオフを許可します。乗数は、実際に次の試行が行われる前にスキップされるポーリングの数です。このオプションが使用されている場合は、backoffIdleThreshold や backoffErrorThreshold も設定する必要があります。 | int | |
| delay (scheduler) | 次のポーリングまでの時間 (ミリ秒単位)。 | 500 | long |
| greedy (scheduler) | greedy が有効で、以前の実行が 1 つ以上のメッセージをポーリングした場合、ScheduledPollConsumer は即座に再度実行されます。 | false | boolean |
| initialDelay (scheduler) | 最初のポーリングが開始されるまでの時間 (ミリ秒単位)。 | 1000 | long |
| repeatCount (scheduler) | 実行の最大数を指定します。そのため、これを 1 に設定するとスケジューラーは 1 度だけ実行されます。これを 5 に設定した場合、5 回だけ実行されます。0 または負の値を設定すると、無制限に実行されます。 | 0 | long |
| runLoggingLevel (scheduler) | consumer はポーリング時に開始/完了のログ行を記録します。このオプションを使用すると、ログレベルを設定できます。 列挙値:
| TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | consumer に使用するカスタム/共有スレッドプールを設定できます。デフォルトでは、各 consumer に独自の単一スレッドのスレッドプールがあります。 | ScheduledExecutorService | |
| scheduler (scheduler) | camel-spring または camel-quartz コンポーネントから cron スケジューラーを使用します。スケジューラーにビルドされた値 spring または quartz を使用。 | none | オブジェクト |
| schedulerProperties (scheduler) | カスタムスケジューラーまたは Quartz や Spring ベースのスケジューラーを使用する場合に、追加のプロパティーを設定します。 | Map | |
| startScheduler (scheduler) | スケジューラーを自動起動するかどうか。 | true | boolean |
| timeUnit (scheduler) | initialDelay および delay オプションの時間単位。 列挙値:
| MILLISECONDS | TimeUnit |
| useFixedDelay (scheduler) | 固定遅延または固定レートを使用するかどうかを制御します。詳細は、JDK の ScheduledExecutorService を参照してください。 | true | boolean |
| シャッフル (並べ替え) | ファイルの一覧をシャッフルします (ランダムな順序でのソート) | false | boolean |
| sortBy (sort) | File 言語を使用したビルトインソート。ネストされたソートをサポートしているため、ファイル名でのソートと、2 つ目のグループとして変更日でソートできます。 | String | |
| sorter (sort) | java.util.Comparator クラスとしてのプラグ可能なソーター。 | Comparator |
ファイル producer のデフォルト動作
デフォルトでは、同じ名前の既存ファイルが存在する場合は、既存ファイルをオーバーライドします。
34.6. 移動および削除操作 リンクのコピーリンクがクリップボードにコピーされました!
移動または削除操作は、ルーティングが完了した後 (ポストコマンド) に実行されます。そのため、Exchange の処理中、ファイルはまだ受信トレイフォルダーにあります。
これを例で説明しましょう。
from("file://inbox?move=.done").to("bean:handleOrder");
ファイルが inbox フォルダーにドロップされると、ファイル consumer はこれに気づき、handleOrder Bean にルーティングされる新しい FileExchange を作成します。次に、Bean は File オブジェクトを処理します。この時点で、ファイルはまだ inbox フォルダーにあります。Bean が完了してルートが完了すると、file consumer は移動操作を実行し、ファイルを .done サブフォルダーに移動します。
move および preMove オプションは、ディレクトリー名とみなされます (ただし、File 言語や Simple などの式を使用する場合は、式の評価結果が使用するファイル名になります。たとえば、以下を設定する場合、
move=../backup/copy-of-${file:name}
File 言語 を使用しています。つまり、使用するように返されたファイル名を使用しています)。これは、相対または絶対のいずれかになります。相対の場合、ディレクトリーは、ファイルが消費されたフォルダー内のサブフォルダーとして作成されます。
デフォルトでは、Camel は消費されたファイルを、ファイルが消費されたディレクトリーに相対的な .camel サブフォルダーに移動します。
処理後にファイルを削除する場合、ルートは次のようになります。
from("file://inbox?delete=true").to("bean:handleOrder");
処理 前 にファイルを移動する 事前 移動操作が導入されました。これにより、処理される前にこのサブフォルダーに移動されるときに、どのファイルがスキャンされたかをマークできます。
from("file://inbox?preMove=inprogress").to("bean:handleOrder");
pre の動きと通常の動きを組み合わせることができます。
from("file://inbox?preMove=inprogress&move=.done").to("bean:handleOrder");
したがって、この状況では、ファイルは処理中は inprogress フォルダーにあり、処理後は .done フォルダーに移動されます。
34.7. Move および PreMove オプションのきめ細かな制御 リンクのコピーリンクがクリップボードにコピーされました!
move および preMove オプションは式ベースであるため、ディレクトリーおよび名前パターンの高度な設定を行う File 言語 の機能をフルに活用できます。
実際、Camel は、入力したディレクトリー名を File 言語式に内部的に変換します。したがって、move=.done と入力すると、Camel はこれを ${file:parent}/.done/${file:onlyname} に変換します。これは、オプション値に $\{ } を指定していないことを Camel が検出した場合にのみ行われます。したがって、$\{ } を入力すると Camel はそれを変換し ない ため、フルパワーを使用できます。
そのため、ファイルを今日の日付をパターンとしてバックアップフォルダーに移動する場合は、次のようにします。
move=backup/${date:now:yyyyMMdd}/${file:name}
34.8. moveFailed について リンクのコピーリンクがクリップボードにコピーされました!
moveFailed オプションを使用すると、正常に処理 できなかった ファイルを別の場所 (選択したエラーフォルダーなど) に移動できます。たとえば、エラーフォルダー内のファイルをタイムスタンプ付きで移動するには、moveFailed=/error/${} を使用できます。
file:name.noext}-${date:now:yyyyMMddHHmmssSSS}.${\'\'file:ext
34.9. メッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントでは、次のヘッダーがサポートされています。
34.9.1. ファイル producer のみ リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 説明 |
|---|---|
|
|
書き込むファイルの名前を指定します (エンドポイントディレクトリーに相対的)。この名前は |
|
| 書き込まれた出力ファイルの実際の絶対ファイルパス (パス + 名前)。このヘッダーは Camel によって設定され、その目的は、書き込まれたファイルの名前をエンドユーザーに提供することです。 |
|
|
|
34.9.2. file consumer のみ リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 説明 |
|---|---|
|
| エンドポイントで設定された開始ディレクトリーからのオフセットを含む相対ファイルパスとしての使用済みファイルの名前。 |
|
| ファイル名のみ (先行パスを含まない名前)。 |
|
|
消費されたファイルが絶対パスを示すかどうかを指定する |
|
| ファイルへの絶対パス。相対ファイルの場合、このパスは代わりに相対パスを保持します。 |
|
| ファイルパス。相対ファイルの場合、これは開始ディレクトリー + 相対ファイル名です。絶対ファイルの場合、これは絶対パスです。 |
|
| 相対パス。 |
|
| 親パス。 |
|
|
ファイルサイズを含む |
|
|
ファイルの最終変更タイムスタンプを含む |
34.10. バッチ consumer リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントは、Batch Consumer を実装します。
34.11. Exchange プロパティー (file consumer のみ) リンクのコピーリンクがクリップボードにコピーされました!
file consumer は BatchConsumer を実装するため、ポーリングするファイルのバッチ処理をサポートします。バッチ処理とは、Camel が次の追加プロパティーを Exchange に追加することを意味します。これにより、ポーリングされたファイルの数、現在のインデックス、およびバッチがすでに完了しているかどうかがわかります。
| プロパティー | 説明 |
|---|---|
|
| このバッチでポーリングされたファイルの総数。 |
|
| バッチの現在のインデックス。0 から始まります。 |
|
|
バッチ内の最後の Exchange を示す |
これにより、たとえば、このバッチに存在するファイルの数を知ることができ、たとえば、Aggregator2 にこの数のファイルを集約させることができます。
34.12. 文字セットの使用 リンクのコピーリンクがクリップボードにコピーされました!
charset オプションを使用すると、producer エンドポイントと consumer エンドポイントの両方でファイルのエンコードを設定できます。たとえば、utf-8 ファイルを読み込んで、ファイルを iso-8859-1 に変換する場合は、次のようにします。
from("file:inbox?charset=utf-8")
.to("file:outbox?charset=iso-8859-1")
ルートで convertBodyTo を使用することもできます。以下の例では、まだ utf-8 形式の入力ファイルがありますが、ファイルの内容を iso-8859-1 形式のバイト配列に変換します。そして、Bean にデータを処理させます。現在の文字セットを使用して送信トレイフォルダーにコンテンツを書き込む前。
from("file:inbox?charset=utf-8")
.convertBodyTo(byte[].class, "iso-8859-1")
.to("bean:myBean")
.to("file:outbox");
consumer エンドポイントで文字セットを省略した場合、Camel はファイルの文字セットを認識せず、デフォルトで "UTF-8" を使用します。ただし、キー org.apache.camel.default.charset を使用して、JVM システムプロパティーをオーバーライドし、別のデフォルトエンコーディングを使用するように設定できます。
以下の例では、ファイルが UTF-8 エンコーディングでない場合、これが問題になる可能性があります。これは、ファイルを読み取るためのデフォルトのエンコーディングです。
この例では、ファイルを書き込むときに、コンテンツはすでにバイト配列に変換されているため、コンテンツをそのまま (さらにエンコーディングせずに) 直接書き込みます。
from("file:inbox")
.convertBodyTo(byte[].class, "iso-8859-1")
.to("bean:myBean")
.to("file:outbox");
キー Exchange.CHARSET_NAME を使用してエクスチェンジのプロパティーを設定することにより、ファイルの書き込み時に動的なエンコーディングをオーバーライドして制御することもできます。たとえば、以下のルートでは、メッセージヘッダーの値を使用してプロパティーを設定します。
from("file:inbox")
.convertBodyTo(byte[].class, "iso-8859-1")
.to("bean:myBean")
.setProperty(Exchange.CHARSET_NAME, header("someCharsetHeader"))
.to("file:outbox");
より単純にすることを推奨します。同じエンコーディングのファイルをピックアップし、特定のエンコーディングでファイルを書き込みたい場合は、エンドポイントで charset オプションを使用することを推奨します。
エンドポイントで charset オプションを明示的に設定した場合は、Exchange.CHARSET_NAME プロパティーに関係なく、その設定が使用されることに注意してください。
いくつかの問題がある場合は、org.apache.camel.component.file で DEBUG ロギングを有効にし、特定の文字セットを使用してファイルを読み書きするときに Camel ログを有効にすることができます。
たとえば、以下のルートでは次のログが記録されます。
from("file:inbox?charset=utf-8")
.to("file:outbox?charset=iso-8859-1")
そしてログ:
DEBUG GenericFileConverter - Read file /Users/davsclaus/workspace/camel/camel-core/target/charset/input/input.txt with charset utf-8
DEBUG FileOperations - Using Reader to write file: target/charset/output.txt with charset: iso-8859-1
34.13. フォルダーとファイル名に関するよくある問題 リンクのコピーリンクがクリップボードにコピーされました!
Camel がファイルを生成する (ファイルを書き込む) 場合、選択したファイル名を設定する方法に影響するいくつかの問題があります。デフォルトでは、Camel はメッセージ ID をファイル名として使用します。メッセージ ID は通常、一意に生成された ID であるため、ID-MACHINENAME-2443-1211718892437-1-0 のようなファイル名になります。そのようなファイル名が望ましくない場合は、CamelFileName メッセージヘッダーにファイル名を指定する必要があります。定数 Exchange.FILE_NAME も使用できます。
以下のサンプルコードは、メッセージ ID をファイル名として使用してファイルを生成します。
from("direct:report").to("file:target/reports");
report.txt をファイル名として使用するには、次の手順を実行する必要があります。
from("direct:report").setHeader(Exchange.FILE_NAME, constant("report.txt")).to( "file:target/reports");
-
上記と同じですが、
CamelFileNameを使用します:
from("direct:report").setHeader("CamelFileName", constant("report.txt")).to( "file:target/reports");
そして、fileName URI オプションを使用してエンドポイントにファイル名を設定する構文。
from("direct:report").to("file:target/reports/?fileName=report.txt");
34.14. ファイル名式 リンクのコピーリンクがクリップボードにコピーされました!
ファイル名は、expression オプションを使用するか、CamelFileName ヘッダーの文字列ベースの File 言語式として設定できます。構文とサンプルは、File 言語を参照してください。
34.15. 他のユーザーがファイルを直接ドロップしたフォルダーからファイルを消費する リンクのコピーリンクがクリップボードにコピーされました!
他のアプリケーションがファイルを直接書き込むフォルダーからファイルを使用する場合は注意してください。さまざまな readLock オプションを見て、ユースケースに適したオプションを確認してください。ただし、最善の方法は、別のフォルダーに書き込み、書き込み後にファイルをドロップフォルダーに移動することです。ただし、ファイルをドロップフォルダーに直接書き込む場合、変更されたオプションは、ファイルサイズ/変更が一定期間にわたって変更されたかどうかを確認するためにファイル変更アルゴリズムを使用するため、ファイルが現在書き込み/コピーされているかどうかをより適切に検出できます。他の readLock オプションは Java File API に依存していますが、残念ながら、これは必ずしもこれを検出するのに適しているとは限りません。また、doneFileName オプションを確認することもできます。これは、マーカーファイル (完了ファイル) を使用して、ファイルが完了し、使用する準備が整ったときに通知します。
34.16. 完了ファイルの使用 リンクのコピーリンクがクリップボードにコピーされました!
以下のセクション 書き込み完了ファイル も参照してください。
完了ファイルが存在する場合にのみファイルを使用する場合は、エンドポイントで doneFileName オプションを使用できます。
from("file:bar?doneFileName=done");
完了した ファイル がターゲットファイルと同じディレクトリーに存在する場合、bar フォルダーのファイルのみを消費します。Camel は、ファイルの消費が完了すると、完了した ファイルを自動的に削除します。noop=true が設定されている場合、Camel は 完了した ファイルを自動的に削除しません。
ただし、ターゲットファイルごとに 1 つの 完了ファイル を作成する方が一般的です。これは、1:1 の相関があることを意味します。これを行うには、doneFileName オプションで動的プレースホルダーを使用する必要があります。現在、Camel は次の 2 つの動的トークンをサポートしています: file:name と file:name.noext は $\{ } で囲む必要があります。consumer は、done ファイル 名の静的部分のみを接頭辞または接尾辞 (両方ではない) としてサポートします。
from("file:bar?doneFileName=${file:name}.done");
この例では、ファイル名 が .done の完了ファイルが存在する場合にのみ、ファイルがポーリングされます。以下に例を示します。
-
hello.txt- 使用するファイルです -
hello.txt.done- 関連する完了ファイルです
次のように、done ファイルの接頭辞を使用することもできます。
from("file:bar?doneFileName=ready-${file:name}");
-
hello.txt- 使用するファイルです -
ready-hello.txt- 関連する完了ファイルです
34.17. 完了ファイルの書き込み リンクのコピーリンクがクリップボードにコピーされました!
ファイルを書き終わったら、ファイルが完成して書き終わったことを他の人に示すために、一種のマーカーとして追加の 完了ファイル を書きたいと思うかもしれません。これを行うには、ファイル producer エンドポイントで doneFileName オプションを使用できます。
.to("file:bar?doneFileName=done");
ターゲットファイルと同じディレクトリーに done という名前のファイルを作成するだけです。
ただし、ターゲットファイルごとに 1 つの完了ファイルを作成する方が一般的です。これは、1:1 の相関があることを意味します。これを行うには、doneFileName オプションで動的プレースホルダーを使用する必要があります。現在、Camel は次の 2 つの動的トークンをサポートしています: file:name と file:name.noext は $\{ } で囲む必要があります。
.to("file:bar?doneFileName=done-${file:name}");
たとえば、ターゲットファイルがターゲットファイルと同じディレクトリーにある foo.txt の場合、done-foo.txt という名前のファイルを作成します。
.to("file:bar?doneFileName=${file:name}.done");
たとえば、ターゲットファイルがターゲットファイルと同じディレクトリーにある foo.txt の場合、foo.txt.done という名前のファイルを作成します。
.to("file:bar?doneFileName=${file:name.noext}.done");
たとえば、ターゲットファイルがターゲットファイルと同じディレクトリーにある foo.txt の場合、foo.done という名前のファイルが作成されます。
34.18. サンプル リンクのコピーリンクがクリップボードにコピーされました!
34.18.1. ディレクトリーから読み取り、別のディレクトリーに書き込む リンクのコピーリンクがクリップボードにコピーされました!
from("file://inputdir/?delete=true").to("file://outputdir")
34.18.2. オーバーライド動的名を使用して、ディレクトリーから読み取り、別のディレクトリーに書き込みます リンクのコピーリンクがクリップボードにコピーされました!
from("file://inputdir/?delete=true").to("file://outputdir?overruleFile=copy-of-${file:name}")
ディレクトリーをリッスンし、そこにドロップされた各ファイルのメッセージを作成します。内容を outputdir にコピーし、inputdir 内のファイルを削除します。
34.18.3. ディレクトリーから再帰的に読み取り、別のディレクトリーに書き込む リンクのコピーリンクがクリップボードにコピーされました!
from("file://inputdir/?recursive=true&delete=true").to("file://outputdir")
ディレクトリーをリッスンし、そこにドロップされた各ファイルのメッセージを作成します。内容を outputdir にコピーし、inputdir 内のファイルを削除します。サブディレクトリーに再帰的にスキャンします。サブディレクトリーを含めて、outputdir 内の inputdir と同じディレクトリー構造にファイルを配置します。
inputdir/foo.txt
inputdir/sub/bar.txt
次の出力レイアウトになります。
outputdir/foo.txt
outputdir/sub/bar.txt
34.19. フラット化の使用 リンクのコピーリンクがクリップボードにコピーされました!
ファイルを同じディレクトリーの outputdir ディレクトリーに保存する場合に、ソースディレクトリーのレイアウトを無視して (パスをフラット化するなど)、ファイル producer 側で flatten=true オプションを追加するだけです。
from("file://inputdir/?recursive=true&delete=true").to("file://outputdir?flatten=true")
次の出力レイアウトになります。
outputdir/foo.txt
outputdir/bar.txt
34.20. ディレクトリーからの読み取りとデフォルトの移動操作 リンクのコピーリンクがクリップボードにコピーされました!
Camel はデフォルトで、処理されたファイルをファイルが消費されたディレクトリーの .camel サブディレクトリーに移動します。
from("file://inputdir/?recursive=true&delete=true").to("file://outputdir")
次のようにレイアウトに影響します。
前
inputdir/foo.txt
inputdir/sub/bar.txt
after
inputdir/.camel/foo.txt
inputdir/sub/.camel/bar.txt
outputdir/foo.txt
outputdir/sub/bar.txt
34.21. ディレクトリーから読み取り、Java でメッセージを処理する リンクのコピーリンクがクリップボードにコピーされました!
from("file://inputdir/").process(new Processor() {
public void process(Exchange exchange) throws Exception {
Object body = exchange.getIn().getBody();
// do some business logic with the input body
}
});
本文は、inputdir ディレクトリーにドロップされたばかりのファイルを指す File オブジェクトになります。
34.22. ファイルへの書き込み リンクのコピーリンクがクリップボードにコピーされました!
もちろん、Camel はファイルを書き込むこともできます。つまり、ファイルを生成します。以下のサンプルでは、ディレクトリーに書き込まれる前に処理する SEDA キューに関するいくつかのレポートを受け取ります。
34.22.1. Exchange.FILE_NAME を使用してサブディレクトリーに書き込む リンクのコピーリンクがクリップボードにコピーされました!
単一のルートを使用して、任意の数のサブディレクトリーにファイルを書き込むことができます。そのようなルート設定がある場合:
<route>
<from uri="bean:myBean"/>
<to uri="file:/rootDirectory"/>
</route>
myBean でヘッダー Exchange.FILE_NAME を次のような値に設定できます。
Exchange.FILE_NAME = hello.txt => /rootDirectory/hello.txt
Exchange.FILE_NAME = foo/bye.txt => /rootDirectory/foo/bye.txt
これにより、単一のルートでファイルを複数の宛先に書き込むことができます。
34.22.2. 最終宛先に相対的な一時ディレクトリーを介してファイルを書き込む リンクのコピーリンクがクリップボードにコピーされました!
宛先ディレクトリーからの相対ディレクトリーにファイルを一時的に書き込む必要がある場合があります。このような状況は通常、フィルタリング機能が制限された外部プロセスが、書き込み先のディレクトリーから読み取っているときに発生します。以下の例では、ファイルは /var/myapp/filesInProgress ディレクトリーに書き込まれ、データ転送が完了すると、原子的に/var/myapp/finalDirectory ディレクトリーに移動されます。
from("direct:start").
to("file:///var/myapp/finalDirectory?tempPrefix=/../filesInProgress/");
34.23. ファイル名に式を使用する リンクのコピーリンクがクリップボードにコピーされました!
このサンプルでは、今日の日付をサブフォルダー名として使用して、消費されたファイルをバックアップフォルダーに移動します。
from("file://inbox?move=backup/${date:now:yyyyMMdd}/${file:name}").to("...");
その他のサンプルは、File 言語 を参照してください。
34.24. 同じファイルを複数回読み取ることを避ける (べき等 consumer) リンクのコピーリンクがクリップボードにコピーされました!
Camel は Idempotent Consumer をコンポーネント内で直接サポートしているため、すでに処理されたファイルはスキップされます。この機能は、idempotent=true オプションを設定することで有効にできます。
from("file://inbox?idempotent=true").to("...");
Camel は絶対ファイル名を冪等キーとして使用して、重複ファイルを検出します。このキーは、idempotentKey オプションで式を使用してカスタマイズできます。たとえば、名前とファイルサイズの両方をキーとして使用するには
<route>
<from uri="file://inbox?idempotent=true&idempotentKey=${file:name}-${file:size}"/>
<to uri="bean:processInbox"/>
</route>
デフォルトでは、Camel は消費されたファイルを追跡するためにインメモリーベースのストアを使用し、最大 1000 エントリーを保持する最も使用頻度の低いキャッシュを使用します。値に # 記号を使用して idempotentRepository オプションを使用して、指定された id を持つレジストリー内の Bean を参照していることを示すことにより、このストアの独自の実装をプラグインできます。
<!-- define our store as a plain spring bean -->
<bean id="myStore" class="com.mycompany.MyIdempotentStore"/>
<route>
<from uri="file://inbox?idempotent=true&idempotentRepository=#myStore"/>
<to uri="bean:processInbox"/>
</route>
以前に消費されたためにファイルをスキップした場合、Camel は DEBUG レベルでログを記録します。
DEBUG FileConsumer is idempotent and the file has been consumed before. Will skip this file: target\idempotent\report.txt
34.25. ファイルベースの冪等リポジトリーの使用 リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、デフォルトとして使用されるメモリー内ベースの代わりに、ファイルベースのべき等リポジトリー org.apache.camel.processor.idempotent.FileIdempotentRepository を使用します。
このリポジトリーは、ファイルリポジトリーの読み取りを回避するために、第 1 レベルのキャッシュを使用します。ファイルリポジトリーのみを使用して、第 1 レベルのキャッシュのコンテンツを格納します。これにより、リポジトリーはサーバーの再起動後も存続できます。起動時にファイルのコンテンツを第 1 レベルのキャッシュにロードします。ファイル内の別々の行にキーを格納するため、ファイル構造は非常に単純です。デフォルトでは、ファイルストアのサイズ制限は 1MB です。ファイルが大きくなると、Camel はファイルストアを切り詰め、第 1 レベルのキャッシュを新しい空のファイルにフラッシュしてコンテンツを再構築します。
ファイルべき等リポジトリーを作成する Spring XML を使用してリポジトリーを設定し、# 記号を使用して idempotentRepository でリポジトリーを使用するように file consumer を定義して、レジストリールックアップを示します。
34.26. JPA ベースのべき等リポジトリーの使用 リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、デフォルトとして使用されるメモリー内ベースの代わりに、JPA ベースのべき等リポジトリーを使用します。
まず、クラス org.apache.camel.processor.idempotent.jpa.MessageProcessed をモデルとして使用する必要がある META-INF/persistence.xml に persistence-unit が必要です。
<persistence-unit name="idempotentDb" transaction-type="RESOURCE_LOCAL">
<class>org.apache.camel.processor.idempotent.jpa.MessageProcessed</class>
<properties>
<property name="openjpa.ConnectionURL" value="jdbc:derby:target/idempotentTest;create=true"/>
<property name="openjpa.ConnectionDriverName" value="org.apache.derby.jdbc.EmbeddedDriver"/>
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/>
<property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO"/>
<property name="openjpa.Multithreaded" value="true"/>
</properties>
</persistence-unit>
次に、Spring XML ファイルにも JPA べき等リポジトリーを作成できます。
<!-- we define our jpa based idempotent repository we want to use in the file consumer -->
<bean id="jpaStore" class="org.apache.camel.processor.idempotent.jpa.JpaMessageIdRepository">
<!-- Here we refer to the entityManagerFactory -->
<constructor-arg index="0" ref="entityManagerFactory"/>
<!-- This 2nd parameter is the name (= a category name).
You can have different repositories with different names -->
<constructor-arg index="1" value="FileConsumer"/>
</bean>
はい、# 構文オプションを使用して idempotentRepository を使用して、file consumer エンドポイントで jpaStore Bean を参照する必要があります。
<route>
<from uri="file://inbox?idempotent=true&idempotentRepository=#jpaStore"/>
<to uri="bean:processInbox"/>
</route>
34.27. org.apache.camel.component.file.GenericFileFilter を使用するフィルター リンクのコピーリンクがクリップボードにコピーされました!
Camel は、プラグイン可能なフィルタリング戦略をサポートしています。次に、そのようなフィルターを使用してエンドポイントを設定し、処理中の特定のファイルをスキップできます。
サンプルでは、ファイル名が skip で始まるファイルをスキップする独自のフィルターを作成しました。
そして、フィルター 属性を使用してルートを設定し、Spring XML ファイルで定義したフィルターを (# 表記を使用して) 参照できます。
<!-- define our filter as a plain spring bean -->
<bean id="myFilter" class="com.mycompany.MyFileFilter"/>
<route>
<from uri="file://inbox?filter=#myFilter"/>
<to uri="bean:processInbox"/>
</route>
34.28. ANT パスマッチャーを使用したフィルタリング リンクのコピーリンクがクリップボードにコピーされました!
ANT パスマッチャーは AntPathMatcher に基づいています。
ファイルパスは、次のルールに一致します。
-
?1 文字に一致 -
*0 個以上の文字に一致 -
**パス内の 0 個以上のディレクトリーに一致
antInclude および antExclude オプションを使用すると、フィルターを定義することなく、ANT スタイルの包含/除外を簡単に指定できます。詳細は、上記の URI オプションを参照してください。以下のサンプルは、その使用方法を示しています。
minDepth/maxDepth を recursive=true、antExclude=…、readLockDeleteOrphanLockFiles=true と組み合わせて使用すると、maxDepth で指定された値よりも深いすべてのファイル/サブフォルダーがスキャンされます。回避策としては、readLockDeleteOrphanLockFiles=false を設定します。
34.28.1. コンパレータを使用した並べ替え リンクのコピーリンクがクリップボードにコピーされました!
Camel は、プラグイン可能な並べ替えストラテジーをサポートしています。この戦略は、Java の java.util.Comparator でビルドを使用することです。次に、このようなコンパレーターを使用してエンドポイントを設定し、処理する前に Camel にファイルをソートさせることができます。
サンプルでは、ファイル名でソートする独自のコンパレータを作成しました。
次に、sorter オプションを使用してルートを設定し、Spring XML ファイルで定義したソーター (mySorter) を参照できます。
<!-- define our sorter as a plain spring bean -->
<bean id="mySorter" class="com.mycompany.MyFileSorter"/>
<route>
<from uri="file://inbox?sorter=#mySorter"/>
<to uri="bean:processInbox"/>
</route>
URI オプションは、# 構文を使用して Bean を参照できます。
上記の Spring DSL アプリケーションでは、id の前に # を付けることで、レジストリー内の Bean を参照できます。したがって、sorter=#mySorter と記述すると、Camel はレジストリーで ID が mySorter の Bean を探すように指示されます。
34.28.2. sortBy を使用した並べ替え リンクのコピーリンクがクリップボードにコピーされました!
Camel は、プラグイン可能な並べ替えストラテジーをサポートしています。このストラテジーは、File 言語を使用して並べ替えを設定します。sortBy オプションは次のように設定されます。
sortBy=group 1;group 2;group 3;...
各グループはセミコロンで区切ります。単純な状況では、1 つのグループのみを使用するため、単純な例は次のようになります。
sortBy=file:name
これはファイル名でソートされます。グループの先頭に reverse: を付けることで順序を逆にすることができるため、ソートは Z..A: になります。
sortBy=reverse:file:name
File 言語の全機能を使用できるため、他のパラメーターの一部も使用できます。そのため、ファイルサイズで並べ替える場合は、次のようにします。
sortBy=file:length
文字列の比較に ignoreCase: を使用して、大文字と小文字を区別しないように設定できます。そのため、ファイル名の並べ替えを使用したいが大文字と小文字を区別したくない場合は、次のようにします。
sortBy=ignoreCase:file:name
ignore case と reverse を組み合わせることができますが、reverse を最初に指定する必要があります。
sortBy=reverse:ignoreCase:file:name
以下のサンプルでは、最後に変更されたファイルで並べ替えたいので、次のようにします。
sortBy=file:modified
次に、2 番目のオプションとして名前でグループ化し、同じ変更を含むファイルが名前でソートされるようにします。
sortBy=file:modified;file:name
ここで問題が発生しました。それを見つけることができますか?ファイルの変更されたタイムスタンプはミリ秒単位なので細かすぎますが、日付のみで並べ替えてから名前でサブグループ化したい場合はどうすればよいでしょうか?
File 言語の全機能を使用できるため、パターンをサポートする date コマンドを使用できます。したがって、これは次のように解決できます。
sortBy=date:file:yyyyMMdd;file:name
ええ、それは非常に強力です。ちなみに、グループごとにリバースを使用することもできるので、ファイル名を逆にすることができます。
sortBy=date:file:yyyyMMdd;reverse:file:name
34.29. GenericFileProcessStrategy の使用 リンクのコピーリンクがクリップボードにコピーされました!
オプション processStrategy を使用して、独自の begin、commit、および rollback ロジックを実装できるカスタム GenericFileProcessStrategy を使用できます。
たとえば、システムが、使用する必要があるフォルダーにファイルを書き込むと仮定します。ただし、別の 準備完了 ファイルが同様に書き込まれる前に、ファイルの使用を開始しないでください。
したがって、独自の GenericFileProcessStrategy を実装することで、これを次のように実装できます。
-
begin ()メソッドでは、特別な 準備完了 ファイルが存在するかどうかをテストできます。begin メソッドはブール値を返し、ファイルを使用できるかどうかを示します。 -
abort ()メソッドでは、beginオペレーションがfalseを返した場合に、リソースのクリーンアップなどの特別なロジックを実行できます。 -
commit ()メソッドでは、実際のファイルを移動し、準備完了 ファイルを削除することもできます。
34.30. フィルターの使用 リンクのコピーリンクがクリップボードにコピーされました!
filter オプションを使用すると、org.apache.camel.component.file.GenericFileFilter インターフェイスを実装することにより、Java コードでカスタムフィルターを実装できます。このインターフェイスには、ブール値を返す accept メソッドがあります。ファイルを含めるには true を返し、ファイルをスキップするには false を返します。ファイルがディレクトリーであるかどうかにかかわらず、GenericFile には isDirectory メソッドがあります。これにより、不要なディレクトリーをフィルタリングして、不要なディレクトリーをたどることを回避できます。
たとえば、名前が "skip" で始まるディレクトリーをスキップするには、次のように実装できます。
34.31. bridgeErrorHandler の使用 リンクのコピーリンクがクリップボードにコピーされました!
Camel エラーハンドラーを使用して file consumer で発生した例外を処理する場合は、以下に示すように bridgeErrorHandler オプションを有効にできます。
// to handle any IOException being thrown
onException(IOException.class)
.handled(true)
.log("IOException occurred due: ${exception.message}")
.transform().simple("Error ${exception.message}")
.to("mock:error");
// this is the file route that pickup files, notice how we bridge the consumer to use the Camel routing error handler
// the exclusiveReadLockStrategy is only configured because this is from an unit test, so we use that to simulate exceptions
from("file:target/nospace?bridgeErrorHandler=true")
.convertBodyTo(String.class)
.to("mock:result");
したがって、このオプションを有効にするだけで、ルート内のエラーハンドラーがそこから取得します。
bridgeErrorHandler を使用する場合
bridgeErrorHandler、次にインターセプターを使用する場合、OnCompletions は適用 されません。Exchange は Camel エラーハンドラーによって直接処理され、インターセプターや onCompletion などの前のアクションがアクションを実行することを許可しません。
34.32. デバッグロギング リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントには、問題が発生した場合に役立つログレベル TRACE があります。
34.33. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 11 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.cluster.file.acquire-lock-delay | ロックの取得を開始するまでの待機時間。 | String | |
| camel.cluster.file.acquire-lock-interval | ロックの取得を試みるまでの待機時間。 | String | |
| camel.cluster.file.attributes | カスタムサービス属性。 | Map | |
| camel.cluster.file.enabled | ファイルクラスターサービスを有効にするかどうかを設定します。デフォルトは false です。 | false | Boolean |
| camel.cluster.file.id | クラスターサービス ID。 | String | |
| camel.cluster.file.order | サービスルックアップの順序/優先度。 | Integer | |
| camel.cluster.file.root | ルートパス。 | String | |
| camel.component.file.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.file.bridge-error-handler | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | Boolean |
| camel.component.file.enabled | ファイルコンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.file.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
第35章 File 言語 リンクのコピーリンクがクリップボードにコピーされました!
File Expression Language はこの言語の拡張機能であり、File 関連の機能が追加されています。これらの機能は、ファイルパスと名前を操作する一般的なユースケースに関連しています。目標は、式を consumer と producer の両方に
動的ファイルパターンを設定するためのコンポーネントと合わせて使用することです。
File 言語は言語に統合されているので、Simple 言語内ですべてのファイル構文を直接使用できます。
35.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
File 言語は camel-core の一部です。
Red Hat build of Camel Spring Boot で file を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-core-starter</artifactId>
</dependency>
35.2. File 言語オプション リンクのコピーリンクがクリップボードにコピーされました!
File 言語は、以下に示す 2 つのオプションをサポートしています。
| 名前 | デフォルト | Java タイプ | 説明 |
|---|---|---|---|
| resultType |
| 結果の型 (出力からの型) のクラス名を設定します。 | |
| trim |
| 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 |
35.3. 構文 リンクのコピーリンクがクリップボードにコピーされました!
この言語は、言語の 拡張 であるため、構文も適用されます。したがって、以下の表には、追加のファイル関連機能のみがリストされています。
すべての File トークンは、java.io.File オブジェクトのメソッドと同じ式名を使用します。たとえば、file:absolute は java.io.File.getAbsolute () メソッドを参照します。すべての式が現在の Exchange でサポートされているわけではないことに注意してください。たとえば、コンポーネントは一部のオプションをサポートしますが、File コンポーネントはすべてのオプションをサポートします。
| 式 | 型 | File Consumer | ファイル producer | FTP consumer | FTP producer | 説明 |
|---|---|---|---|---|---|---|
| file:name | String | はい | いいえ | はい | いいえ | ファイル名を指します (開始ディレクトリーを起点にした相対パスにあります。以下の注記を参照してください)。 |
| file:name.ext | String | はい | いいえ | はい | いいえ | ファイル拡張子のみを指します |
| file:name.ext.single | String | はい | いいえ | はい | いいえ | ファイル拡張子を指します。ファイル拡張子に複数のドットがある場合には、この式は削除され、最後の部分のみが返されます。 |
| file:name.noext | String | はい | いいえ | はい | いいえ | 拡張子のないファイル名を指します (開始ディレクトリーを起点にした相対パスにあります。以下の注を参照してください) |
| file:name.noext.single | String | はい | いいえ | はい | いいえ | 拡張子のないファイル名を指します (開始ディレクトリーを起点にした相対パスにあります。以下の注を参照してください)ファイル拡張子に複数のドットがある場合、この変数は最後の部分のみを取り除き、他の部分を返します。 |
| file:onlyname | String | はい | いいえ | はい | いいえ | 先行パスなしでファイル名のみを指します。 |
| file:onlyname.noext | String | はい | いいえ | はい | いいえ | 拡張子や先行パスのないファイル名のみを指します。 |
| file:onlyname.noext.single | String | はい | いいえ | はい | いいえ | 拡張子や先行パスのないファイル名のみを指します。ファイル拡張子に複数のドットがある場合、この変数は最後の部分のみを取り除き、他の部分を返します。 |
| file:ext | String | はい | いいえ | はい | いいえ | ファイル拡張子のみを指します |
| file:parent | String | はい | いいえ | はい | いいえ | ファイルの親を参照します |
| file:path | String | はい | いいえ | はい | いいえ | ファイルパスを参照します |
| file:absolute | Boolean | はい | いいえ | いいえ | いいえ | ファイルが絶対パスまたは相対パスと見なされるかどうかを示します。 |
| file:absolute.path | String | はい | いいえ | いいえ | いいえ | 絶対ファイルパスを指します。 |
| file:length | Long | はい | いいえ | はい | いいえ | Long 型として返されるファイルの長さを参照します |
| file:size | Long | はい | いいえ | はい | いいえ | Long 型として返されるファイルの長さを参照します |
| file:modified | 日付 | はい | いいえ | はい | いいえ | 日付型として返された最終変更ファイルを指します。 |
| date:_command:pattern_ | String | はい | はい | はい | はい |
|
35.4. File トークンの例 リンクのコピーリンクがクリップボードにコピーされました!
35.4.1. 相対パス リンクのコピーリンクがクリップボードにコピーされました!
相対 ディレクトリー (.\filelanguage\test) にファイル hello.txt の java.io.File ハンドルがあります。そして、この開始ディレクトリー .\filelanguage を使用するようにエンドポイントを設定します。File トークンは次のように返されます。
| 式 | 戻り値 |
|---|---|
| file:name | test\hello.txt |
| file:name.ext | txt |
| file:name.noext | test\hello |
| file:onlyname | hello.txt |
| file:onlyname.noext | hello |
| file:ext | txt |
| file:parent | filelanguage\test |
| file:path | filelanguage\test\hello.txt |
| file:absolute | false |
| file:absolute.path | \workspace\camel\camel-core\target\filelanguage\test\hello.txt |
35.4.2. 絶対パス リンクのコピーリンクがクリップボードにコピーされました!
絶対 ディレクトリー (\workspace\camel\camel-core\target\filelanguage\test) にファイル hello.txt の java.io.File ハンドルがあります。そして、絶対開始ディレクトリー \workspace\camel\camel-core\target\filelanguage を使用するように out エンドポイントを設定します。File トークンは次のように返されます。
| 式 | 戻り値 |
|---|---|
| file:name | test\hello.txt |
| file:name.ext | txt |
| file:name.noext | test\hello |
| file:onlyname | hello.txt |
| file:onlyname.noext | hello |
| file:ext | txt |
| file:parent | \workspace\camel\camel-core\target\filelanguage\test |
| file:path | \workspace\camel\camel-core\target\filelanguage\test\hello.txt |
| file:absolute | true |
| file:absolute.path | \workspace\camel\camel-core\target\filelanguage\test\hello.txt |
35.5. サンプル リンクのコピーリンクがクリップボードにコピーされました!
myfile.txt などの固定ファイル名を入力できます。
fileName="myfile.txt"
File consumer を使用してファイルを読み取り、読み取ったファイルを移動して、現在の日付をサブフォルダーとして持つバックアップフォルダーに移動するとします。これは、次のような式を使用して実行できます。
fileName="backup/${date:now:yyyyMMdd}/${file:name.noext}.bak"
相対フォルダー名もサポートされているため、バックアップフォルダーが兄弟フォルダーであると仮定すると、次のように .. を追加できます。
fileName="../backup/${date:now:yyyyMMdd}/${file:name.noext}.bak"
これは言語の拡張であるため、この言語の利点をすべて活用できるので、このユースケースでは、in.header.type を動的式のパラメーターとして使用します。
fileName="../backup/${date:now:yyyyMMdd}/type-${in.header.type}/backup-of-${file:name.noext}.bak"
式で使用するカスタムの日付がある場合、Camel はメッセージヘッダーからの日付の取得をサポートします。
fileName="orders/order-${in.header.customerId}-${date:in.header.orderDate:yyyyMMdd}.xml"
最後に、Bean 式を使用して、使用する文字列出力 (または文字列に変換可能) を生成する POJO クラスを呼び出すこともできます。
fileName="uniquefile-${bean:myguidgenerator.generateid}.txt"
当然、これはすべて 1 つの式に統合でき、1 つに組み合わせられた式でこの言語を使用できます。これは、これらの一般的なファイルパスパターンに対して非常に強力です。
35.6. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 147 のオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.cloud.consul.service-discovery.acl-token | Consul で使用する ACL トークンを設定します。 | String | |
| camel.cloud.consul.service-discovery.block-seconds | 監視イベントを待機する秒数。デフォルトは 10 秒です。 | 10 | Integer |
| camel.cloud.consul.service-discovery.configurations | 追加の設定定義を定義します。 | Map | |
| camel.cloud.consul.service-discovery.connect-timeout-millis | OkHttpClient の接続タイムアウト。 | Long | |
| camel.cloud.consul.service-discovery.datacenter | データセンター。 | String | |
| camel.cloud.consul.service-discovery.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.cloud.consul.service-discovery.password | 基本認証に使用するパスワードを設定します。 | String | |
| camel.cloud.consul.service-discovery.properties | 使用するクライアントプロパティーを設定します。これらのプロパティーは、使用中のサービスコールの実装に固有です。たとえば、リボンを使用していると、クライアントプロパティーは com.netflix.client.config.CommonClientConfigKey で定義されます。 | Map | |
| camel.cloud.consul.service-discovery.read-timeout-millis | OkHttpClient の読み取りタイムアウト。 | Long | |
| camel.cloud.consul.service-discovery.url | Consul エージェントの URL。 | String | |
| camel.cloud.consul.service-discovery.user-name | Basic 認証に使用するユーザー名を設定します。 | String | |
| camel.cloud.consul.service-discovery.write-timeout-millis | OkHttpClient の書き込みタイムアウト。 | Long | |
| camel.cloud.dns.service-discovery.configurations | 追加の設定定義を定義します。 | Map | |
| camel.cloud.dns.service-discovery.domain | ドメイン名;. | String | |
| camel.cloud.dns.service-discovery.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.cloud.dns.service-discovery.properties | 使用するクライアントプロパティーを設定します。これらのプロパティーは、使用中のサービスコールの実装に固有です。たとえば、リボンを使用していると、クライアントプロパティーは com.netflix.client.config.CommonClientConfigKey で定義されます。 | Map | |
| camel.cloud.dns.service-discovery.proto | 目的のサービスのトランスポートプロトコル。 | _tcp | String |
| camel.cloud.etcd.service-discovery.configurations | 追加の設定定義を定義します。 | Map | |
| camel.cloud.etcd.service-discovery.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.cloud.etcd.service-discovery.password | 基本認証に使用するパスワード。 | String | |
| camel.cloud.etcd.service-discovery.properties | 使用するクライアントプロパティーを設定します。これらのプロパティーは、使用中のサービスコールの実装に固有です。たとえば、リボンを使用していると、クライアントプロパティーは com.netflix.client.config.CommonClientConfigKey で定義されます。 | Map | |
| camel.cloud.etcd.service-discovery.service-path | サービス検出のために探すパス。 | /services/ | String |
| camel.cloud.etcd.service-discovery.timeout | アクションが完了するまでにかかる最大時間を設定します。 | Long | |
| camel.cloud.etcd.service-discovery.type | 検出タイプを設定するには、有効な値はオンデマンドとウォッチです。 | オンデマンド | String |
| camel.cloud.etcd.service-discovery.uris | クライアントが接続できる URI。 | String | |
| camel.cloud.etcd.service-discovery.user-name | 基本認証に使用するユーザー名。 | String | |
| camel.cloud.kubernetes.service-discovery.api-version | クライアントルックアップを使用する場合の API バージョンを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.ca-cert-data | クライアントルックアップをする際に使用する認証局データを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.ca-cert-file | クライアントルックアップをする際にファイルからロードされる認証局データを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-cert-data | クライアントルックアップをする際に使用するクライアント証明書データを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-cert-file | クライアントルックアップをする際にファイルからロードされるクライアント証明書データを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-key-algo | クライアントルックアップをする際に使用する、RSA などのクライアントキーストアアルゴリズムを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-key-data | クライアントルックアップをする際に使用する、クライアントキーストアデータを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-key-file | クライアントルックアップをする際にファイルからロードされるクライアントキーストアデータを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.client-key-passphrase | クライアントルックアップをする際に使用する、クライアントキーストアパスフレーズを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.configurations | 追加の設定定義を定義します。 | Map | |
| camel.cloud.kubernetes.service-discovery.dns-domain | DNS ルックアップに使用する DNS ドメインを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.cloud.kubernetes.service-discovery.lookup | サービスルックアップの実行方法。可能な値: client、dns、environment。クライアントを使用する場合、クライアントは kubernetes マスターにクエリーを実行して、サービスを提供するアクティブな Pod のリストを取得し、Pod をランダム (またはラウンドロビン) に選択します。DNS を使用する場合、サービス名は name.namespace.svc.dnsDomain として解決されます。dnssrv を使用する場合、サービス名は、.…svc…の SRV クエリーで解決されます。環境を使用する場合は、環境変数を使用してサービスを検索します。デフォルトの環境が使用されます。 | environment | String |
| camel.cloud.kubernetes.service-discovery.master-url | クライアントルックアップを使用するときに URL をマスターに設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.namespace | 使用する名前空間を設定します。デフォルトでは、ENV 変数 KUBERNETES_MASTER の名前空間を使用します。 | String | |
| camel.cloud.kubernetes.service-discovery.oauth-token | クライアントルックアップを使用する際に (ユーザー名/パスワードの代わりに) 認証用の OAUTH トークンを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.password | クライアントルックアップを使用する際に使用する、認証パスワードを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.port-name | DNS/DNSSRV ルックアップに使用するポート名を設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.port-protocol | DNS/DNSSRV ルックアップに使用するポートプロトコルを設定します。 | String | |
| camel.cloud.kubernetes.service-discovery.properties | 使用するクライアントプロパティーを設定します。これらのプロパティーは、使用中のサービスコールの実装に固有です。たとえば、リボンを使用していると、クライアントプロパティーは com.netflix.client.config.CommonClientConfigKey で定義されます。 | Map | |
| camel.cloud.kubernetes.service-discovery.trust-certs | クライアントルックアップを使用する際に使用する、トラスト証明書のチェックを有効にするかどうかを設定します。 | false | Boolean |
| camel.cloud.kubernetes.service-discovery.username | クライアントルックアップを使用する際に使用する、認証ユーザー名を設定します。 | String | |
| camel.cloud.ribbon.load-balancer.client-name | リボンクライアント名を設定します。 | String | |
| camel.cloud.ribbon.load-balancer.configurations | 追加の設定定義を定義します。 | Map | |
| camel.cloud.ribbon.load-balancer.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.cloud.ribbon.load-balancer.namespace | namespace。 | String | |
| camel.cloud.ribbon.load-balancer.password | パスワード。 | String | |
| camel.cloud.ribbon.load-balancer.properties | 使用するクライアントプロパティーを設定します。これらのプロパティーは、使用中のサービスコールの実装に固有です。たとえば、リボンを使用していると、クライアントプロパティーは com.netflix.client.config.CommonClientConfigKey で定義されます。 | Map | |
| camel.cloud.ribbon.load-balancer.username | ユーザー名 | String | |
| camel.hystrix.allow-maximum-size-to-diverge-from-core-size | maximumSize の設定を有効にします。その値は、coreSize 以上にすることができます。 | false | Boolean |
| camel.hystrix.circuit-breaker-enabled | HystrixCircuitBreaker を使用するかどうか。false の場合、サーキットブレーカーロジックは使用されず、すべての要求が許可されます。これは実質的に circuitBreakerForceClosed() と似ていますが、メトリックの追跡を継続し、それを開閉する必要があるかどうかを認識しているため、このプロパティーによってサーキットブレーカーがインスタンス化されることもありません。 | true | Boolean |
| camel.hystrix.circuit-breaker-error-threshold-percentage | サーキットブレーカーが開いて要求を拒否するエラー率のしきい値 (50 などの整数)。circuitBreakerSleepWindowInMilliseconds で定義された期間、トリップしたままになります。これが比較されるエラーのパーセンテージは、HystrixCommandMetrics.getHealthCounts() から取得されます。 | 50 | Integer |
| camel.hystrix.circuit-breaker-force-closed | true の場合、HystrixCircuitBreaker#allowRequest() は常に true を返し、HystrixCommandMetrics.getHealthCounts() からのエラーパーセンテージに関係なくリクエストを許可します。circuitBreakerForceOpen() プロパティーが優先されるため、true に設定すると、このプロパティーは何もしません。 | false | Boolean |
| camel.hystrix.circuit-breaker-force-open | true の場合、HystrixCircuitBreaker.allowRequest() は常に false を返します。これにより、回路が開かれ (トリップされ)、すべての要求が拒否されます。このプロパティーは circuitBreakerForceClosed() よりも優先されます。 | false | Boolean |
| camel.hystrix.circuit-breaker-request-volume-threshold | HystrixCircuitBreaker が作動する前に存在しなければならない metricsRollingStatisticalWindowInMilliseconds() 内の要求の最小数。この数値を下回ると、エラーのパーセンテージに関係なく、回路はトリップしません。 | 20 | Integer |
| camel.hystrix.circuit-breaker-sleep-window-in-milliseconds | HystrixCircuitBreaker がトリップして開いてから、要求を再試行するまで待機する時間 (ミリ秒単位)。 | 5000 | Integer |
| camel.hystrix.configurations | 追加の設定定義を定義します。 | Map | |
| camel.hystrix.core-pool-size | java.util.concurrent.ThreadPoolExecutor#setCorePoolSize(int) に渡されるコアスレッドプールサイズ。 | 10 | Integer |
| camel.hystrix.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.hystrix.execution-isolation-semaphore-max-concurrent-requests | HystrixCommand.run() に許可された同時要求の数。同時制限を超えるリクエストは拒否されます。executionIsolationStrategy == SEMAPHORE の場合にのみ適用されます。 | 20 | Integer |
| camel.hystrix.execution-isolation-strategy | HystrixCommand.run() を実行する分離戦略。THREAD の場合は、別のスレッドで実行し、同時要求はスレッドプール内のスレッド数によって制限されます。SEMAPHORE の場合、呼び出しスレッドで実行し、同時要求はセマフォ数によって制限されます。 | スレッド | String |
| camel.hystrix.execution-isolation-thread-interrupt-on-timeout | スレッドがタイムアウトしたときに、実行スレッドが (Future#cancel を使用して) 割り込みを試みるかどうか。executionIsolationStrategy() == THREAD の場合にのみ適用されます。 | true | Boolean |
| camel.hystrix.execution-timeout-enabled | このコマンドのタイムアウトメカニズムを有効にするかどうか。 | true | Boolean |
| camel.hystrix.execution-timeout-in-milliseconds | コマンドがタイムアウトして実行を停止する時間 (ミリ秒単位)。executionIsolationThreadInterruptOnTimeout == true で、コマンドがスレッド分離されている場合、実行中のスレッドは中断されます。コマンドがセマフォ分離されており、HystrixObservableCommand である場合、そのコマンドはサブスクライブ解除されます。 | 1000 | Integer |
| camel.hystrix.fallback-enabled | 障害が発生したときに HystrixCommand.getFallback() を試行するかどうか。 | true | Boolean |
| camel.hystrix.fallback-isolation-semaphore-max-concurrent-requests | HystrixCommand.getFallback() に許可された同時要求の数。同時制限を超えるリクエストはフェールファストになり、フォールバックの取得は試行されません。 | 10 | Integer |
| camel.hystrix.group-key | 使用するグループキーを設定します。デフォルト値は、CamelHystrix です。 | CamelHystrix | String |
| camel.hystrix.keep-alive-time | ThreadPoolExecutor#setKeepAliveTime(long,TimeUnit) に渡されるキープアライブ時間 (分単位)。 | 1 | Integer |
| camel.hystrix.max-queue-size | HystrixConcurrencyStrategy.getBlockingQueue(int) で BlockingQueue に渡される最大キューサイズ。これは、スレッドプールのインスタンス化にのみ影響します。その場でキューサイズを変更することはできません。そのためには、queueSizeRejectionThreshold() を使用します。 | -1 | Integer |
| camel.hystrix.maximum-size | ThreadPoolExecutor#setMaximumPoolSize(int) に渡されるスレッドプールの最大サイズ。これは、HystrixCommands を拒否し始めることなくサポートできる同時実行の最大量です。この設定は、allowMaximumSizeToDivergeFromCoreSize も設定した場合にのみ有効になることに注意してください。 | 10 | Integer |
| camel.hystrix.metrics-health-snapshot-interval-in-milliseconds | 成功率とエラー率を計算し、HystrixCircuitBreaker.isOpen() ステータスに影響を与えるヘルススナップショットの取得を許可するまでの待機時間 (ミリ秒単位)。大量の回路では、エラーパーセンテージの継続的な計算によって CPU が集中的に使用される可能性があるため、これが計算の頻度を制御します。 | 500 | Integer |
| camel.hystrix.metrics-rolling-percentile-bucket-size | ローリングパーセンタイルの各バケットに格納される値の最大数。これは、HystrixCommandMetrics 内の HystrixRollingPercentile に渡されます。 | 10 | Integer |
| camel.hystrix.metrics-rolling-percentile-enabled | HystrixCommandMetrics 内の HystrixRollingPercentile を使用してパーセンタイルメトリックをキャプチャする必要があるかどうか。 | true | Boolean |
| camel.hystrix.metrics-rolling-percentile-window-buckets | ローリングパーセンテージウィンドウが分割されるバケットの数。これは、HystrixCommandMetrics 内の HystrixRollingPercentile に渡されます。 | 6 | Integer |
| camel.hystrix.metrics-rolling-percentile-window-in-milliseconds | ミリ秒単位のパーセンタイルローリングウィンドウの期間。これは、HystrixCommandMetrics 内の HystrixRollingPercentile に渡されます。 | 10000 | Integer |
| camel.hystrix.metrics-rolling-statistical-window-buckets | ローリング統計ウィンドウが分割されるバケットの数。これは、HystrixCommandMetrics 内の HystrixRollingNumber に渡されます。 | 10 | Integer |
| camel.hystrix.metrics-rolling-statistical-window-in-milliseconds | このプロパティーは、統計ローリングウィンドウの期間をミリ秒単位で設定します。スレッドプール用にメトリクスが保持される期間です。ウィンドウは、それらの増分によってバケットとロールに分割されます。 | 10000 | Integer |
| camel.hystrix.queue-size-rejection-threshold | キューサイズの拒否しきい値は、maxQueueSize に到達していない場合でも拒否できる人為的な最大キューサイズを設定します。これは、BlockingQueue の maxQueueSize を動的に変更することができず、拒否に影響するキューサイズの動的な変更をサポートするために行われます。これは、実行のためにスレッドをキューに入れるときに HystrixCommand によって使用されます。 | 5 | Integer |
| camel.hystrix.request-log-enabled | HystrixCommand の実行およびイベントを HystrixRequestLog に記録するべきかどうかを示します。 | true | Boolean |
| camel.hystrix.thread-pool-key | 使用するスレッドプールキーを設定します。デフォルトでは、groupKey が使用するように設定されているのと同じ値を使用します。 | CamelHystrix | String |
| camel.hystrix.thread-pool-rolling-number-statistical-window-buckets | ローリング統計ウィンドウが分割されるバケットの数。これは、各 HystrixThreadPoolMetrics インスタンス内の HystrixRollingNumber に渡されます。 | 10 | Integer |
| camel.hystrix.thread-pool-rolling-number-statistical-window-in-milliseconds | 統計ローリングウィンドウの期間をミリ秒単位で設定します。これは、各 HystrixThreadPoolMetrics インスタンス内の HystrixRollingNumber に渡されます。 | 10000 | Integer |
| camel.language.constant.enabled | 定数言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.constant.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.csimple.enabled | csimple 言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.csimple.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.exchangeproperty.enabled | exchangeProperty 言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.exchangeproperty.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.file.enabled | ファイル言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.file.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.header.enabled | ヘッダー言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.header.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.ref.enabled | ref 言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.ref.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.simple.enabled | 簡易言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.simple.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.language.tokenize.enabled | tokenize 言語の自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.language.tokenize.group-delimiter | グループ化時に使用する区切り文字を設定します。これが設定されていない場合は、トークンが区切り文字として使用されます。 | String | |
| camel.language.tokenize.trim | 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 | true | Boolean |
| camel.resilience4j.automatic-transition-from-open-to-half-open-enabled | waitDurationInOpenState が経過すると、OPEN から HALF_OPEN 状態への自動移行を有効にします。 | false | Boolean |
| camel.resilience4j.circuit-breaker-ref | レジストリーから検索して使用する既存の io.github.resilience4j.circuitbreaker.CircuitBreaker インスタンスを参照します。これを使用する場合、他のサーキットブレーカーオプションは使用されません。 | String | |
| camel.resilience4j.config-ref | レジストリーから検索して使用する既存の github.resilience4j.circuitbreaker.CircuitBreakerConfig インスタンスを参照します。 | String | |
| camel.resilience4j.configurations | 追加の設定定義を定義します。 | Map | |
| camel.resilience4j.enabled | コンポーネントを有効にします。 | true | Boolean |
| camel.resilience4j.failure-rate-threshold | 失敗率のしきい値をパーセンテージで設定します。失敗率がしきい値以上の場合、CircuitBreaker はオープンに移行し、コールのショートサーキットを開始します。しきい値は 0 より大きく 100 以下である必要があります。デフォルト値は 50% です。 | Float | |
| camel.resilience4j.minimum-number-of-calls | CircuitBreaker がエラー率を計算できるようになるまでに必要な (スライディングウィンドウ期間ごとの) 呼び出しの最小数を設定します。たとえば、minimumNumberOfCalls が 10 の場合、失敗率を計算するには、少なくとも 10 件の呼び出しが記録される必要があります。9 つのコールのみが記録されている場合、CircuitBreaker は 9 つのコールすべてが失敗した場合でもオープンに移行しません。デフォルトの minimumNumberOfCalls は 100 です。 | 100 | Integer |
| camel.resilience4j.permitted-number-of-calls-in-half-open-state | CircuitBreaker が半分開いているときに許可される呼び出しの数を設定します。サイズは 0 より大きくなければなりませんデフォルトのサイズは 10 です。 | 10 | Integer |
| camel.resilience4j.sliding-window-size | CircuitBreaker が閉じられたときに呼び出しの結果を記録するために使用されるスライディングウィンドウのサイズを設定します。slidingWindowSize は、スライディングウィンドウのサイズを設定します。スライディングウィンドウは、カウントベースまたは時間ベースのいずれかです。slidingWindowType が COUNT_BASED の場合、最後の slidingWindowSize 呼び出しが記録され、集計されます。slidingWindowType が TIME_BASED の場合は、最後の slidingWindowSize 秒の呼び出しが記録され、集計されます。slidingWindowSize は 0 より大きくなければなりません。minimumNumberOfCalls は 0 より大きくする必要があります。slidingWindowType が COUNT_BASED の場合、minimumNumberOfCalls を slidingWindowSize より大きくすることはできません。slidingWindowType が TIME_BASED の場合は、好きなものを選択できます。デフォルトの slidingWindowSize は 100 です。 | 100 | Integer |
| camel.resilience4j.sliding-window-type | CircuitBreaker が閉じられたときに呼び出しの結果を記録するために使用されるスライディングウィンドウのサイズを設定します。スライディングウィンドウは、カウントベースまたは時間ベースのいずれかです。slidingWindowType が COUNT_BASED の場合、最後の slidingWindowSize 呼び出しが記録され、集計されます。slidingWindowType が TIME_BASED の場合は、最後の slidingWindowSize 秒の呼び出しが記録され、集計されます。デフォルトの slidingWindowType は COUNT_BASED です。 | COUNT_BASED | String |
| camel.resilience4j.slow-call-duration-threshold | それを超えると呼び出しが低速と見なされ、低速呼び出しのパーセンテージが増加する期間のしきい値 (秒) を設定します。デフォルト値は 60 秒です。 | 60 | Integer |
| camel.resilience4j.slow-call-rate-threshold | パーセンテージでしきい値を設定します。CircuitBreaker は、呼び出し時間が slowCallDurationThreshold Duration よりも長い場合、呼び出しが遅いと見なします。失敗率がしきい値以上の場合、CircuitBreaker はオープンに移行し、ショートサーキット呼び出しを開始します。しきい値は 0 より大きく 100 以下である必要があります。デフォルト値は 100 パーセントです。これは、記録されたすべてのコールが slowCallDurationThreshold より遅くなければならないことを意味します。 | Float | |
| camel.resilience4j.wait-duration-in-open-state | ハーフオープンに切り替わる前に CircuitBreaker が開いたままになる時間を指定する待機期間 (秒単位) を設定します。デフォルト値は 60 秒です。 | 60 | Integer |
| camel.resilience4j.writable-stack-trace-enabled | 書き込み可能なスタックトレースを有効にします。false に設定すると、Exception.getStackTrace は長さゼロの配列を返します。これは、例外の原因がすでにわかっている (サーキットブレーカーが呼び出しを短絡している) ため、サーキットブレーカーが開いているときにログスパムを減らすために使用できます。 | true | Boolean |
| camel.rest.api-component | REST API として使用する Camel コンポーネントの名前 (swagger など)。API コンポーネントが明示的に設定されていない場合は、REST API ドキュメントのサービスおよび生成を担当する Camel コンポーネントがある場合、または org.apache.camel.spi.RestApiProcessorFactory がレジストリーに登録されているかどうかを調べます。いずれかが見つかった場合は、それが使用されています。 | String | |
| camel.rest.api-context-path | REST API サービスが使用する主要な API コンテキストパスを設定します。これは、デプロイされた Web アプリケーションがコンテキストパスを使用してデプロイされる camel-servlet などのコンポーネントを使用する場合に使用できます。 | String | |
| camel.rest.api-context-route-id | REST API にサービスを提供するルートに使用するルート ID を設定します。デフォルトでは、ルートは自動割り当てのルート ID を使用します。 | String | |
| camel.rest.api-host | API ドキュメント (swagger など) に特定のホスト名を使用するには、これを使用して、生成されたホストをこの設定済みホスト名でオーバーライドできます。 | String | |
| camel.rest.api-property | API ドキュメント (swagger) の追加プロパティーをできるだけ多く設定できます。たとえば、プロパティー api.title をクールスタッフに設定します。 | Map | |
| camel.rest.api-vendor-extension | Rest API でベンダー拡張機能が有効になっているかどうか。有効にすると、Camel はルート ID、クラス名などの追加情報をベンダー拡張 (x- で始まるキーなど) として含めます。API ドキュメントをインポートするときに、すべてのサードパーティー API ゲートウェイおよびツールがベンダー拡張をサポートしているわけではありません。 | false | Boolean |
| camel.rest.binding-mode | 使用するバインドモードを設定します。デフォルト値は off です。 | RestBindingMode | |
| camel.rest.client-request-validation | クライアント要求の検証を有効にして、クライアントからの Content-Type および Accept ヘッダーがその消費/生成設定の Rest-DSL 設定によってサポートされているかどうかを確認するかどうか。これをオンにして、このチェックを有効にすることができます。検証エラーの場合は、HTTP ステータスコード 415 または 406 が返されます。デフォルト値は false です。 | false | Boolean |
| camel.rest.component | netty-http、jetty、servlet、undertow などの REST トランスポート (consumer) に使用する Camel Rest コンポーネント。コンポーネントが明示的に設定されていない場合、Rest DSL と統合する Camel コンポーネントがある場合、または org.apache.camel.spi.RestConsumerFactory がレジストリーに登録されている場合、Camel はルックアップします。いずれかが見つかった場合は、それが使用されています。 | String | |
| camel.rest.component-property | 使用中の残りのコンポーネントの追加プロパティーをできるだけ多く設定できます。 | Map | |
| camel.rest.consumer-property | 使用中の残りの consumer の追加プロパティーをできるだけ多く設定できます。 | Map | |
| camel.rest.context-path | REST サービスが使用する主要なコンテキストパスを設定します。これは、デプロイされた Web アプリケーションがコンテキストパスを使用してデプロイされる camel-servlet などのコンポーネントを使用する場合に使用できます。または、HTTP サーバーを含む camel -jetty や camel-netty-http などのコンポーネントの場合。 | String | |
| camel.rest.cors-headers | カスタム CORS ヘッダーを設定できます。 | Map | |
| camel.rest.data-format-property | 使用中のデータ形式の追加プロパティーをできるだけ多く設定できます。たとえば、プロパティー prettyPrint を true に設定すると、json がプリティモードで出力されます。オプションが JSON または XML のいずれか、および IN または OUT のいずれか専用であることを示すために、プロパティーに接頭辞を付けることができます。接頭辞は、json.in.、json.out.、xml.in.、xml.out です。たとえば、値が xml.out.mustBeJAXBElement のキーは、送信用の XML データ形式専用です。接頭辞のないキーは、すべての状況で共通のキーです。 | Map | |
| camel.rest.enable-cors | HTTP 応答で CORS ヘッダーを有効にするかどうか。デフォルト値は false です。 | false | Boolean |
| camel.rest.endpoint-property | 使用中の残りのエンドポイントの追加プロパティーをできるだけ多く設定できます。 | Map | |
| camel.rest.host | REST サービスの公開に使用するホスト名。 | String | |
| camel.rest.host-name-resolver | ホスト名が明示的に設定されていない場合、このリゾルバーは、REST サービスが使用するホスト名を計算するために使用されます。 | RestHostNameResolver | |
| camel.rest.json-data-format | 使用する特定の json データ形式の名前。デフォルトでは json-jackson が使用されます。重要: このオプションは、データ形式のカスタム名を設定するためのものであり、既存のデータ形式インスタンスを参照するためのものではありません。 | String | |
| camel.rest.port | REST サービスの公開に使用するポート番号。サーブレットコンポーネントを使用する場合は、ここで設定したポート番号は適用されないことに注意してください。使用中のポート番号は、サーブレットコンポーネントが使用している実際のポート番号であるためです。たとえば、Apache Tomcat を使用する場合は Tomcat http ポート、Apache Karaf を使用する場合はデフォルトでポート 8181 を使用する Karaf の HTTP サービスなどです。このような状況では、ここでポート番号を設定すると、ツールと JMX がポート番号を認識できるようになるため、ポート番号をサーブレットエンジンが使用する番号に設定することを推奨します。 | String | |
| camel.rest.producer-api-doc | REST producer が REST uri を検証するために使用する API ドキュメント (swagger api) の場所を設定し、API ドキュメントに応じてクエリーパラメーターが有効です。これには、クラスパスに camel-swagger-java を追加する必要があり、設定に誤りがあると、Camel が起動時に失敗し、エラーが報告されます。API ドキュメントの場所はデフォルトでクラスパスから読み込まれますが、file: または http: を使用してリソースを参照し、ファイルまたは http url から読み込むことができます。 | String | |
| camel.rest.producer-component | REST producer として使用する Camel コンポーネントの名前を設定します。 | String | |
| camel.rest.scheme | REST サービスの公開に使用するスキーム。通常、http または https がサポートされます。デフォルト値は http です。 | String | |
| camel.rest.skip-binding-on-error-code | カスタム HTTP エラーコードヘッダーがある場合は、出力でバインディングをスキップするかどうか。これにより、json/xml などにバインドしないカスタムエラーメッセージを作成できます。それ以外の場合は成功メッセージが作成されます。 | false | Boolean |
| camel.rest.use-x-forward-headers | ホストおよび関連する設定に X-Forward ヘッダーを使用するかどうか。デフォルト値は true です。 | true | Boolean |
| camel.rest.xml-data-format | 使用する特定の XML データ形式の名前。デフォルトでは jaxb が使用されます。重要: このオプションは、データ形式のカスタム名を設定するためのものであり、既存のデータ形式インスタンスを参照するためのものではありません。 | String | |
| camel.rest.api-context-id-pattern | 非推奨 CamelContext ID パターンを設定して、名前がパターンに一致する CamelContext 内の REST サービスからの Rest API のみを許可します。パターン 名 は CamelContext 名を参照し、現在の CamelContext のみに一致します。その他の値の場合、パターンは PatternHelper#matchPattern (String,String) のルールを使用します。 | String | |
| camel.rest.api-context-listing | 非推奨 JVM で REST サービスを使用して使用可能なすべての CamelContext のリストを有効にするかどうかを設定します。有効にすると、これらのコンテキストを検出できます。false の場合、現在の CamelContext のみが使用されます。 | false | Boolean |
第36章 Flink リンクのコピーリンクがクリップボードにコピーされました!
Since Camel 2.18
producer のみサポート対象
このドキュメントページでは、Apache Camel の Flink コンポーネントを説明します。camel-flink コンポーネントは、Camel コンポーネントと Flink タスクの間の橋渡しをします。このコンポーネントは、さまざまなトランスポートからメッセージをルーティングし、実行する flink タスクを動的に選択し、着信メッセージをタスクの入力データとして使用し、最終的に結果を Camel パイプラインに戻す方法を提供します。
36.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で camel-flink を使用する場合は、自動設定をサポートするために次の Maven 依存関係を pom.xml に追加します。
Maven ユーザーは、このコンポーネントの pom.xml に以下の依存関係を追加する必要があります。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-flink-starter</artifactId>
</dependency>
36.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
現在、Flink コンポーネントはプロデューサーのみをサポートしています。DataSet、DataStream ジョブを作成できます。
flink:dataset?dataset=#myDataSet&dataSetCallback=#dataSetCallback
flink:datastream?datastream=#myDataStream&dataStreamCallback=#dataStreamCallback
36.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
36.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
36.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
36.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
Flink コンポーネントは、以下に示す 5 個のオプションをサポートしています。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| dataSetCallback (producer) | DataSet に対してアクションを実行する関数。 | DataSetCallback | |
| dataStream (producer) | 計算対象の DataStream。 | DataStream | |
| dataStreamCallback (producer) | DataStream に対してアクションを実行する関数。 | DataStreamCallback | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
36.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Flink エンドポイントは、URI 構文を使用して設定されます。
flink:endpointType
path パラメーターおよび query パラメーターを使用します。
36.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| endpointType (producer) | 必須 エンドポイントのタイプ (データセット、データストリーム)。 列挙値:
| EndpointType |
36.5.2. クエリーパラメーター (6 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| collect (producer) | 結果を収集またはカウントする必要があるかどうかを示します。 | true | boolean |
| dataSet (producer) | 計算対象の DataSet。 | DataSet | |
| dataSetCallback (producer) | DataSet に対してアクションを実行する関数。 | DataSetCallback | |
| dataStream (producer) | 計算対象の DataStream。 | DataStream | |
| dataStreamCallback (producer) | DataStream に対してアクションを実行する関数。 | DataStreamCallback | |
| lazyStartProducer (producer (advanced)) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
36.6. メッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
Flink コンポーネントは、以下に示す 4 つのメッセージヘッダーをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| CamelFlinkDataSet (producer) | データセット。 | Object | |
| CamelFlinkDataSetCallback (producer) | データセットのコールバック。 | DataSetCallback | |
| CamelFlinkDataStream (producer) | データストリーム。 | Object | |
| CamelFlinkDataStreamCallback (producer) | データストリームコールバック。 | DataStreamCallback |
36.7. Flink DataSet コールバック リンクのコピーリンクがクリップボードにコピーされました!
@Bean
public DataSetCallback<Long> dataSetCallback() {
return new DataSetCallback<Long>() {
public Long onDataSet(DataSet dataSet, Object... objects) {
try {
dataSet.print();
return new Long(0);
} catch (Exception e) {
return new Long(-1);
}
}
};
}
36.8. Flink DataStream Callback リンクのコピーリンクがクリップボードにコピーされました!
@Bean
public VoidDataStreamCallback dataStreamCallback() {
return new VoidDataStreamCallback() {
@Override
public void doOnDataStream(DataStream dataStream, Object... objects) throws Exception {
dataStream.flatMap(new Splitter()).print();
environment.execute("data stream test");
}
};
}
36.9. Camel-Flink プロデューサー呼び出し リンクのコピーリンクがクリップボードにコピーされました!
CamelContext camelContext = new SpringCamelContext(context);
String pattern = "foo";
try {
ProducerTemplate template = camelContext.createProducerTemplate();
camelContext.start();
Long count = template.requestBody("flink:dataSet?dataSet=#myDataSet&dataSetCallback=#countLinesContaining", pattern, Long.class);
} finally {
camelContext.stop();
}
36.10. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に示す 6 つのオプションをサポートします。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| camel.component.flink.autowired-enabled | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.flink.data-set-callback | DataSet に対してアクションを実行する関数。オプションは org.apache.camel.component.flink.DataSetCallback タイプです。 | DataSetCallback | |
| camel.component.flink.data-stream | 計算対象の DataStream。オプションは org.apache.flink.streaming.api.datastream.DataStream タイプです。 | DataStream | |
| camel.component.flink.data-stream-callback | DataStream に対してアクションを実行する関数。オプションは org.apache.camel.component.flink.DataStreamCallback タイプです。 | DataStreamCallback | |
| camel.component.flink.enabled | flink コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | Boolean | |
| camel.component.flink.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
第37章 FTP リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
このコンポーネントは、FTP および SFTP プロトコルを介したリモートファイルシステムへのアクセスを提供します。
リモート FTP サーバーから使用する場合は、ファイルの使用に関する詳細について、さらに下の ファイルを使用する場合のデフォルト というタイトルのセクションを必ずお読みください。
絶対パスはサポートされて いません。Camel は、directoryname から先頭のスラッシュをすべて削除することにより、絶対パスを相対パスに変換します。ログに WARN メッセージが出力されます。
37.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で ftp を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-ftp-starter</artifactId>
</dependency>
37.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
ftp://[username@]hostname[:port]/directoryname[?options]
sftp://[username@]hostname[:port]/directoryname[?options]
ftps://[username@]hostname[:port]/directoryname[?options]
directoryname は、基礎となるディレクトリーを表します。ディレクトリー名は相対パスです。絶対パスはサポートされて いません。相対パスには、/inbox/us などのネストされたフォルダーを含めることができます。
autoCreate オプションがサポートされています。consumer が開始すると、ポーリングがスケジュールされる前に、エンドポイント用に設定されたディレクトリーを作成するために追加の FTP 操作が実行されます。autoCreate のデフォルト値は true です。
ユーザー名 が指定されていない場合、パスワードを使用せずに 匿名 ログインが試行されます。
ポート 番号が指定されていない場合、Camel はプロトコル (ftp = 21、sftp = 22、ftps = 2222) に従ってデフォルト値を提供します。
URI には、?option=value&option=value&… の形式でクエリーオプションを追加できます。
このコンポーネントは、実際の FTP 作業に 2 つの異なるライブラリーを使用します。FTP と FTPS は Apache Commons Net を使用し、SFTP は JCraft JSCH を使用します。
FTPS (FTP セキュアとも呼ばれる) は、Transport Layer Security (TLS) および Secure Sockets Layer (SSL) 暗号化プロトコルのサポートを追加する FTP の拡張機能です。
37.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
37.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
37.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
37.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
FTP コンポーネントは、以下に示す 3 つのオプションをサポートしています。
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| autowiredEnabled (advanced) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
37.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
MLLP エンドポイントは、URI 構文を使用して設定されます。
ftp:host:port/directoryName
パスおよびクエリーパラメーターを使用します。
37.5.1. パスパラメーター (3 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| host (common) | 必須 FTP サーバーのホスト名。 | String | |
| port (common) | FTP サーバーのポート | int | |
| directoryName (common) | 開始ディレクトリー | String |
37.5.2. クエリーパラメーター (111 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | 型 |
|---|---|---|---|
| binary (common) | ファイル転送モードを BINARY または ASCII で指定します。デフォルトは ASCII (false) です。 | false | boolean |
| charset (common) | このオプションは、ファイルのエンコーディングを指定するために使用されます。consumer でこれを使用して、ファイルのエンコーディングを指定できます。これにより、Camel は、ファイルコンテンツがアクセスされている場合にファイルコンテンツをロードする必要がある charset を知ることができます。ファイルを書き込む場合も同様に、このオプションを使用して、ファイルを書き込む charset を指定できます。ファイルを書き込むとき、Camel はメッセージの内容をメモリーに読み込んで、データを設定された charset に変換できるようにする必要があることに注意してください。つまり、メッセージが大きい場合は、これを使用しないでください。 | String | |
| disconnect (common) | 使用直後にリモート FTP サーバーから切断するかどうか。切断は、FTP サーバーへの現在の接続のみを切断します。停止したい consumer がある場合は、代わりに consumer/ルートを停止する必要があります。 | false | boolean |
| doneFileName (common) | Producer: 指定された場合、元のファイルが書き込まれると、Camel は 2 番目の完了ファイルを書き込みます。完了ファイルは空になります。このオプションは、使用するファイル名を設定します。固定の名前を指定できます。または、動的プレースホルダーを使用することもできます。完了ファイルは、常に元のファイルと同じフォルダーに書き込まれます。Consumer: 指定すると、Camel は完了ファイルが存在する場合にのみファイルを消費します。このオプションは、使用するファイル名を設定します。固定の名前を指定できます。または、動的なプレースホルダーを使用できます。完了ファイルは、常に元のファイルと同じフォルダーにあると想定されます。$\\{file.name} と $\\{file.name.next} のみが動的プレースホルダーとしてサポートされています。 | String | |
| fileName (common) | File Language などの式を使用して、ファイル名を動的に設定します。consumer の場合は、ファイル名フィルターとして使用されます。producer の場合、書き込むファイル名を評価するために使用されます。式が設定されている場合は、CamelFileName ヘッダーよりも優先されます。(注: ヘッダー自体を式にすることもできます)。式オプションは String タイプと Expression タイプの両方をサポートします。式が String タイプである場合、これは常にファイル言語を使用して評価されます。式が Expression タイプである場合、指定された Expression タイプが使用されます。これにより、たとえば OGNL 式を使用できます。consumer の場合、これを使用してファイル名をフィルタリングできるため、たとえば、ファイル言語構文 mydata-$\\{date:now:yyyyMMdd}.txt を使用して今日のファイルを消費できます。producer は、既存の CamelFileName ヘッダーよりも優先される CamelOverruleFileName ヘッダーをサポートします。CamelOverruleFileName は一度だけ使用されるヘッダーであり、CamelFileName を一時的に保存して後で復元する必要がなくなるため、簡単になります。 | String | |
| passiveMode (common) | パッシブモード接続の設定デフォルトはアクティブモード接続です。 | false | boolean |
| separator (common) | 使用するパス区切りを設定します。UNIX = UNIX スタイルのパス区切りを使用 Windows = Windows スタイルのパス区切りを使用 Auto = (デフォルト) ファイル名に既存のパス区切りを使用します。 列挙値:
| UNIX | PathSeparator |
| transferLoggingIntervalSeconds (common) | 進行中のアップロードおよびダウンロード操作の進行状況をログに記録するときに使用する間隔を秒単位で設定します。これは、操作に時間がかかる場合に進行状況を記録するために使用されます。 | 5 | int |
| transferLoggingLevel (common) | アップロードおよびダウンロード操作の進行状況をログに記録するときに使用するログレベルを設定します。 列挙値:
| DEBUG | LoggingLevel |
| transferLoggingVerbose (common) | がアップロードおよびダウンロード操作の進行状況の詳細な (詳細な) ログを実行するかどうかを設定します。 | false | boolean |
| fastExistsCheck (common (advanced)) | このオプションを true に設定すると、camel-ftp はリストファイルを直接使用して、ファイルが存在するかどうかを確認します。一部の FTP サーバーはファイルを直接一覧表示することをサポートしていない可能性があるため、オプションが false の場合、camel-ftp は古い方法を使用してディレクトリーを一覧表示し、ファイルが存在するかどうかを確認します。このオプションは、readLock=changed にも影響を与え、ファイル情報を更新するための高速チェックを実行するかどうかを制御します。これは、FTP サーバーに多くのファイルがある場合にプロセスを高速化するために使用できます。 | false | boolean |
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| delete (consumer) | true の場合、ファイルは正常に処理された後に削除されます。 | false | boolean |
| moveFailed (consumer) | Simple 言語に基づいて move failure 式を設定します。たとえば、ファイルを .error サブディレクトリーに移動するには、.error を使用します。注: ファイルを失敗したロケーションに移動すると、Camel はエラーを処理し、ファイルを再度取得しません。 | String | |
| noop (consumer) | true の場合、ファイルは移動または削除されません。このオプションは、読み取り専用データまたは ETL タイプの要件に適しています。noop=true の場合、Camel は idempotent=true も設定し、同じファイルを繰り返し消費しないようにします。 | false | boolean |
| preMove (consumer) | 処理前に移動する場合にファイル名を動的に設定するために使用される式 (File 言語など)。たとえば、進行中のファイルを order ディレクトリーに移動するには、この値を order に設定します。 | String | |
| preSort (consumer) | pre-sort が有効になっている場合、consumer はポーリング中に、ファイルシステムから取得されたファイル名とディレクトリー名を並べ替えます。ソートされた順序でファイルを操作する必要がある場合に、これを行うことができます。pre-sort は、consumer がフィルタリングを開始する前に実行され、Camel によって処理されるファイルを受け入れます。このオプション default=false で無効になっています。 | false | boolean |
| recursive (consumer) | ディレクトリーの場合は、すべてのサブディレクトリー内のファイルも検索します。 | false | boolean |
| resumeDownload (consumer) | ダウンロードの再開を有効にするかどうかを設定します。これは、FTP サーバーでサポートされている必要があります (ほとんどすべての FTP サーバーがサポートしています)。さらに、オプション localWorkDirectory を設定して、ダウンロードしたファイルがローカルディレクトリーに保存されるようにし、オプションバイナリーを有効にする必要があります。これは、ダウンロードの再開をサポートするために必要です。 | false | boolean |
| sendEmptyMessageWhenIdle (consumer) | ポーリング consumer がファイルをポーリングしなかった場合、このオプションを有効にして、代わりに空のメッセージ (ボディーなし) を送信できます。 | false | boolean |
| streamDownload (consumer) | ローカル作業ディレクトリーを使用しない場合に使用するダウンロード方法を設定します。true に設定すると、リモートファイルは読み取られるときにルートにストリーミングされます。false に設定すると、リモートファイルはルートに送信される前にメモリーにロードされます。このオプションを有効にする場合、両方を同時に有効にすることはできないため、stepwise=false を設定する必要があります。 | false | boolean |
| download (consumer (advanced)) | FTP consumer がファイルをダウンロードする必要があるかどうか。このオプションが false に設定されている場合、メッセージ本文は null になりますが、consumer はファイル名、ファイルサイズなどのファイルに関する詳細を含む Camel Exchange を引き続きトリガーします。ファイルがダウンロードされないだけです。 | false | boolean |
| exceptionHandler (consumer (advanced)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (advanced)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| handleDirectoryParserAbsoluteResult (consumer (advanced)) | ディレクトリーパーサーの結果が絶対パスである場合に、consumer がパス内のサブフォルダーとファイルを処理する方法を設定できます。この理由は、一部の FTP サーバーが絶対パスでファイル名を返す場合があるためです。その場合、FTP コンポーネントは返されたパスを相対パスに変換することでこれを処理します。 | false | boolean |
| ignoreFileNotFoundOrPermissionError (consumer (advanced)) | (ディレクトリー内のファイルを一覧表示しようとするとき、またはファイルをダウンロードするとき)、存在しない場合、またはアクセス許可エラーが原因である場合に無視するかどうか。デフォルトでは、ディレクトリーまたはファイルが存在しないか、権限が不十分な場合、例外が出力されます。このオプションを true に設定すると、代わりにそれを無視できます。 | false | boolean |
| inProgressRepository (consumer (advanced)) | プラグ可能な in-progress リポジトリー org.apache.camel.spi.IdempotentRepository。in-progress リポジトリーは、現在進行中のファイルが消費されていることを示すために使用されます。デフォルトでは、メモリーベースのリポジトリーが使用されます。 | IdempotentRepository | |
| localWorkDirectory (consumer (advanced)) | 使用する場合、ローカルの作業ディレクトリーを使用して、リモートファイルのコンテンツをローカルファイルに直接保存し、コンテンツがメモリーに読み込まれないようにできます。これは、非常に大きなリモートファイルを使用している場合に、メモリーを節約するために役立ちます。 | String | |
| onCompletionExceptionHandler (consumer (advanced)) | カスタム org.apache.camel.spi.ExceptionHandler を使用して、consumer がコミットまたはロールバックを実行する完了プロセスのファイル中に出力される例外を処理します。デフォルトの実装は、WARN レベルですべての例外をログに記録し、無視します。 |