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 アーティファクトをサポートします。
| コンポーネント | アーティファクト | 説明 |
|---|---|---|
| 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-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-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-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 を呼び出します。 | |
| link:https://access.redhat.com/documentation/ja-jp/red_hat_build_of_apache_camel/4.0/html-single/red_hat_build_of_apache_camel_for_spring_boot_reference/index#csb-camel-kubernetes-configmap-component-starter | camel-kubernetes-starter | Kubernetes ConfigMaps に対する操作を実行し、ConfigMaps の変更に関する通知を受け取ります。 |
| link:https://access.redhat.com/documentation/ja-jp/red_hat_build_of_apache_camel/4.0/html-single/red_hat_build_of_apache_camel_for_spring_boot_reference/index#csb-camel-kubernetes-custom-resources-component-starter | camel-kubernetes-starter | Kubernetes カスタムリソースに対する操作を実行し、デプロイメントの変更に関する通知を受け取ります。 |
| link:https://access.redhat.com/documentation/ja-jp/red_hat_build_of_apache_camel/4.0/html-single/red_hat_build_of_apache_camel_for_spring_boot_reference/index#csb-camel-kubernetes-deployments-component-starter | camel-kubernetes-starter | Kubernetes デプロイメントに対する操作を実行し、デプロイメントの変更に関する通知を受け取ります。 |
| link:https://access.redhat.com/documentation/ja-jp/red_hat_build_of_apache_camel/4.0/html-single/red_hat_build_of_apache_camel_for_spring_boot_reference/index#csb-camel-kubernetes-event-component-starter | camel-kubernetes-starter | Kubernetes イベントに対する操作を実行し、イベントの変更に関する通知を受け取ります。 |
| link:https://access.redhat.com/documentation/ja-jp/red_hat_build_of_apache_camel/4.0/html-single/red_hat_build_of_apache_camel_for_spring_boot_reference/index#csb-camel-kubernetes-hpa-component-starter | camel-kubernetes-starter | Kubernetes Horizontal Pod Autoscaler (HPA) に対する操作を実行し、HPA の変更に関する通知を受け取ります。 |
| link:https://access.redhat.com/documentation/ja-jp/red_hat_build_of_apache_camel/4.0/html-single/red_hat_build_of_apache_camel_for_spring_boot_reference/index#csb-camel-kubernetes-job-component-starter | camel-kubernetes-starter | Kubernetes ジョブに対する操作を実行します。 |
| link:https://access.redhat.com/documentation/ja-jp/red_hat_build_of_apache_camel/4.0/html-single/red_hat_build_of_apache_camel_for_spring_boot_reference/index#csb-camel-kubernetes-namespaces-component-starter | camel-kubernetes-starter | Kubernetes 名前空間に対する操作を実行し、名前空間の変更に関する通知を受け取ります。 |
| link:https://access.redhat.com/documentation/ja-jp/red_hat_build_of_apache_camel/4.0/html-single/red_hat_build_of_apache_camel_for_spring_boot_reference/index#csb-camel-kubernetes-nodes-component-starter | camel-kubernetes-starter | Kubernetes ノードに対する操作を実行し、ノードの変更に関する通知を受け取ります。 |
| link:https://access.redhat.com/documentation/ja-jp/red_hat_build_of_apache_camel/4.0/html-single/red_hat_build_of_apache_camel_for_spring_boot_reference/index#csb-camel-kubernetes-persistent-volume-component-starter | camel-kubernetes-starter | Kubernetes 永続ボリュームに対する操作を実行し、永続ボリュームの変更に関する通知を受け取ります。 |
| link:https://access.redhat.com/documentation/ja-jp/red_hat_build_of_apache_camel/4.0/html-single/red_hat_build_of_apache_camel_for_spring_boot_reference/index#csb-camel-kubernetes-persistent-volume-claim-component-starter | camel-kubernetes-starter | Kubernetes 永続ボリューム要求に対する操作を実行し、永続ボリューム要求の変更に関する通知を受け取ります。 |
| link:https://access.redhat.com/documentation/ja-jp/red_hat_build_of_apache_camel/4.0/html-single/red_hat_build_of_apache_camel_for_spring_boot_reference/index#csb-camel-kubernetes-pods-component-starter | camel-kubernetes-starter | Kubernetes Pod に対する操作を実行し、Pod の変更に関する通知を受け取ります。 |
| link:https://access.redhat.com/documentation/ja-jp/red_hat_build_of_apache_camel/4.0/html-single/red_hat_build_of_apache_camel_for_spring_boot_reference/index#csb-camel-kubernetes-replication-controller-component-starter | camel-kubernetes-starter | Kubernetes レプリケーションコントローラーに対する操作を実行し、レプリケーションコントローラーの変更に関する通知を受け取ります。 |
| link:https://access.redhat.com/documentation/ja-jp/red_hat_build_of_apache_camel/4.0/html-single/red_hat_build_of_apache_camel_for_spring_boot_reference/index#csb-camel-kubernetes-resources-quota-component-starter | camel-kubernetes-starter | Kubernetes リソースクォータに対する操作を実行します。 |
| link:https://access.redhat.com/documentation/ja-jp/red_hat_build_of_apache_camel/4.0/html-single/red_hat_build_of_apache_camel_for_spring_boot_reference/index#csb-camel-kubernetes-secrets-component-starter | camel-kubernetes-starter | Kubernetes シークレットに対する操作を実行します。 |
| link:https://access.redhat.com/documentation/ja-jp/red_hat_build_of_apache_camel/4.0/html-single/red_hat_build_of_apache_camel_for_spring_boot_reference/index#csb-camel-kubernetes-service-account-component-starter | camel-kubernetes-starter | Kubernetes サービスアカウントに対する操作を実行します。 |
| link:https://access.redhat.com/documentation/ja-jp/red_hat_build_of_apache_camel/4.0/html-single/red_hat_build_of_apache_camel_for_spring_boot_reference/index#csb-camel-kubernetes-services-component-starter | camel-kubernetes-starter | Kubernetes サービスに対する操作を実行し、サービスの変更に関する通知を受け取ります。 |
| camel-language-starter | Camel がサポートする任意の言語でスクリプトを実行します。 | |
| camel-ldap-starter | LDAP サーバーで検索を実行します。 | |
| camel-log-starter | 基礎となるロギングメカニズムにメッセージをログとして記録します。 | |
| 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 を使用するソケットレベルのネットワーク。 | |
| link:https://access.redhat.com/documentation/ja-jp/red_hat_build_of_apache_camel/4.0/html-single/red_hat_build_of_apache_camel_for_spring_boot_reference/index#csb-camel-kubernetes-openshift-build-config-component-starter | camel-kubernetes-starter | OpenShift ビルド設定に対する操作を実行します。 |
| link:https://access.redhat.com/documentation/ja-jp/red_hat_build_of_apache_camel/4.0/html-single/red_hat_build_of_apache_camel_for_spring_boot_reference/index#csb-camel-kubernetes-openshift-builds-component-starter | camel-kubernetes-starter | OpenShift ビルドに対する操作を実行します。 |
| link:https://access.redhat.com/documentation/ja-jp/red_hat_build_of_apache_camel/4.0/html-single/red_hat_build_of_apache_camel_for_spring_boot_reference/index#csb-camel-kubernetes-openshift-deploymentconfigs-component-starter | 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-snmp-starter | トラップを受信し、SNMP (Simple Network Management Protocol) 対応デバイスをポーリングします。 | |
| 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-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 ペイロードを変換します。 |
| コンポーネント | アーティファクト | 説明 |
|---|---|---|
| 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 を使用して、ストリームを圧縮および圧縮解除します。 |
| 言語 | アーティファクト | 説明 |
|---|---|---|
| camel-core-starter | 固定の値は、ルートの起動時に一度だけ設定されます。 | |
| camel-core-starter | コンパイルされた単純な式を評価します。 | |
| camel-core-starter | Exchange からプロパティーを取得します。 | |
| camel-core-starter | Simple 言語のファイル関連機能。 | |
| 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 ペイロードをクエリーまたは変換します。 |
| エクステンション | アーティファクト | 説明 |
|---|---|---|
| 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>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-amqp-starter</artifactId>
</dependency>
2.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
amqp:[queue:|topic:]destinationName[?options]
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 (共通) | 使用する JMS クライアント ID を設定します。この値を指定する場合は、一意である必要があり、単一の JMS 接続インスタンスでのみ使用できることに注意してください。通常、永続的なトピックサブスクリプションの場合にのみ必要です。Apache ActiveMQ を使用している場合は、代わりに仮想トピックを使用することを推奨します。 | String | |
| connectionFactory (共通) | 使用する接続ファクトリー。コンポーネントまたはエンドポイントで接続ファクトリーを設定する必要があります。 | ConnectionFactory | |
| disableReplyTo (共通) | Camel がメッセージの JMSReplyTo ヘッダーを無視するかどうかを指定します。true の場合、Camel は JMSReplyTo ヘッダーで指定された宛先に返信を送り返しません。Camel にルートから消費させたいが、コード内の別のコンポーネントが応答メッセージを処理するため、Camel に自動的に応答メッセージを送り返したくない場合は、このオプションを使用できます。Camel を異なるメッセージブローカー間のプロキシーとして使用し、あるシステムから別のシステムにメッセージをルーティングする場合にも、このオプションを使用できます。 | false | boolean |
| durableSubscriptionName (common) | 永続トピックサブスクリプションを指定するための永続サブスクライバー名。clientId オプションも設定する必要があります。 | String | |
| includeAmqpAnnotations (共通) | AMQP から Camel メッセージへのマッピング時に AMQP アノテーションを含めるかどうか。これを true に設定すると、JMS_AMQP_MA_ 接頭辞を含む AMQP メッセージアノテーションがメッセージヘッダーにマップされます。Apache Qpid JMS API の制限により、現在、配信アノテーションは無視されます。 | false | boolean |
| jmsMessageType (共通) | JMS メッセージの送信に特定の javax.jms.Message 実装を強制的に使用できるようにします。可能な値は、Bytes、Map、Object、Stream、Text です。デフォルトでは、Camel は In body タイプから使用する JMS メッセージタイプを決定します。このオプションで指定できます。 列挙値:
| JmsMessageType | |
| replyTo (共通) | 明示的な 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 が完全に処理されます。transactioned が有効になっている場合、トランザクションは同期的に実行する必要があるため、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 ドメイン) の場合に適用されます。サブスクリプション名は、このクライアントの 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 (上級)) | consumer が停止中にメッセージを受け入れるかどうかを指定します。実行時に JMS ルートを開始および停止するが、キューにメッセージが入れられている場合は、このオプションを有効にすることを検討してください。このオプションが false の場合は、JMS ルートを停止すると、メッセージが拒否される可能性があり、JMS ブローカは再配信を試行する必要がありますが、これも拒否される可能性があり、最終的にメッセージはJMS ブローカー上のデッドレターキューに移動される可能性があります。これを回避するには、このオプションを有効にすることを推奨します。 | false | boolean |
| allowReplyManagerQuickStop (consumer (上級)) | JmsConfiguration#isAcceptMessagesWhileStopping が有効で、org.apache.camel.CamelContext が現在停止している場合に、要求/応答メッセージングのリプライマネージャーで使用される DefaultMessageListenerContainer が、DefaultMessageListenerContainer.runningAllowed フラグを迅速に停止できるようにするかどうか。このクイック停止機能は、通常の JMS consumer ではデフォルトで有効になっていますが、応答マネージャーを有効にするには、このフラグを有効にする必要があります。 | false | boolean |
| consumerType (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 |
| defaultTaskExecutorType (consumer (上級)) | consumer エンドポイントとプロデューサエンドポイントの ReplyTo consumer の両方に対して、DefaultMessageListenerContainer で使用するデフォルトの TaskExecutor タイプを指定します。可能な値: SimpleAsync (Spring の SimpleAsyncTaskExecutor を使用) または ThreadPool (Spring の ThreadPoolTaskExecutor を最適な値で使用 - キャッシュされたスレッドプールのようなもの)。設定されていない場合は、デフォルトで以前の動作になり、consumer エンドポイントにはキャッシュされたスレッドプールが使用され、応答 consumer には SimpleAsync が使用されます。ThreadPool の使用は、同時 consumer が動的に増減するエラスティック設定でスレッドのゴミを減らすために推奨されます。 列挙値:
| DefaultTaskExecutorType | |
| eagerLoadingOfProperties (consumer (上級)) | メッセージが読み込まれるとすぐに JMS プロパティーとペイロードの熱心な読み込みを有効にします。これは、JMS プロパティーが必要ない場合があるため一般的に非効率的ですが、基盤となる JMS プロバイダーと JMS プロパティーの使用に関する問題を早期に発見できる場合があります。オプション eagerPoisonBody も参照してください。 | false | boolean |
| eagerPoisonBody (consumer (上級)) | eagerLoadingOfProperties が有効であり、JMS メッセージペイロード (JMS 本文または JMS プロパティー) が有害 (読み取り/マッピングできない) である場合は、代わりにこのテキストをメッセージボディーとして設定し、メッセージを処理できるようにします (有害の原因は、Exchange では例外としてすでに保存されています)。これは、eagerPoisonBody=false を設定することでオフにすることができます。オプション eagerLoadingOfProperties も参照してください。 | $\{exception.message} による JMS メッセージへの影響 | String |
| exposeListenerSession (consumer (上級)) | メッセージを消費するときにリスナーセッションを公開するかどうかを指定します。 | false | boolean |
| replyToConsumerType (consumer (上級)) | 応答 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 (上級)) | JMS consumer が、consumer が使用しているのと同じ宛先に応答メッセージを送信できるかどうか。これにより、同じメッセージを消費してそれ自体に送り返すことで、無限ループが回避されます。 | false | boolean |
| taskExecutor (consumer (上級)) | メッセージを消費するためのカスタムタスクエグゼキュータを指定できます。 | 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 (上級)) | このオプションは、JMS 仕様に従って無効な値を持つ可能性がある追加のヘッダーを許可するために使用されます。たとえば、WMQ などの一部のメッセージシステムは、バイト配列またはその他の無効な型の値を含む接頭辞 JMS_IBM_MQMD_ を使用するヘッダー名でこれを行います。コンマで区切られた複数のヘッダー名を指定し、ワイルドカードマッチングの接尾辞として使用できます。 | String | |
| allowNullBody (producer (上級)) | ボディーのないメッセージの送信を許可するかどうか。このオプションが false でメッセージボディーが null の場合は、JMSException が出力されます。 | true | boolean |
| alwaysCopyMessage (producer (上級)) | true の場合、メッセージが producer に渡されて送信されると、Camel は常にメッセージの JMS メッセージコピーを作成します。replyToDestinationSelectorName が設定されている場合など、状況によってはメッセージをコピーする必要があります (ちなみに、replyToDestinationSelectorName が設定されている場合、Camel は alwaysCopyMessage オプションを true に設定します)。 | false | boolean |
| correlationProperty (producer (上級)) | InOut 交換パターンを使用する場合、JMSCorrelationID JMS プロパティーの代わりにこの JMS プロパティーを使用してメッセージを関連付けます。設定されたメッセージがこのプロパティーの値のみに関連付けられる場合、JMSCorrelationID プロパティーは無視され、Camel によって設定されません。 | String | |
| disableTimeToLive (producer (上級)) | このオプションを使用して、有効期限を強制的に無効にします。たとえば、JMS を介して要求/応答を行う場合、Camel はデフォルトで、送信されるメッセージの存続時間として requestTimeout 値を使用します。問題は、送信側システムと受信側システムのクロックを同期させる必要があるため、同期していることです。これをアーカイブするのは必ずしも簡単ではありません。したがって、disableTimeToLive=true を使用して、送信されたメッセージに有効期限の値を設定しないようにすることができます。その後、メッセージは受信側システムで期限切れになりません。詳細については、以下の生存時間についてのセクションを参照してください。 | false | boolean |
| forceSendOriginalMessage (producer (上級)) | mapJmsMessage=false を使用すると、ルート中にヘッダーに触れると (get または set)、Camel は新しい JMS メッセージを作成して新しい JMS 宛先に送信します。Camel が受信した元の JMS メッセージを強制的に送信するには、このオプションを true に設定します。 | false | boolean |
| includeSentJMSMessageID (producer (上級)) | InOnly を使用して JMS 宛先に送信する場合にのみ適用されます (例: ファイアアンドフォーゲット)。このオプションを有効にすると、メッセージが JMS 宛先に送信されたときに JMS クライアントによって使用された実際の JMSMessageID で Camel Exchange が強化されます。 | false | boolean |
| replyToCacheLevelName (producer (上級)) | JMS を介して要求/応答を行うときに、応答 consumer のキャッシュレベルを名前で設定します。このオプションは、固定応答キュー (一時的ではない) を使用する場合にのみ適用されます。Camel はデフォルトで次を使用します: 排他的または replyToSelectorName と共有の CACHE_CONSUMER。そして、replyToSelectorName なしで共有するための CACHE_SESSION。IBM WebSphere などの一部の JMS ブローカーは、replyToCacheLevelName=CACHE_NONE を機能させるために設定する必要がある場合があります。注: 一時キューを使用する場合、CACHE_NONE は許可されず、CACHE_CONSUMER や CACHE_SESSION などのより高い値を使用する必要があります。 列挙値:
| String | |
| replyToDestinationSelectorName (producer (上級)) | 使用する固定名を使用して JMS セレクターを設定し、共有キューを使用している場合 (つまり、一時的な応答キューを使用していない場合) に、他の応答から自分の応答を除外できるようにします。 | String | |
| streamMessageTypeEnabled (producer (上級)) | StreamMessage タイプを有効にするかどうかを設定します。ファイル、InputStream などのストリーミングの種類のメッセージペイロードは、BytesMessage または StreamMessage として送信されます。このオプションは、どの種類が使用されるかを制御します。デフォルトでは、BytesMessage が使用され、メッセージペイロード全体がメモリーに読み込まれます。このオプションを有効にすると、メッセージペイロードがチャンク単位でメモリーに読み込まれ、データがなくなるまで各チャンクが StreamMessage に書き込まれます。 | false | boolean |
| allowAutoWiredConnectionFactory (上級) | 接続ファクトリーが設定されていない場合に、レジストリーから ConnectionFactory を自動検出するかどうか。ConnectionFactory のインスタンスが 1 つだけ見つかった場合は、それが使用されます。これはデフォルトで有効になっています。 | true | boolean |
| allowAutoWiredDestinationResolver (上級) | 宛先リゾルバーが設定されていない場合に、レジストリーから DestinationResolver を自動検出するかどうか。DestinationResolver のインスタンスが 1 つだけ見つかった場合は、それが使用されます。これはデフォルトで有効になっています。 | true | boolean |
| allowSerializedHeaders (advanced) | シリアル化されたヘッダーを含めるかどうかを制御します。transferExchange が true の場合にのみ適用されます。これには、オブジェクトがシリアライズ可能である必要があります。Camel はシリアル化できないオブジェクトを除外し、WARN レベルでログに記録します。 | false | boolean |
| artemisStreamingEnabled (上級) | 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 (上級) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| configuration (上級) | 共有 JMS 設定を使用するには。 | JmsConfiguration | |
| destinationResolver (上級) | 独自のリゾルバーを使用できるようにするプラグ可能な 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 (上級) | 常にアイドル状態にできる 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 (上級) | メッセージを消費するために使用する org.springframework.jms.listener.AbstractMessageListenerContainer を決定するために使用される MessageListenerContainerFactory のレジストリー ID。これを設定すると、consumerType が自動的に Custom に設定されます。 | MessageListenerContainerFactory | |
| messageTimestampEnabled (上級) | メッセージの送信時にデフォルトでタイムスタンプを有効にするかどうかを指定します。これは、JMS ブローカーへの単なるヒントです。JMS プロバイダーがこのヒントを受け入れる場合、これらのメッセージのタイムスタンプをゼロに設定する必要があります。プロバイダーがヒントを無視する場合は、タイムスタンプを通常の値に設定する必要があります。 | true | boolean |
| pubSubNoLocal (advanced) | 独自の接続によってパブリッシュされたメッセージの配信を禁止するかどうかを指定します。 | false | boolean |
| queueBrowseStrategy (上級) | キューを参照するときにカスタム QueueBrowseStrategy を使用するには。 | QueueBrowseStrategy | |
| receiveTimeout (上級) | メッセージ受信のタイムアウト (ミリ秒単位)。 | 1000 | long |
| recoveryInterval (advanced) | リカバリーの試行の間隔を指定します。つまり、接続が更新されるタイミング(ミリ秒単位)を指定します。デフォルトは 5000 ミリ秒、つまり 5 秒です。 | 5000 | long |
| requestTimeoutCheckerInterval (上級) | JMS を介してリクエスト/リプライを行うときに、Camel がタイムアウトになった Exchange をチェックする頻度を設定します。デフォルトでは、Camel は 1 秒に 1 回確認します。ただし、タイムアウトが発生したときに迅速に対応する必要がある場合は、この間隔を短くして、より頻繁にチェックすることができます。タイムアウトは、オプション requestTimeout によって決定されます。 | 1000 | long |
| synchronous (上級) | 同期処理を厳密に使用するかどうかを設定します。 | 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 (上級) | InOut メッセージの JMSCorrelationID として JMSMessageID を常に使用するかどうかを指定します。 | false | boolean |
| waitForProvisionCorrelationToBeUpdatedCounter (上級) | JMS を介して要求/応答を行う場合、およびオプション useMessageIDAsCorrelationID が有効な場合に、暫定相関 ID が実際の相関 ID に更新されるのを待機する回数。 | 50 | int |
| waitForProvisionCorrelationToBeUpdatedThreadSleepingTime (上級) | 暫定相関 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 (上級)) | true の場合、オプション transacted=true のときに transactionManager が挿入されていない場合、Camel は JmsTransactionManager を作成します。 | true | boolean |
| transactionManager (トランザクション (上級)) | 使用する Spring トランザクションマネージャー。 | PlatformTransactionManager | |
| transactionName (トランザクション (上級)) | 使用するトランザクションの名前。 | String | |
| transactionTimeout (トランザクション (上級)) | トランザクションモードを使用している場合の、トランザクションのタイムアウト値 (秒単位)。 | -1 | int |
2.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
AMQP エンドポイントは、URI 構文を使用して設定されます。
amqp:destinationType:destinationName
amqp:destinationType:destinationName
パスおよびクエリーパラメーターを使用します。
2.5.1. パスパラメーター (2 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| destinationType (共通) | 使用する宛先の種類。 列挙値:
| queue | String |
| destinationName (共通) | 必須 宛先として使用するキューまたはトピックの名前。 | String |
2.5.2. クエリーパラメーター(96 パラメーター): リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| clientId (共通) | 使用する JMS クライアント ID を設定します。この値を指定する場合は、一意である必要があり、単一の JMS 接続インスタンスでのみ使用できることに注意してください。通常、永続的なトピックサブスクリプションの場合にのみ必要です。Apache ActiveMQ を使用している場合は、代わりに仮想トピックを使用することを推奨します。 | String | |
| connectionFactory (共通) | 使用する接続ファクトリー。コンポーネントまたはエンドポイントで接続ファクトリーを設定する必要があります。 | ConnectionFactory | |
| disableReplyTo (共通) | Camel がメッセージの JMSReplyTo ヘッダーを無視するかどうかを指定します。true の場合、Camel は JMSReplyTo ヘッダーで指定された宛先に返信を送り返しません。Camel にルートから消費させたいが、コード内の別のコンポーネントが応答メッセージを処理するため、Camel に自動的に応答メッセージを送り返したくない場合は、このオプションを使用できます。Camel を異なるメッセージブローカー間のプロキシーとして使用し、あるシステムから別のシステムにメッセージをルーティングする場合にも、このオプションを使用できます。 | false | boolean |
| durableSubscriptionName (common) | 永続トピックサブスクリプションを指定するための永続サブスクライバー名。clientId オプションも設定する必要があります。 | String | |
| jmsMessageType (共通) | JMS メッセージの送信に特定の javax.jms.Message 実装を強制的に使用できるようにします。可能な値は、Bytes、Map、Object、Stream、Text です。デフォルトでは、Camel は In body タイプから使用する JMS メッセージタイプを決定します。このオプションで指定できます。 列挙値:
| JmsMessageType | |
| replyTo (共通) | 明示的な 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 が完全に処理されます。transactioned が有効になっている場合、トランザクションは同期的に実行する必要があるため、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 ドメイン) の場合に適用されます。サブスクリプション名は、このクライアントの 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 (上級)) | consumer が停止中にメッセージを受け入れるかどうかを指定します。実行時に JMS ルートを開始および停止するが、キューにメッセージが入れられている場合は、このオプションを有効にすることを検討してください。このオプションが false の場合は、JMS ルートを停止すると、メッセージが拒否される可能性があり、JMS ブローカは再配信を試行する必要がありますが、これも拒否される可能性があり、最終的にメッセージはJMS ブローカー上のデッドレターキューに移動される可能性があります。これを回避するには、このオプションを有効にすることを推奨します。 | false | boolean |
| allowReplyManagerQuickStop (consumer (上級)) | JmsConfiguration#isAcceptMessagesWhileStopping が有効で、org.apache.camel.CamelContext が現在停止している場合に、要求/応答メッセージングのリプライマネージャーで使用される DefaultMessageListenerContainer が、DefaultMessageListenerContainer.runningAllowed フラグを迅速に停止できるようにするかどうか。このクイック停止機能は、通常の JMS consumer ではデフォルトで有効になっていますが、応答マネージャーを有効にするには、このフラグを有効にする必要があります。 | false | boolean |
| consumerType (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 |
| defaultTaskExecutorType (consumer (上級)) | consumer エンドポイントとプロデューサエンドポイントの ReplyTo consumer の両方に対して、DefaultMessageListenerContainer で使用するデフォルトの TaskExecutor タイプを指定します。可能な値: SimpleAsync (Spring の SimpleAsyncTaskExecutor を使用) または ThreadPool (Spring の ThreadPoolTaskExecutor を最適な値で使用 - キャッシュされたスレッドプールのようなもの)。設定されていない場合は、デフォルトで以前の動作になり、consumer エンドポイントにはキャッシュされたスレッドプールが使用され、応答 consumer には SimpleAsync が使用されます。ThreadPool の使用は、同時 consumer が動的に増減するエラスティック設定でスレッドのゴミを減らすために推奨されます。 列挙値:
| DefaultTaskExecutorType | |
| eagerLoadingOfProperties (consumer (上級)) | メッセージが読み込まれるとすぐに JMS プロパティーとペイロードの熱心な読み込みを有効にします。これは、JMS プロパティーが必要ない場合があるため一般的に非効率的ですが、基盤となる JMS プロバイダーと JMS プロパティーの使用に関する問題を早期に発見できる場合があります。オプション eagerPoisonBody も参照してください。 | false | boolean |
| eagerPoisonBody (consumer (上級)) | eagerLoadingOfProperties が有効であり、JMS メッセージペイロード (JMS 本文または JMS プロパティー) が有害 (読み取り/マッピングできない) である場合は、代わりにこのテキストをメッセージボディーとして設定し、メッセージを処理できるようにします (有害の原因は、Exchange では例外としてすでに保存されています)。これは、eagerPoisonBody=false を設定することでオフにすることができます。オプション eagerLoadingOfProperties も参照してください。 | $\{exception.message} による JMS メッセージへの影響 | String |
| exceptionHandler (consumer (上級)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (上級)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| exposeListenerSession (consumer (上級)) | メッセージを消費するときにリスナーセッションを公開するかどうかを指定します。 | false | boolean |
| replyToConsumerType (consumer (上級)) | 応答 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 (上級)) | JMS consumer が、consumer が使用しているのと同じ宛先に応答メッセージを送信できるかどうか。これにより、同じメッセージを消費してそれ自体に送り返すことで、無限ループが回避されます。 | false | boolean |
| taskExecutor (consumer (上級)) | メッセージを消費するためのカスタムタスクエグゼキュータを指定できます。 | 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 (上級)) | このオプションは、JMS 仕様に従って無効な値を持つ可能性がある追加のヘッダーを許可するために使用されます。たとえば、WMQ などの一部のメッセージシステムは、バイト配列またはその他の無効な型の値を含む接頭辞 JMS_IBM_MQMD_ を使用するヘッダー名でこれを行います。コンマで区切られた複数のヘッダー名を指定し、ワイルドカードマッチングの接尾辞として使用できます。 | String | |
| allowNullBody (producer (上級)) | ボディーのないメッセージの送信を許可するかどうか。このオプションが false でメッセージボディーが null の場合は、JMSException が出力されます。 | true | boolean |
| alwaysCopyMessage (producer (上級)) | true の場合、メッセージが producer に渡されて送信されると、Camel は常にメッセージの JMS メッセージコピーを作成します。replyToDestinationSelectorName が設定されている場合など、状況によってはメッセージをコピーする必要があります (ちなみに、replyToDestinationSelectorName が設定されている場合、Camel は alwaysCopyMessage オプションを true に設定します)。 | false | boolean |
| correlationProperty (producer (上級)) | InOut 交換パターンを使用する場合、JMSCorrelationID JMS プロパティーの代わりにこの JMS プロパティーを使用してメッセージを関連付けます。設定されたメッセージがこのプロパティーの値のみに関連付けられる場合、JMSCorrelationID プロパティーは無視され、Camel によって設定されません。 | String | |
| disableTimeToLive (producer (上級)) | このオプションを使用して、有効期限を強制的に無効にします。たとえば、JMS を介して要求/応答を行う場合、Camel はデフォルトで、送信されるメッセージの存続時間として requestTimeout 値を使用します。問題は、送信側システムと受信側システムのクロックを同期させる必要があるため、同期していることです。これをアーカイブするのは必ずしも簡単ではありません。したがって、disableTimeToLive=true を使用して、送信されたメッセージに有効期限の値を設定しないようにすることができます。その後、メッセージは受信側システムで期限切れになりません。詳細については、以下の生存時間についてのセクションを参照してください。 | false | boolean |
| forceSendOriginalMessage (producer (上級)) | mapJmsMessage=false を使用すると、ルート中にヘッダーに触れると (get または set)、Camel は新しい JMS メッセージを作成して新しい JMS 宛先に送信します。Camel が受信した元の JMS メッセージを強制的に送信するには、このオプションを true に設定します。 | false | boolean |
| includeSentJMSMessageID (producer (上級)) | InOnly を使用して JMS 宛先に送信する場合にのみ適用されます (例: ファイアアンドフォーゲット)。このオプションを有効にすると、メッセージが JMS 宛先に送信されたときに JMS クライアントによって使用された実際の JMSMessageID で Camel Exchange が強化されます。 | false | boolean |
| lazyStartProducer (producer (上級)) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| replyToCacheLevelName (producer (上級)) | JMS を介して要求/応答を行うときに、応答 consumer のキャッシュレベルを名前で設定します。このオプションは、固定応答キュー (一時的ではない) を使用する場合にのみ適用されます。Camel はデフォルトで次を使用します: 排他的または replyToSelectorName と共有の CACHE_CONSUMER。そして、replyToSelectorName なしで共有するための CACHE_SESSION。IBM WebSphere などの一部の JMS ブローカーは、replyToCacheLevelName=CACHE_NONE を機能させるために設定する必要がある場合があります。注: 一時キューを使用する場合、CACHE_NONE は許可されず、CACHE_CONSUMER や CACHE_SESSION などのより高い値を使用する必要があります。 列挙値:
| String | |
| replyToDestinationSelectorName (producer (上級)) | 使用する固定名を使用して JMS セレクターを設定し、共有キューを使用している場合 (つまり、一時的な応答キューを使用していない場合) に、他の応答から自分の応答を除外できるようにします。 | String | |
| streamMessageTypeEnabled (producer (上級)) | StreamMessage タイプを有効にするかどうかを設定します。ファイル、InputStream などのストリーミングの種類のメッセージペイロードは、BytesMessage または StreamMessage として送信されます。このオプションは、どの種類が使用されるかを制御します。デフォルトでは、BytesMessage が使用され、メッセージペイロード全体がメモリーに読み込まれます。このオプションを有効にすると、メッセージペイロードがチャンク単位でメモリーに読み込まれ、データがなくなるまで各チャンクが StreamMessage に書き込まれます。 | false | boolean |
| allowSerializedHeaders (advanced) | シリアル化されたヘッダーを含めるかどうかを制御します。transferExchange が true の場合にのみ適用されます。これには、オブジェクトがシリアライズ可能である必要があります。Camel はシリアル化できないオブジェクトを除外し、WARN レベルでログに記録します。 | false | boolean |
| artemisStreamingEnabled (上級) | 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 (上級) | メッセージを消費するために使用する org.springframework.jms.listener.AbstractMessageListenerContainer を決定するために使用される MessageListenerContainerFactory のレジストリー ID。これを設定すると、consumerType が自動的に Custom に設定されます。 | MessageListenerContainerFactory | |
| messageTimestampEnabled (上級) | メッセージの送信時にデフォルトでタイムスタンプを有効にするかどうかを指定します。これは、JMS ブローカーへの単なるヒントです。JMS プロバイダーがこのヒントを受け入れる場合、これらのメッセージのタイムスタンプをゼロに設定する必要があります。プロバイダーがヒントを無視する場合は、タイムスタンプを通常の値に設定する必要があります。 | true | boolean |
| pubSubNoLocal (advanced) | 独自の接続によってパブリッシュされたメッセージの配信を禁止するかどうかを指定します。 | false | boolean |
| receiveTimeout (advanced) | メッセージ受信のタイムアウト (ミリ秒単位)。 | 1000 | long |
| recoveryInterval (advanced) | リカバリーの試行の間隔を指定します。つまり、接続が更新されるタイミング(ミリ秒単位)を指定します。デフォルトは 5000 ミリ秒、つまり 5 秒です。 | 5000 | long |
| requestTimeoutCheckerInterval (上級) | JMS を介してリクエスト/リプライを行うときに、Camel がタイムアウトになった Exchange をチェックする頻度を設定します。デフォルトでは、Camel は 1 秒に 1 回確認します。ただし、タイムアウトが発生したときに迅速に対応する必要がある場合は、この間隔を短くして、より頻繁にチェックすることができます。タイムアウトは、オプション requestTimeout によって決定されます。 | 1000 | long |
| synchronous (上級) | 同期処理を厳密に使用するかどうかを設定します。 | 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 (上級) | InOut メッセージの JMSCorrelationID として JMSMessageID を常に使用するかどうかを指定します。 | false | boolean |
| waitForProvisionCorrelationToBeUpdatedCounter (上級) | JMS を介して要求/応答を行う場合、およびオプション useMessageIDAsCorrelationID が有効な場合に、暫定相関 ID が実際の相関 ID に更新されるのを待機する回数。 | 50 | int |
| waitForProvisionCorrelationToBeUpdatedThreadSleepingTime (上級) | 暫定相関 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 (上級)) | true の場合、オプション transacted=true のときに transactionManager が挿入されていない場合、Camel は JmsTransactionManager を作成します。 | true | boolean |
| transactionManager (トランザクション (上級)) | 使用する Spring トランザクションマネージャー。 | PlatformTransactionManager | |
| transactionName (トランザクション (上級)) | 使用するトランザクションの名前。 | String | |
| transactionTimeout (トランザクション (上級)) | トランザクションモードを使用している場合の、トランザクションのタイムアウト値 (秒単位)。 | -1 | int |
2.6. 用途 リンクのコピーリンクがクリップボードにコピーされました!
AMQP コンポーネントは JMS コンポーネントから継承されるため、前者の使用法は後者とほぼ同じです。
AMQP コンポーネントの使用
2.7. AMQP コンポーネントの設定 リンクのコピーリンクがクリップボードにコピーされました!
AMQP 1.0 コンポーネントの作成
AMQPComponent amqp = AMQPComponent.amqpComponent("amqp://localhost:5672");
AMQPComponent authorizedAmqp = AMQPComponent.amqpComponent("amqp://localhost:5672", "user", "password");
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 接続の詳細の自動設定
同様に、Camel-CDI を使用する場合は、CDI producer メソッドも使用できます。
CDI の AMQP 接続の詳細の自動設定
@Produces
AMQPConnectionDetails amqpConnection() {
return new AMQPConnectionDetails("amqp://localhost:5672");
}
@Produces
AMQPConnectionDetails amqpConnection() {
return new AMQPConnectionDetails("amqp://localhost:5672");
}
また、AMQP 接続の詳細を読み取るために信頼することもできます。ファクトリーメソッド AMQPConnectionDetails.discoverAMQP() は、以下のスニペットで示されているように、Kubernetes に似た規則で Camel プロパティーを読み取ろうとします。
AMQP 接続の詳細の自動設定
AMQP 固有のオプションを有効にする
たとえば、amqp.traceFrames を有効にする必要がある場合は、次の例のように、オプションを URI に追加することで有効にできます。
AMQPComponent amqp = AMQPComponent.amqpComponent("amqp://localhost:5672?amqp.traceFrames=true");
AMQPComponent amqp = AMQPComponent.amqpComponent("amqp://localhost:5672?amqp.traceFrames=true");
QPID JMS クライアント設定 を参照してください。
2.8. トピックの使用 リンクのコピーリンクがクリップボードにコピーされました!
camel-amqp でトピックを使用するには、以下に示すように、topic:// をトピック 接頭辞として使用するようにコンポーネントを設定する必要があります。
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 が完全に処理されます。transactioned が有効になっている場合、トランザクションは同期的に実行する必要があるため、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 接続インスタンスでのみ使用できることに注意してください。通常、永続的なトピックサブスクリプションの場合にのみ必要です。Apache ActiveMQ を使用している場合は、代わりに仮想トピックを使用することを推奨します。 | 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 | ロング |
第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>
<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");
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 です。
別の方法として、コンテキスト内でデータ形式を指定し、ルートから参照することもできます。
同じ方法で、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");
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>
<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>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-aws2-cw-starter</artifactId>
</dependency>
5.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
aws2-cw://namespace[?options]
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 (上級) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 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
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");
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");
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");
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>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-aws2-ddb-starter</artifactId>
</dependency>
6.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
aws2-ddb://domainName[?options]
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 (上級) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 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
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");
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 にエントリーを作成します
Maven ユーザーは、以下の依存関係を pom.xml に追加する必要があります。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws2-ddb</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws2-ddb</artifactId>
<version>${camel-version}</version>
</dependency>
この場合の 3.18.6 は、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-cw コンポーネントの自動設定を有効にするかどうか。これはデフォルトで有効になっています。 | 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 (バッチはサポートされていません) サービスとのメッセージの送受信をサポートしています。
前提条件
有効な 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>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-aws2-kinesis-starter</artifactId>
</dependency>
7.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
aws2-kinesis://stream-name[?options]
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 DynamoDB コンポーネントは 22 のオプションをサポートします。これは以下に記載されています。
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| amazonKinesisClient (共通) | Autowired このエンドポイントに対するすべての要求に使用する Amazon Kinesis クライアント。 | KinesisClient | |
| cborEnabled (共通) | このオプションは、実行中に CBOR_ENABLED プロパティーを設定します。 | true | boolean |
| configuration (共通) | コンポーネントの設定。 | Kinesis2Configuration | |
| overrideEndpoint (共通) | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | boolean |
| proxyHost (共通) | Kinesis クライアントをインスタンス化する際にプロキシーホストを定義します。 | String | |
| proxyPort (共通) | Kinesis クライアントをインスタンス化する際にプロキシーポートを定義します。 | Integer | |
| proxyProtocol (共通) | Kinesis クライアントをインスタンス化する際にプロキシープロトコルを定義します。 列挙値:
| HTTPS | Protocol |
| region (共通) | Kinesis Firehose クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| trustAllCertificates (共通) | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | boolean |
| uriEndpointOverride (共通) | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| useDefaultCredentialsProvider (共通) | デフォルトのクレデンシャルプロバイダー経由でクレデンシャルをロードすること、または静的クレデンシャルが渡されることを 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 |
| autowiredEnabled (上級) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| accessKey (security) | Amazon AWS Access Key。 | String | |
| secretKey (security) | Amazon AWS Secret Key。 | String |
7.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
AWS Kinesis エンドポイントは、URI 構文を使用して設定します。
aws2-kinesis:streamName
aws2-kinesis:streamName
パスおよびクエリーパラメーターを使用します。
7.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| streamName (共通) | 必須 ストリームの名前。 | String |
7.5.2. クエリーパラメーター (38 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| amazonKinesisClient (共通) | Autowired このエンドポイントに対するすべての要求に使用する Amazon Kinesis クライアント。 | KinesisClient | |
| cborEnabled (共通) | このオプションは、実行中に CBOR_ENABLED プロパティーを設定します。 | true | boolean |
| overrideEndpoint (共通) | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | boolean |
| proxyHost (共通) | Kinesis クライアントをインスタンス化する際にプロキシーホストを定義します。 | String | |
| proxyPort (共通) | Kinesis クライアントをインスタンス化する際にプロキシーポートを定義します。 | Integer | |
| proxyProtocol (共通) | Kinesis クライアントをインスタンス化する際にプロキシープロトコルを定義します。 列挙値:
| HTTPS | Protocol |
| region (共通) | Kinesis Firehose クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| trustAllCertificates (共通) | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | boolean |
| uriEndpointOverride (共通) | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| useDefaultCredentialsProvider (共通) | デフォルトのクレデンシャルプロバイダー経由でクレデンシャルをロードすること、または静的クレデンシャルが渡されることを 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 (上級)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (上級)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| pollStrategy (consumer (上級)) | プラグ可能な 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 (スケジューラー) | 実行の最大数を指定します。そのため、これを 1 に設定するとスケジューラーは 1 度だけ実行されます。これを 5 に設定した場合、5 回だけ実行されます。0 または負の値を設定すると、無制限に実行されます。 | 0 | long |
| runLoggingLevel (scheduler) | consumer はポーリング時に開始/完了のログ行を記録します。このオプションを使用すると、ログレベルを設定できます。 列挙値:
| TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | consumer に使用するカスタム/共有スレッドプールを設定できます。デフォルトでは、各 consumer に独自の単一スレッドのスレッドプールがあります。 | ScheduledExecutorService | |
| scheduler (スケジューラー) | camel-spring または camel-quartz コンポーネントから cron スケジューラーを使用します。スケジューラーにビルドされた値 spring または quartz を使用。 | none | オブジェクト |
| schedulerProperties (スケジューラー) | カスタムスケジューラーまたは 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 |
必要な Kinesis コンポーネントオプション
プロキシーと関連するクレデンシャル情報が設定された状態で、レジストリーに KinesisClient を提供する必要があります。
7.6. バッチ consumer リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントは、Batch Consumer を実装します。
これにより、たとえば、このバッチに存在するメッセージの数を知ることができ、たとえば、Aggregator にこの数のメッセージを集約させることができます。
7.7. 用途 リンクのコピーリンクがクリップボードにコピーされました!
7.7.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 認証情報のドキュメント を参照してください。
7.7.2. Kinesis consumer によって設定されるメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | タイプ | 説明 |
|---|---|---|
|
|
| このレコードのシーケンス番号。これは、サイズが API によって定義されていないため、文字列として表されます。数値型として使用する場合は、次を使用します |
|
|
| AWS がレコードの到着時間として割り当てた時間。 |
|
|
| データレコードが割り当てられているストリーム内のシャードを識別します。 |
7.7.3. AmazonKinesis の設定 リンクのコピーリンクがクリップボードにコピーされました!
次に、amazonKinesisClient URI オプションで KinesisClient を参照する必要があります。
from("aws2-kinesis://mykinesisstream?amazonKinesisClient=#kinesisClient")
.to("log:out?showAll=true");
from("aws2-kinesis://mykinesisstream?amazonKinesisClient=#kinesisClient")
.to("log:out?showAll=true");
7.7.4. AWS 認証情報の指定 リンクのコピーリンクがクリップボードにコピーされました!
新しい ClientConfiguration インスタンスを作成するときのデフォルトである DefaultAWSCredentialsProviderChain を使用して認証情報を取得することを推奨しますが、createClient (…) を呼び出すときに別の AWSCredentialsProvider を指定できます。
7.7.5. Kinesis producer が Kinesis に書き込むために使用するメッセージヘッダー。producer は、メッセージ本文が byte[] であることを期待しています。 リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | タイプ | 説明 |
|---|---|---|
|
|
| このレコードを保存するために Kinesis に渡す PartitionKey。 |
|
|
| このレコードのシーケンス番号を示すオプションのパラメーター。 |
7.7.6. レコードの保存が成功したときに Kinesis producer によって設定されるメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | タイプ | 説明 |
|---|---|---|
|
|
| Response Syntax で定義されているレコードのシーケンス番号 |
|
|
| レコードが保存された場所のシャード ID |
7.8. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Maven ユーザーは、以下の依存関係を pom.xml に追加する必要があります。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws2-kinesis</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws2-kinesis</artifactId>
<version>${camel-version}</version>
</dependency>
この場合の 3.18.6 は、Camel の実際のバージョンに置き換える必要があります。
7.9. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 40 のオプションをサポートします。
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| 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.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.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.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.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.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.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.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 |
第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>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-aws2-lambda-starter</artifactId>
</dependency>
8.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
aws2-lambda://functionName[?options]
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 (上級) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| awsLambdaClient (上級) | 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
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 (上級) | 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");
from("direct:createFunction").to("aws2-lambda://GetHelloWithName?operation=createFunction").to("mock:result");
そして送ることで
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")
from("direct:getFunction")
.setBody(GetFunctionRequest.builder().functionName("test").build())
.to("aws2-lambda://GetHelloWithName?awsLambdaClient=#awsLambdaClient&operation=getFunction&pojoRequest=true")
このようにして、この操作に特に関連するヘッダーやオプションを渡す必要なく、リクエストを直接渡します。
8.10. Dependencies リンクのコピーリンクがクリップボードにコピーされました!
Maven ユーザーは、以下の依存関係を pom.xml に追加する必要があります。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws2-lambda</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws2-lambda</artifactId>
<version>${camel-version}</version>
</dependency>
この場合の 3.18.6 は、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>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-aws2-s3-starter</artifactId>
</dependency>
9.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
aws2-s3://bucketNameOrArn[?options]
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 (共通) | Autowired レジストリーの com.amazonaws.services.s3.AmazonS3 への参照。 | S3Client | |
| amazonS3Presigner (共通) | Autowired リクエストの S3 Presigner。主に createDownloadLink 操作で使用されます。 | S3Presigner | |
| autoCreateBucket (共通) | S3 バケット bucketName の自動作成の設定。moveAfterRead オプションが有効になっている場合も適用され、destinationBucket が存在しない場合は作成されます。 | false | boolean |
| configuration (共通) | コンポーネントの設定。 | AWS2S3 設定 | |
| overrideEndpoint (共通) | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | boolean |
| pojoRequest (共通) | POJO リクエストをボディーとして使用するかどうか。 | false | boolean |
| policy (共通) | com.amazonaws.services.s3.AmazonS3#setBucketPolicy() メソッドに設定されるこのキューのポリシー。 | String | |
| proxyHost (共通) | SQS クライアントをインスタンス化するときにプロキシーホストを定義します。 | String | |
| proxyPort (共通) | クライアント定義内で使用されるプロキシーポートを指定します。 | Integer | |
| proxyProtocol (共通) | S3 クライアントをインスタンス化するときにプロキシープロトコルを定義します。 列挙値:
| HTTPS | Protocol |
| region (共通) | S3 クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| trustAllCertificates (共通) | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | boolean |
| uriEndpointOverride (共通) | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| useDefaultCredentialsProvider (共通) | デフォルトのクレデンシャルプロバイダー経由でクレデンシャルをロードすること、または静的クレデンシャルが渡されることを S3 クライアントは想定すべきかどうかを設定します。 | false | boolean |
| customerAlgorithm(共通 (上級)) | CustomerKey が有効になっている場合に使用するカスタマーアルゴリズムを定義します。 | String | |
| customerKeyId (共通 (上級)) | CustomerKey が有効になっている場合に使用するカスタマーキーの ID を定義します。 | String | |
| customerKeyMD5 (共通 (上級)) | 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 (上級)) | このオプションが 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 (上級)) | KMS が有効になっている場合に使用する KMS キーの ID を定義します。 | String | |
| useAwsKMS (producer (上級)) | KMS を使用する必要があるかどうかを定義します。 | false | boolean |
| useCustomerKey (producer (上級)) | カスタマーキーを使用する必要があるかどうかを定義します。 | false | boolean |
| autowiredEnabled (上級) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 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
aws2-s3://bucketNameOrArn
パスおよびクエリーパラメーターを使用します。
9.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| bucketNameOrArn (共通) | 必須 のバケット名または ARN。 | String |
9.5.2. クエリーパラメーター (68 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| amazonS3Client (共通) | Autowired レジストリーの com.amazonaws.services.s3.AmazonS3 への参照。 | S3Client | |
| amazonS3Presigner (共通) | Autowired リクエストの S3 Presigner。主に createDownloadLink 操作で使用されます。 | S3Presigner | |
| autoCreateBucket (共通) | S3 バケット bucketName の自動作成の設定。moveAfterRead オプションが有効になっている場合も適用され、destinationBucket が存在しない場合は作成されます。 | false | boolean |
| overrideEndpoint (共通) | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | boolean |
| pojoRequest (共通) | POJO リクエストをボディーとして使用するかどうか。 | false | boolean |
| policy (共通) | com.amazonaws.services.s3.AmazonS3#setBucketPolicy() メソッドに設定されるこのキューのポリシー。 | String | |
| proxyHost (共通) | SQS クライアントをインスタンス化するときにプロキシーホストを定義します。 | String | |
| proxyPort (共通) | クライアント定義内で使用されるプロキシーポートを指定します。 | Integer | |
| proxyProtocol (共通) | S3 クライアントをインスタンス化するときにプロキシープロトコルを定義します。 列挙値:
| HTTPS | Protocol |
| region (共通) | S3 クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| trustAllCertificates (共通) | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | boolean |
| uriEndpointOverride (共通) | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| useDefaultCredentialsProvider (共通) | デフォルトのクレデンシャルプロバイダー経由でクレデンシャルをロードすること、または静的クレデンシャルが渡されることを S3 クライアントは想定すべきかどうかを設定します。 | false | boolean |
| customerAlgorithm(共通 (上級)) | CustomerKey が有効になっている場合に使用するカスタマーアルゴリズムを定義します。 | String | |
| customerKeyId (共通 (上級)) | CustomerKey が有効になっている場合に使用するカスタマーキーの ID を定義します。 | String | |
| customerKeyMD5 (共通 (上級)) | 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 (上級)) | このオプションが true で、includeBody が false の場合、エクスチェンジの完了時に S3Object.close() メソッドが呼び出されます。このオプションは includeBody オプションと密接に関係しています。includeBody を false に設定し、autocloseBody を false に設定した場合、S3Object ストリームを閉じるのは呼び出し側が判断します。autocloseBody を true に設定すると、S3Object ストリームが自動的に閉じられます。 | true | boolean |
| exceptionHandler (consumer (上級)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (上級)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| pollStrategy (consumer (上級)) | プラグ可能な 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 (上級)) | KMS が有効になっている場合に使用する KMS キーの ID を定義します。 | String | |
| useAwsKMS (producer (上級)) | KMS を使用する必要があるかどうかを定義します。 | false | boolean |
| useCustomerKey (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 (スケジューラー) | 実行の最大数を指定します。そのため、これを 1 に設定するとスケジューラーは 1 度だけ実行されます。これを 5 に設定した場合、5 回だけ実行されます。0 または負の値を設定すると、無制限に実行されます。 | 0 | long |
| runLoggingLevel (scheduler) | consumer はポーリング時に開始/完了のログ行を記録します。このオプションを使用すると、ログレベルを設定できます。 列挙値:
| TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | consumer に使用するカスタム/共有スレッドプールを設定できます。デフォルトでは、各 consumer に独自の単一スレッドのスレッドプールがあります。 | ScheduledExecutorService | |
| scheduler (スケジューラー) | camel-spring または camel-quartz コンポーネントから cron スケジューラーを使用します。スケジューラーにビルドされた値 spring または quartz を使用。 | none | オブジェクト |
| schedulerProperties (スケジューラー) | カスタムスケジューラーまたは 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 にアクセスするには、レジストリーに amazonDDBClient を指定するか、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");
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");
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");
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 にアップロードします。
この操作により、コンテンツ Camel rocks! を含むファイル camel.txt がアップロードされます。mycamelbucket バケット内
- マルチパートアップロード: 本文のコンテンツに基づいて S3 へのファイルのマルチパートアップロードを実行します。
この操作は、mycamelbucket バケット内のファイル src/empty.txt のコンテンツに基づいて、ファイル empty.txt のマルチパートアップロードを実行します。
- CopyObject: あるバケットから別のバケットにオブジェクトをコピーします
この操作は、ヘッダー camelDestinationKey で表された名前を持つオブジェクトを、バケット mycamelbucket から camelDestinationBucket バケットにコピーします。
- DeleteObject: バケットからオブジェクトを削除します
この操作により、オブジェクト camelKey がバケット mycamelbucket から削除されます。
- ListBuckets: このリージョン内のこのアカウントのバケットを一覧表示します
from("direct:start")
.to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=listBuckets")
.to("mock:result");
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");
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");
from("direct:start")
.to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=listObjects")
.to("mock:result");
この操作は、mycamelbucket バケット内のオブジェクトを一覧表示します
- GetObject: 特定のバケット内の単一のオブジェクトを取得します
このオペレーションは、mycamelbucket バケットの camelKey オブジェクトに関連する S3Object インスタンスを返します。
- GetObjectRange: 特定のバケット内の単一のオブジェクト範囲を取得します
このオペレーションは、0 から 9 までのバイトを含む、mycamelbucket バケット内の camelKey オブジェクトに関連する S3Object インスタンスを返します。
- CreateDownloadLink: S3 Presigner を介してダウンロードリンクを返します。
この操作は、バケット mycamelbucket およびリージョン region 内のファイル camel-key のダウンロードリンク URL を返します。
9.8. ストリーミングアップロードモード リンクのコピーリンクがクリップボードにコピーされました!
ストリームモードを有効にすると、ユーザーはマルチパートアップロードを利用することで、データの次元を事前に知らなくても S3 にデータをアップロードできます。アップロードは、batchSize が完了したか、batchMessageNumber に達したときに完了します。次の 2 つの命名戦略が考えられます。
progressive
プログレッシブ戦略では、各ファイルには keyName オプションとプログレッシブカウンターで設定された名前が付けられ、最終的にはファイル拡張子 (存在する場合) が付けられます。
ランダム
ランダム戦略では、keyName の後に UUID が追加され、最終的にファイル拡張子が追加されます。
たとえば、以下のようになります。
バッチのデフォルトサイズは 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 オプションは 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"));
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");
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");
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 を使用する代替手段) も導入しました。次のコードは例を示しています。
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")
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 クライアントを作成および設定できます。
これで、ルートを初期化する前に、(上で作成した設定オブジェクトを使用して) S3 コンポーネントを設定し、configure メソッドでレジストリーに追加できます。
AWS2S3Component s3Component = new AWS2S3Component(getContext());
s3Component.setConfiguration(configuration);
s3Component.setLazyStartProducer(true);
camelContext.addComponent("aws2-s3", s3Component);
AWS2S3Component s3Component = new AWS2S3Component(getContext());
s3Component.setConfiguration(configuration);
s3Component.setLazyStartProducer(true);
camelContext.addComponent("aws2-s3", s3Component);
これで、キャメルルートに実装されたすべての操作にコンポーネントが使用されます。
9.15. Dependencies リンクのコピーリンクがクリップボードにコピーされました!
Maven ユーザーは、以下の依存関係を pom.xml に追加する必要があります。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws2-s3</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws2-s3</artifactId>
<version>${camel-version}</version>
</dependency>
この場合の 3.18.6 は、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#BUCKET_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>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-aws2-sns-starter</artifactId>
</dependency>
10.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
aws2-sns://topicNameOrArn[?options]
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 (上級) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 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
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 にアクセスするには、レジストリーに amazonDDBClient を指定するか、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");
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");
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(...);
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 のアクセスポリシーでは、次のようなものを送信する必要があります。
これは、サブスクリプションを正しく機能させるための重要なステップです。
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");
from("direct:start")
.to("aws2-sns://camel-topic?subject=The+subject+message&autoCreateTopic=true");
10.10. Dependencies リンクのコピーリンクがクリップボードにコピーされました!
Maven ユーザーは、以下の依存関係を pom.xml に追加する必要があります。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws2-sns</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws2-sns</artifactId>
<version>${camel-version}</version>
</dependency>
この場合の 3.18.6 は、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>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-aws2-sqs-starter</artifactId>
</dependency>
11.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
aws2-sqs://queueNameOrArn[?options]
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 (共通) | Amazon AWS クラウドのホスト名。 | amazonaws.com | String |
| amazonSQSClient (共通) | Autowired AmazonSQS をクライアントとして使用します。 | SqsClient | |
| autoCreateQueue (共通) | キューの自動作成の設定。 | false | boolean |
| configuration (共通) | AWS SQS のデフォルト設定。 | Sqs2Configuration | |
| overrideEndpoint (共通) | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | boolean |
| protocol (共通) | SQS との通信に使用される基礎となるプロトコル。 | https | String |
| proxyProtocol (共通) | SQS クライアントをインスタンス化するときにプロキシープロトコルを定義します。 列挙値:
| HTTPS | Protocol |
| queueOwnerAWSAccountId (共通) | 異なるアカウント所有者でキューを接続する必要がある場合は、キュー所有者の aws アカウント ID を指定します。 | String | |
| region (共通) | SQS クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| trustAllCertificates (共通) | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | boolean |
| uriEndpointOverride (共通) | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| useDefaultCredentialsProvider (共通) | SQS クライアントが AWS infra インスタンスでクレデンシャルのロードすること、または静的クレデンシャルが渡されることを SNS クライアントが想定すべきかどうかを設定します。 | 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 (上級) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| delayQueue (上級) | 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
aws2-sqs:queueNameOrArn
パスおよびクエリーパラメーターを使用します。
11.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| queueNameOrArn (共通) | 必須 のキュー名または ARN。 | String |
11.5.2. クエリーパラメーター (61 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| amazonAWSHost (共通) | Amazon AWS クラウドのホスト名。 | amazonaws.com | String |
| amazonSQSClient (共通) | Autowired AmazonSQS をクライアントとして使用します。 | SqsClient | |
| autoCreateQueue (共通) | キューの自動作成の設定。 | false | boolean |
| headerFilterStrategy (共通) | カスタムの HeaderFilterStrategy を使用して、ヘッダーから Camel または Camel からヘッダーにマッピングします。 | HeaderFilterStrategy | |
| overrideEndpoint (共通) | エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。 | false | boolean |
| protocol (共通) | SQS との通信に使用される基礎となるプロトコル。 | https | String |
| proxyProtocol (共通) | SQS クライアントをインスタンス化するときにプロキシープロトコルを定義します。 列挙値:
| HTTPS | Protocol |
| queueOwnerAWSAccountId (共通) | 異なるアカウント所有者でキューを接続する必要がある場合は、キュー所有者の aws アカウント ID を指定します。 | String | |
| region (共通) | SQS クライアントが機能する必要があるリージョン。このパラメーターを使用する場合、設定には小文字のリージョン名を指定します (例 ap-east-1)。名前 Region.EU_WEST_1.id() を使用する必要があります。 | String | |
| trustAllCertificates (共通) | エンドポイントをオーバーライドするときにすべての証明書を信頼する場合。 | false | boolean |
| uriEndpointOverride (共通) | オーバーライドする URI エンドポイントを設定します。このオプションは overrideEndpoint オプションと組み合わせて使用する必要があります。 | String | |
| useDefaultCredentialsProvider (共通) | SQS クライアントが AWS infra インスタンスでクレデンシャルのロードすること、または静的クレデンシャルが渡されることを SNS クライアントが想定すべきかどうかを設定します。 | 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 (上級)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (上級)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| pollStrategy (consumer (上級)) | プラグ可能な 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 (上級) | 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 (スケジューラー) | 実行の最大数を指定します。そのため、これを 1 に設定するとスケジューラーは 1 度だけ実行されます。これを 5 に設定した場合、5 回だけ実行されます。0 または負の値を設定すると、無制限に実行されます。 | 0 | long |
| runLoggingLevel (scheduler) | consumer はポーリング時に開始/完了のログ行を記録します。このオプションを使用すると、ログレベルを設定できます。 列挙値:
| TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | consumer に使用するカスタム/共有スレッドプールを設定できます。デフォルトでは、各 consumer に独自の単一スレッドのスレッドプールがあります。 | ScheduledExecutorService | |
| scheduler (スケジューラー) | camel-spring または camel-quartz コンポーネントから cron スケジューラーを使用します。スケジューラーにビルドされた値 spring または quartz を使用。 | none | オブジェクト |
| schedulerProperties (スケジューラー) | カスタムスケジューラーまたは 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 にアクセスするには、レジストリーに amazonDDBClient を指定するか、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");
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");
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");
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");
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 を設定できます
その結果、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");
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");
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");
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. Dependencies リンクのコピーリンクがクリップボードにコピーされました!
Maven ユーザーは、以下の依存関係を pom.xml に追加する必要があります。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws2-sqs</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws2-sqs</artifactId>
<version>${camel-version}</version>
</dependency>
この場合の 3.18.6 は、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 インスタンスでクレデンシャルのロードすること、または静的クレデンシャルが渡されることを SNS クライアントが想定すべきかどうかを設定します。 | 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>
<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 (共通) | このビルダーから構築されたクライアントから送信される ClientOptions を設定し、特定のプロパティーのカスタマイズを有効にし、カスタムヘッダー情報の追加をサポートします。詳細は、ClientOptions のドキュメントを参照してください。 | ClientOptions | |
| configuration (common) | コンポーネントの設定。 | ServiceBusConfiguration | |
| proxyOptions (共通) | 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 が使用されている場合に必要です。 | 文字列 | |
| 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 (セキュリティー) | Service Bus 名前空間または特定の Service Bus リソースの接続文字列を設定します。 | 文字列 | |
| fullyQualifiedNamespace (セキュリティー) | サービスバスの完全修飾名前空間。 | 文字列 | |
| tokenCredential (セキュリティー) | com.azure.identity に実装されている、Azure AD 認証用の TokenCredential。 | TokenCredential |
12.4. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Azure ServiceBus エンドポイントは、URI 構文を使用して設定されます。
azure-servicebus:topicOrQueueName
azure-servicebus:topicOrQueueName
パスおよびクエリーパラメーターを使用します。
12.4.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| topicOrQueueName (common) | serviceBusType 設定に依存する、選択されたトピック名またはキュー名。たとえば、serviceBusType=queue の場合、これはキュー名になり、serviceBusType=topic の場合、これはトピック名になります。 | 文字列 |
12.4.2. クエリーパラメーター (25 個のパラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| amqpRetryOptions (common) | Service Bus クライアントの再試行オプションを設定します。指定しないと、デフォルトの再試行オプションが使用されます。 | AmqpRetryOptions | |
| amqpTransportType (common) | Azure Service Bus とのすべての通信が発生するトランスポートの種類を設定します。デフォルト値は AmqpTransportType#AMQP です。 列挙値:
| AMQP | AmqpTransportType |
| clientOptions (共通) | このビルダーから構築されたクライアントから送信される ClientOptions を設定し、特定のプロパティーのカスタマイズを有効にし、カスタムヘッダー情報の追加をサポートします。詳細は、ClientOptions のドキュメントを参照してください。 | ClientOptions | |
| proxyOptions (共通) | 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 が使用されている場合に必要です。 | 文字列 | |
| bridgeErrorHandler (consumer (上級)) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| exceptionHandler (consumer (上級)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (上級)) | 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 (セキュリティー) | Service Bus 名前空間または特定の Service Bus リソースの接続文字列を設定します。 | 文字列 | |
| fullyQualifiedNamespace (セキュリティー) | サービスバスの完全修飾名前空間。 | 文字列 | |
| tokenCredential (セキュリティー) | 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 | メッセージのコンテンツタイプを取得します。 | 文字列 | |
| CamelAzureServiceBusCorrelationId (consumer) 定数: CORRELATION_ID | 相関識別子を取得します。 | 文字列 | |
| CamelAzureServiceBusDeadLetterErrorDescription (consumer) | デッドレターキューに追加されたメッセージの説明を取得します。 | 文字列 | |
| CamelAzureServiceBusDeadLetterReason (consumer) | メッセージがデッドレターキューに追加された理由を取得します。 | 文字列 | |
| CamelAzureServiceBusDeadLetterSource (consumer) | このメッセージがキューに格納されたキューまたはサブスクリプションの名前を取得してから、デッドレターに追加されます。 | 文字列 | |
| 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 | 現在のメッセージのロックトークンを取得します。 | 文字列 | |
| CamelAzureServiceBusLockedUntil (consumer) 定数: LOCKED_UNTIL | このメッセージのロックが切れる日時を取得します。 | OffsetDateTime | |
| CamelAzureServiceBusMessageId (consumer) 定数: MESSAGE_ID | メッセージの識別子を取得します。 | 文字列 | |
| CamelAzureServiceBusPartitionKey (consumer) 定数: PARTITION_KEY | パーティション分割されたエンティティーにメッセージを送信するためのパーティションキーを取得します。 | 文字列 | |
| CamelAzureServiceBusRawAmqpMessage (consumer) 定数: RAW_AMQP_MESSAGE | AMQP プロトコルで定義されたメッセージの表現。 | AmqpAnnotatedMessage | |
| CamelAzureServiceBusReplyTo (consumer) 定数: REPLY_TO | 返信を送信するエンティティーのアドレスを取得します。 | 文字列 | |
| CamelAzureServiceBusReplyToSessionId (consumer) | ReplyTo アドレスを拡張するセッション識別子を取得または設定します。 | 文字列 | |
| CamelAzureServiceBusSequenceNumber (consumer) 定数: SEQUENCE_NUMBER | Service Bus によってメッセージに割り当てられた一意の番号を取得します。 | long | |
| CamelAzureServiceBusSessionId (consumer) 定数: SESSION_ID | メッセージのセッション ID を取得します。 | 文字列 | |
| CamelAzureServiceBusSubject (consumer) 定数: SUBJECT | メッセージのサブジェクトを取得します。 | 文字列 | |
| CamelAzureServiceBusTimeToLive (consumer) 定数: TIME_TO_LIVE | このメッセージが期限切れになるまでの期間を取得します。 | 期間 | |
| CamelAzureServiceBusTo (consumer) 定数: TO | アドレスを取得します。 | 文字列 | |
| CamelAzureServiceBusScheduledEnqueueTime (common) | (producer) メッセージが Service Bus キューまたはトピックに表示される OffsetDateTime をオーバーライドします。(consumer) このメッセージのスケジュールされたエンキュー時刻を取得します。 | OffsetDateTime | |
| CamelAzureServiceBusServiceBusTransactionContext (producer) | サービス中のトランザクションをオーバーライドします。このオブジェクトにはトランザクション ID のみが含まれます。 | ServiceBusTransactionContext | |
| CamelAzureServiceBusProducerOperation (producer) | producer で使用する目的の操作をオーバーライドします。 列挙値:
| ServiceBusProducerOperationDefinition |
12.6.1. メッセージボディー リンクのコピーリンクがクリップボードにコピーされました!
producer では、このコンポーネントは String 型または List<String> のメッセージ本文を受け入れてバッチメッセージを送信します。
cosumer では、返されるメッセージ本文は 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
-
scheduleMessages
-
receiveMessages
from("azure-servicebus:test//?connectionString=test")
.log("${body}")
.to("mock:result");
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");
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 リソースの接続文字列を設定します。 | 文字列 | |
| 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 | サービスバスの完全修飾名前空間。 | 文字列 | |
| 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 が使用されている場合に必要です。 | 文字列 | |
| 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>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-azure-storage-blob-starter</artifactId>
</dependency>
13.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
azure-storage-blob://accountName[/containerName][?options]
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 コンポーネントは、以下に示す 31 のオプションをサポートしています。
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| blobName (共通) | コンテナーから特定の BLOB を使用するための BLOB 名。ただし、producer では、BLOB レベルでの操作にのみ必要です。 | String | |
| blobOffset (共通) | アップロードまたはダウンロード操作の BLOB オフセットを設定します。デフォルトは 0 です。 | 0 | long |
| blobType (共通) | BLOB の種類ごとに適切な設定を開始するための BLOB の種類。 列挙値:
| blockblob | BlobType |
| closeStreamAfterRead (共通) | 読み取り後にストリームを閉じるか、開いたままにします。デフォルトは true です。 | true | boolean |
| configuration (共通) | コンポーネントの設定。 | BlobConfiguration | |
| credentials (共通) | StorageSharedKeyCredential を挿入して Azure クライアントを作成できます。これには重要な認証情報が保持されます。 | StorageSharedKeyCredential | |
| dataCount (共通) | 範囲に含めるバイト数。指定する場合は、0 以上である必要があります。 | Long | |
| fileDir (共通) | ダウンロードされた BLOB が保存されるファイルディレクトリー。これは producer と consumer の両方で使用できます。 | String | |
| maxResultsPerPage (共通) | すべての BlobPrefix 要素を含め、返される BLOB の最大数を指定します。要求で maxResultsPerPage が指定されていないか、5,000 を超える値が指定されている場合、サーバーは最大 5,000 項目を返します。 | Integer | |
| maxRetryRequests (共通) | レスポンスのボディーからデータを読み取るときに作成される追加の HTTP Get 要求の最大数を指定します。 | 0 | int |
| prefix (共通) | 結果をフィルター処理して、名前が指定された接頭辞で始まる BLOB のみを返します。すべての BLOB を返すには null の場合があります。 | String | |
| regex (共通) | 結果をフィルタリングして、指定された正規表現と名前が一致する BLOB のみを返します。接頭辞と正規表現の両方が設定されている場合は、すべてを返すために null になる場合があります。正規表現が優先され、接頭辞は無視されます。 | String | |
| serviceClient (共通) | クライアントをストレージアカウントに Autowired します。このクライアントは、特定のストレージアカウントに関する状態を保持しませんが、サービス上のリソースに適切な要求を送信する便利な方法です。また、BLOB およびコンテナーへの URL を作成するために使用することもできます。このクライアントには、サービスアカウントに対する操作が含まれています。コンテナーに対する操作は、BlobServiceClient#getBlobContainerClient(String) を介して BlobContainerClient で利用でき、ブロブに対する操作は、BlobContainerClient#getBlobClient(String) を介して BlobClient で利用できます。 | BlobServiceClient | |
| timeout (共通) | それを超えると 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 (上級) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| accessKey (security) | Azure Blob サービスでの認証に使用される、関連付けられた Azure アカウント名のアクセスキー。 | String | |
| sourceBlobAccessKey (セキュリティー) | ソース Blob アクセスキー: copyblob 操作では、コピーするソース Blob の accessKey が必要です。accessKey をヘッダーとして渡すと、安全ではないため、キーとして設定できます。 | String |
13.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Azure Storage Blob Service エンドポイントは、URI 構文を使用して設定されます。
azure-storage-blob:accountName/containerName
azure-storage-blob:accountName/containerName
パスおよびクエリーパラメーターを使用します。
13.5.1. パスパラメーター (2 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| accountName (共通) | Azure BLOB サービスでの認証に使用される Azure アカウント名。 | String | |
| containerName (共通) | BLOB コンテナー名。 | String |
13.5.2. クエリーパラメーター (48 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| blobName (共通) | コンテナーから特定の BLOB を使用するための BLOB 名。ただし、producer では、BLOB レベルでの操作にのみ必要です。 | String | |
| blobOffset (共通) | アップロードまたはダウンロード操作の BLOB オフセットを設定します。デフォルトは 0 です。 | 0 | long |
| blobServiceClient (共通) | ストレージアカウントへのクライアント。このクライアントは、特定のストレージアカウントに関する状態を保持しませんが、サービス上のリソースに適切な要求を送信する便利な方法です。また、BLOB およびコンテナーへの URL を作成するために使用することもできます。このクライアントには、サービスアカウントに対する操作が含まれています。コンテナーに対する操作は、BlobServiceClient#getBlobContainerClient(String) を介して BlobContainerClient で利用でき、ブロブに対する操作は、getBlobContainerClient(String).getBlobClient(String) を介して BlobClient で利用できます。 | BlobServiceClient | |
| blobType (共通) | BLOB の種類ごとに適切な設定を開始するための BLOB の種類。 列挙値:
| blockblob | BlobType |
| closeStreamAfterRead (共通) | 読み取り後にストリームを閉じるか、開いたままにします。デフォルトは true です。 | true | boolean |
| credentials (共通) | StorageSharedKeyCredential を挿入して Azure クライアントを作成できます。これには重要な認証情報が保持されます。 | StorageSharedKeyCredential | |
| dataCount (共通) | 範囲に含めるバイト数。指定する場合は、0 以上である必要があります。 | Long | |
| fileDir (共通) | ダウンロードされた BLOB が保存されるファイルディレクトリー。これは producer と consumer の両方で使用できます。 | String | |
| maxResultsPerPage (共通) | すべての BlobPrefix 要素を含め、返される BLOB の最大数を指定します。要求で maxResultsPerPage が指定されていないか、5,000 を超える値が指定されている場合、サーバーは最大 5,000 項目を返します。 | Integer | |
| maxRetryRequests (共通) | レスポンスのボディーからデータを読み取るときに作成される追加の HTTP Get 要求の最大数を指定します。 | 0 | int |
| prefix (共通) | 結果をフィルター処理して、名前が指定された接頭辞で始まる BLOB のみを返します。すべての BLOB を返すには null の場合があります。 | String | |
| regex (共通) | 結果をフィルタリングして、指定された正規表現と名前が一致する BLOB のみを返します。接頭辞と正規表現の両方が設定されている場合は、すべてを返すために null になる場合があります。正規表現が優先され、接頭辞は無視されます。 | String | |
| serviceClient (共通) | クライアントをストレージアカウントに Autowired します。このクライアントは、特定のストレージアカウントに関する状態を保持しませんが、サービス上のリソースに適切な要求を送信する便利な方法です。また、BLOB およびコンテナーへの URL を作成するために使用することもできます。このクライアントには、サービスアカウントに対する操作が含まれています。コンテナーに対する操作は、BlobServiceClient#getBlobContainerClient(String) を介して BlobContainerClient で利用でき、ブロブに対する操作は、BlobContainerClient#getBlobClient(String) を介して BlobClient で利用できます。 | BlobServiceClient | |
| timeout (共通) | それを超えると RuntimeException が発生する任意のタイムアウト値。 | 期間 | |
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| sendEmptyMessageWhenIdle (consumer) | ポーリング consumer がファイルをポーリングしなかった場合、このオプションを有効にして、代わりに空のメッセージ (ボディーなし) を送信できます。 | false | boolean |
| exceptionHandler (consumer (上級)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (上級)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| pollStrategy (consumer (上級)) | プラグ可能な 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 (スケジューラー) | 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 (スケジューラー) | 実行の最大数を指定します。そのため、これを 1 に設定するとスケジューラーは 1 度だけ実行されます。これを 5 に設定した場合、5 回だけ実行されます。0 または負の値を設定すると、無制限に実行されます。 | 0 | long |
| runLoggingLevel (scheduler) | consumer はポーリング時に開始/完了のログ行を記録します。このオプションを使用すると、ログレベルを設定できます。 列挙値:
| TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | consumer に使用するカスタム/共有スレッドプールを設定できます。デフォルトでは、各 consumer に独自の単一スレッドのスレッドプールがあります。 | ScheduledExecutorService | |
| scheduler (スケジューラー) | camel-spring または camel-quartz コンポーネントから cron スケジューラーを使用します。スケジューラーにビルドされた値 spring または quartz を使用。 | none | オブジェクト |
| schedulerProperties (スケジューラー) | カスタムスケジューラーまたは Quartz や Spring ベースのスケジューラーを使用する場合に、追加のプロパティーを設定します。 | マップ | |
| startScheduler (scheduler) | スケジューラーを自動起動するかどうか。 | true | boolean |
| timeUnit (scheduler) | initialDelay および delay オプションの時間単位。 列挙値:
| MILLISECONDS | TimeUnit |
| useFixedDelay (scheduler) | 固定遅延または固定レートを使用するかどうかを制御します。詳細は、JDK の ScheduledExecutorService を参照してください。 | true | boolean |
| accessKey (security) | Azure Blob サービスでの認証に使用される、関連付けられた Azure アカウント名のアクセスキー。 | String | |
| sourceBlobAccessKey (セキュリティー) | ソース Blob アクセスキー: copyblob 操作では、コピーするソース Blob の accessKey が必要です。accessKey をヘッダーとして渡すと、安全ではないため、キーとして設定できます。 | String |
必須情報オプション
このコンポーネントを使用するには、必要な Azure 認証情報を提供するための 3 つのオプションがあります。
-
Azure アカウントの
accountNameとaccessKeyを指定します。これが最も簡単な開始方法です。accessKey は、Azure portal から生成できます。 -
認証情報オプションに提供できる StorageSharedKeyCredential インスタンスを提供します。 -
blobServiceClientに提供できる BlobServiceClient インスタンスを提供します。注: 特定のクライアントを作成する必要はありません (例: BlockBlobClient)。BlobServiceClient は、下位レベルのクライアントを取得するために使用できる上位レベルを表します。
13.6. 用途 リンクのコピーリンクがクリップボードにコピーされました!
たとえば、camelazure ストレージアカウントの container1 にあるブロック blob hello.txt から blob コンテンツをダウンロードするには、次のスニペットを使用します。
from("azure-storage-blob://camelazure/container1?blobName=hello.txt&accessKey=yourAccessKey").
to("file://blobdirectory");
from("azure-storage-blob://camelazure/container1?blobName=hello.txt&accessKey=yourAccessKey").
to("file://blobdirectory");
13.6.1. コンポーネント producer によって評価されるメッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
| ヘッダー | 変数名 | タイプ | 操作 | 説明 |
|---|---|---|---|---|
|
|
|
| すべて | それを超えると {@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 インスタンス設定をより詳細に制御する必要がある場合は、独自のインスタンスを作成できます。
次に、Camel azure-storage-blob コンポーネント設定でこのインスタンスを参照します。
from("azure-storage-blob://cameldev/container1?blobName=myblob&serviceClient=#client")
.to("mock:result");
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");
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");
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");
from("azure-storage-blob://camelazure/container1?accountName=yourAccountName&accessKey=yourAccessKey&fileDir=/var/to/awesome/dir").
to("mock:results");
13.6.7. producer 操作の例 リンクのコピーリンクがクリップボードにコピーされました!
-
listBlobContainers
-
createBlobContainer
-
deleteBlobContainer:
-
listBlobs:
-
getBlob:
交換本体に outputStream を設定し、それにデータを書き込むことができます。例:
本体を設定しない場合、この操作は、さらに下流に進むことができる InputStream インスタンスを提供します。
-
deleteBlob:
-
downloadBlobToFile:
-
downloadLink
-
uploadBlockBlob
-
stageBlockBlobList
-
commitBlockBlobList
-
getBlobBlockList
from("direct:start")
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=getBlobBlockList&serviceClient=#client")
.log("${body}")
.to("mock:result");
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");
from("direct:start")
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=createAppendBlob&serviceClient=#client")
.to("mock:result");
-
commitAppendBlob
-
createPageBlob
from("direct:start")
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=createPageBlob&serviceClient=#client")
.to("mock:result");
from("direct:start")
.to("azure-storage-blob://camelazure/container1?blobName=blob&operation=createPageBlob&serviceClient=#client")
.to("mock:result");
-
uploadPageBlob
-
resizePageBlob
-
clearPageBlob
-
getPageBlobRanges
-
copyBlob
このようにして、アカウント 'account' のコンテナー containerblob1 内の file.txt が、同じアカウントのコンテナー containerblob2 にコピーされます。
13.6.8. 開発ノート (重要) リンクのコピーリンクがクリップボードにコピーされました!
すべての統合テストは Testcontainers を使用し、デフォルトで実行されます。Azure サービスを使用してすべての統合テストを実行できるようにするには、Azure の accessKey と accountName を取得する必要があります。モック単体テストに加えて、マイナーバージョンのアップグレードでも Azure クライアントが問題を起こす可能性があるため、変更を加えたり、クライアントのアップグレードごとに統合テストを実行したりする必要があります。統合テストを実行するには、このコンポーネントディレクトリーで次の maven コマンドを実行します。
mvn verify -PfullTests -DaccountName=myacc -DaccessKey=mykey
mvn verify -PfullTests -DaccountName=myacc -DaccessKey=mykey
ここで、accountName は Azure アカウント名で、accessKey は Azure portal から生成されるアクセスキーです。
13.7. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 32 のオプションをサポートします。
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| 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.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.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.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 ストレージキューサービス リンクのコピーリンクがクリップボードにコピーされました!
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>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-azure-storage-queue-starter</artifactId>
</dependency>
14.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
azure-storage-queue://accountName[/queueName][?options]
azure-storage-queue://accountName[/queueName][?options]
consumer の場合、accountName と queueName が必要です。producer の場合は、要求される操作によって異なります。たとえば、操作がサービスレベルである場合は eb: 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 (共通) | コンポーネントの設定。 | QueueConfiguration | |
| serviceClient (共通) | 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 (上級) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 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 | |
| 認証情報 (セキュリティー) | StorageSharedKeyCredential を挿入して Azure クライアントを作成できます。これには重要な認証情報が保持されます。 | StorageSharedKeyCredential |
14.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Azure ストレージキューサービスエンドポイントは、URI 構文を使用して設定されます。
azure-storage-queue:accountName/queueName
azure-storage-queue:accountName/queueName
パスおよびクエリーパラメーターを使用します。
14.5.1. パスパラメーター (2 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| accountName (共通) | Azure キューサービスでの認証に使用される Azure アカウント名。 | String | |
| queueName (共通) | キューリソース名。 | String |
14.5.2. クエリーパラメーター (31 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| serviceClient (共通) | 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 (上級)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (上級)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| pollStrategy (consumer (上級)) | プラグ可能な 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 (スケジューラー) | 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 (スケジューラー) | 実行の最大数を指定します。そのため、これを 1 に設定するとスケジューラーは 1 度だけ実行されます。これを 5 に設定した場合、5 回だけ実行されます。0 または負の値を設定すると、無制限に実行されます。 | 0 | long |
| runLoggingLevel (scheduler) | consumer はポーリング時に開始/完了のログ行を記録します。このオプションを使用すると、ログレベルを設定できます。 列挙値:
| TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | consumer に使用するカスタム/共有スレッドプールを設定できます。デフォルトでは、各 consumer に独自の単一スレッドのスレッドプールがあります。 | ScheduledExecutorService | |
| scheduler (スケジューラー) | camel-spring または camel-quartz コンポーネントから cron スケジューラーを使用します。スケジューラーにビルドされた値 spring または quartz を使用。 | none | オブジェクト |
| schedulerProperties (スケジューラー) | カスタムスケジューラーまたは Quartz や Spring ベースのスケジューラーを使用する場合に、追加のプロパティーを設定します。 | マップ | |
| startScheduler (scheduler) | スケジューラーを自動起動するかどうか。 | true | boolean |
| timeUnit (scheduler) | initialDelay および delay オプションの時間単位。 列挙値:
| MILLISECONDS | TimeUnit |
| useFixedDelay (scheduler) | 固定遅延または固定レートを使用するかどうかを制御します。詳細は、JDK の ScheduledExecutorService を参照してください。 | true | boolean |
| accessKey (security) | azure キューサービスでの認証に使用される、関連付けられた azure アカウント名のアクセスキー。 | String | |
| 認証情報 (セキュリティー) | 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");
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 インスタンス設定をより詳細に制御する必要がある場合は、独自のインスタンスを作成できます。
次に、Camel azure-storage-queue コンポーネント設定でこのインスタンスを参照します。
from("azure-storage-queue://cameldev/queue1?serviceClient=#client")
.to("file://outputFolder?fileName=output.txt&fileExist=Append");
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");
from("azure-storage-queue://cameldev/queue1?serviceClient=#client&maxMessages=5")
.to("file://outputFolder?fileName=output.txt&fileExist=Append");
14.6.7. producer 操作の例 リンクのコピーリンクがクリップボードにコピーされました!
-
listQueues:
-
createQueue:
-
deleteQueue:
-
clearQueue:
-
sendMessage:
-
deleteMessage:
-
receiveMessages:
-
peekMessages:
-
updateMessage:
14.6.8. 開発ノート (重要) リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントで開発する場合、統合テストを実行するために Azure accessKey を取得する必要があります。モック単体テストに加えて、マイナーバージョンのアップグレードでも Azure クライアントが問題を起こす可能性があるため、変更を加えたり、クライアントのアップグレードごとに統合テストを実行したりする必要があります。統合テストを実行するには、このコンポーネントディレクトリーで次の maven コマンドを実行します。
mvn verify -PfullTests -DaccountName=myacc -DaccessKey=mykey
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>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-bean-starter</artifactId>
</dependency>
15.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
bean:beanName[?options]
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 (上級) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
15.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Bean エンドポイントは、URI 構文を使用して設定されます。
bean:beanName
bean:beanName
パスおよびクエリーパラメーターを使用します。
15.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| beanName (共通) | 必須: 呼び出す Bean の名前を設定します。 | String |
15.5.2. クエリーパラメーター (5 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| cache (共通) | 非推奨 代わりにスコープオプションを使用してください。 | Boolean | |
| method (共通) | Bean で呼び出すメソッドの名前を設定します。 | String | |
| scope (共通) | 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 (上級) | Bean の追加プロパティーの設定に使用します。 | マップ |
15.6. 使用 リンクのコピーリンクがクリップボードにコピーされました!
メッセージの消費に使用されるオブジェクトインスタンスは、レジストリーに明示的に登録する必要があります。たとえば、Spring を使用している場合は、Spring 設定で Bean を定義する必要があります。
bind メソッドを使用して、Camel の Registry を介して Bean を手動で登録することもできます。
エンドポイントが登録されたら、エクスチェンジの処理に使用する Camel ルートを構築できます。
bean: エンドポイントは、ルートへの入力として定義できません。つまり、消費できません。一部のインバウンドメッセージエンドポイントから Bean エンドポイントに、出力としてのみルーティングできます。direct: または queue: エンドポイントを入力として使用することを検討してください。
ProxyHelper で createProxy() メソッドを使用して、BeanExchange を生成して任意のエンドポイントに送信するプロキシーを作成できます。
XML DSL を使用した同じルート:
<route> <from uri="direct:hello"/> <to uri="bean:bye"/> </route>
<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")) として指定する代わりに、次の構文を使用できます。
Bean への参照の名前を渡す代わりに (Camel がレジストリーでそれを検索できるようにするため)、Bean 自体を指定できます。
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>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-bean-validator-starter</artifactId>
</dependency>
16.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
bean-validator:label[?options]
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 (上級) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| constraintValidatorFactory (上級) | カスタムの ConstraintValidatorFactory を使用します。 | ConstraintValidatorFactory | |
| messageInterpolator (上級) | カスタムの MessageInterpolator を使用します。 | MessageInterpolator | |
| traversableResolver (上級) | カスタムの TraversableResolver を使用します。 | TraversableResolver | |
| validationProviderResolver (上級) | カスタムの ValidationProviderResolver を使用します。 | ValidationProviderResolver | |
| validatorFactory (上級) | Autowired: カスタムの ValidatorFactory を使用します。 | ValidatorFactory |
16.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Bean バリデーターエンドポイントは URI 構文を使用して設定されます。
bean-validator:label
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 (上級) | カスタムの ConstraintValidatorFactory を使用します。 | ConstraintValidatorFactory | |
| messageInterpolator (上級) | カスタムの MessageInterpolator を使用します。 | MessageInterpolator | |
| traversableResolver (上級) | カスタムの TraversableResolver を使用します。 | TraversableResolver | |
| validationProviderResolver (上級) | カスタムの ValidationProviderResolver を使用します。 | ValidationProviderResolver | |
| validatorFactory (上級) | カスタムの 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");
from("direct:test").
to("bean-validator://ValidationProviderResolverTest?validationProviderResolver=#myValidationProviderResolver");
<bean id="myValidationProviderResolver" class="org.apache.camel.component.bean.validator.HibernateValidationProviderResolver"/>
<bean id="myValidationProviderResolver" class="org.apache.camel.component.bean.validator.HibernateValidationProviderResolver"/>
カスタムの ValidationProviderResolver が定義されておらず、バリデーターコンポーネントが OSGi 環境にデプロイされている場合、HibernateValidationProviderResolver は自動的に使用されます。
16.7. 例 リンクのコピーリンクがクリップボードにコピーされました!
以下を持つ java Bean があると仮定します。アノテーション:
Car.java
カスタムバリデーショングループのインターフェイス定義:
OptionalChecks.java
public interface OptionalChecks {
}
public interface OptionalChecks {
}
以下の Camel ルート。manufacturer および licensePlate 属性の @NotNull 制約のみが検証されます (Camel はデフォルトのグループ javax.validation.groups.Default を使用します)。
from("direct:start")
.to("bean-validator://x")
.to("mock:end")
from("direct:start")
.to("bean-validator://x")
.to("mock:end")
OptionalChecks グループからの制約を確認する場合は、以下のようなルートを定義する必要があります。
from("direct:start")
.to("bean-validator://x?group=OptionalChecks")
.to("mock:end")
from("direct:start")
.to("bean-validator://x?group=OptionalChecks")
.to("mock:end")
両方のグループからの制約を確認する場合は、最初に新しいインターフェイスを定義する必要があります。
AllChecks.java
@GroupSequence({Default.class, OptionalChecks.class})
public interface AllChecks {
}
@GroupSequence({Default.class, OptionalChecks.class})
public interface AllChecks {
}
ルート定義は以下のようになります。
from("direct:start")
.to("bean-validator://x?group=AllChecks")
.to("mock:end")
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" />
<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")
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
constraints-car.xml ファイル
constraints-car.xml
OrderedChecks のサンプルルート定義の XML 構文を次に示します。
ボディーには検証するクラスのインスタンスを含める必要があることに注意してください。
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>
<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
10, J, Pauline, M, XD12345678, Fortis Dynamic 15/15, 2500, USD, 08-01-2009
@CsvRecord( separator = "," )
public Class Order {
}
@CsvRecord( separator = "," )
public Class Order {
}
ケース 2: separator = ';'
前のケースと比較して、ここでのセパレーターは , の代わり ; を使用しています。
10; J; Pauline; M; XD12345678; Fortis Dynamic 15/15; 2500; USD; 08-01-2009
10; J; Pauline; M; XD12345678; Fortis Dynamic 15/15; 2500; USD; 08-01-2009
@CsvRecord( separator = ";" )
public Class Order {
}
@CsvRecord( separator = ";" )
public Class Order {
}
ケース 3: separator = '|'
前のケースと比較して、ここでのセパレーターは ; の代わり | を使用しています。
10| J| Pauline| M| XD12345678| Fortis Dynamic 15/15| 2500| USD| 08-01-2009
10| J| Pauline| M| XD12345678| Fortis Dynamic 15/15| 2500| USD| 08-01-2009
@CsvRecord( separator = "\\|" )
public Class Order {
}
@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"
"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15","2500","USD","08-01-2009"
@CsvRecord( separator = "\",\"" )
public Class Order {
}
@CsvRecord( separator = "\",\"" )
public Class Order {
}
Bindy は、レコードが一重引用符または二重引用符で囲まれているかどうかを自動的に検出し、CSV からオブジェクトへのアンマーシャリング時にそれらの引用符を自動的に削除します。したがって、セパレーターに引用符を 含めず に、単に以下を実行するだけです。
"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15","2500","USD","08-01-2009"
"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15","2500","USD","08-01-2009"
@CsvRecord( separator = "," )
public Class Order {
}
@CsvRecord( separator = "," )
public Class Order {
}
Object から CSV にマーシャリングして引用符を使用する場合は、以下に示すように@CsvRecord の quote 属性を使用して、使用する引用符を指定する必要があることに注意してください。
@CsvRecord( separator = ",", quote = "\"" )
public Class Order {
}
@CsvRecord( separator = ",", quote = "\"" )
public Class Order {
}
ケース 5: separator & skipFirstLine
この機能は、クライアントがファイルの最初の行にデータフィールドの名前を入れる場合に役立ちます。
order id, client id, first name, last name, isin code, instrument name, quantity, currency, date
order id, client id, first name, last name, isin code, instrument name, quantity, currency, date
解析プロセス中にこの最初の行をスキップする必要があることを bindy に通知するには、次の属性を使用します。
@CsvRecord(separator = ",", skipFirstLine = true)
public Class Order {
}
@CsvRecord(separator = ",", skipFirstLine = true)
public Class Order {
}
ケース 6: generateHeaderColumns
生成された CSV の最初の行に追加するには、次のようにアノテーションで属性 generateHeaderColumns を true に設定する必要があります。
@CsvRecord( generateHeaderColumns = true )
public Class Order {
}
@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
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 {
}
@CsvRecord(separator = ",", crlf="MAC")
public Class Order {
}
さらに、何らかの理由で別の行末文字を追加する必要がある場合は、crlf パラメーターを使用して指定できます。次の例では、コンマとそれに続く改行文字で行を終了できます。
@CsvRecord(separator = ",", crlf=",\n")
public Class Order {
}
@CsvRecord(separator = ",", crlf=",\n")
public Class Order {
}
ケース 8: isOrdered
モデルから CSV レコードを作成する際に従う順序が、解析時に使用される順序と異なる場合があります。次に、この場合、属性 isOrdered = true を使用して、DataField アノテーションの属性 position と組み合わせて指定できます。
pos はファイルストリームの解析に、position は CSV の生成に使用されます。
17.3.2. 2.リンク リンクのコピーリンクがクリップボードにコピーされました!
リンクアノテーションを使用すると、オブジェクトを相互にリンクできます。
| アノテーション名 | レコードの種類 | レベル |
|---|---|---|
| リンク | all | クラスとプロパティー |
| パラメーター名 | タイプ | 必須/任意 | デフォルト値 | Info |
|---|---|---|---|---|
| linkType | LinkType | OneToOne | クラス間の関係を識別するリンクのタイプ |
現在のバージョンでは、1 対 1 の関係のみが許可されています。
例: モデルクラス Client が Order クラスにリンクされている場合には、次のように Order クラスでアノテーション Link を使用します。
プロパティーリンク
クラス Client の場合:
クラスリンク
@Link
public class 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
この例でわかるように、位置は 1 から始まりますが、クラス Order では続きは 5 になります。2 から 4 までの数字はクラス Client で定義されています (以下を参照)。
位置は別のモデルクラスで継続する
ケース 2: pattern
パターンを使用すると、データの形式を強化または検証できます
Pattern
ケース 3: precision
精度は、数値の小数部分を定義する場合に役立ちます。
精度
ケース 4: 出力で位置が異なる
position 属性は、生成された CSV レコードにフィールドを配置する方法を bindy に通知します。デフォルトでは、使用される位置は属性 pos で定義された位置に対応します。位置が異なる場合 (つまり、マーシャリングとアンマーシャリングを比較する非対称プロセスがあることを意味します)、position を使用してこれを指定できます。
以下に例を示します。
出力位置が異なる
アノテーション @DataField のこの属性は、アノテーション @CsvRecord の属性 isOrdered = true と組み合わせて使用する必要があります。
ケース 5: 必須
フィールドが必須の場合は、required 属性を true に設定して使用します。
必須
このフィールドがレコードに存在しない場合には、パーサーにより次の情報を含めてエラーが報告されます。
Some fields are missing (optional or mandatory), line :
Some fields are missing (optional or mandatory), line :
ケース 6: trim
フィールドの先頭および/または末尾にスペースがあり、処理する前に削除する必要がある場合は、trim 属性を true に設定してください。
Trim
ケース 7: defaultValue
フィールドが定義されていない場合は、defaultValue 属性で示される値が使用されます。
デフォルト値
ケース 8: columnName
@CsvRecord にアノテーション generateHeaderColumns = true がある場合にのみ、プロパティーの列名を指定します。
列名
この属性は、オプションのフィールドにのみ適用されます。
17.3.4. 4.FixedLengthRecord リンクのコピーリンクがクリップボードにコピーされました!
FixedLengthRecord アノテーションは、モデルのルートクラスを識別するために使用されます。これは、レコード = 固定長 (文字数) でフォーマットされたデータを含むファイル/メッセージの行を表し、複数の子モデルクラスにリンクできます。フィールドのデータは右または左に位置合わせできるため、この形式は少し特殊です。
データのサイズがフィールドの長さを完全に満たしていない場合は、埋め込み文字を追加できます。
| アノテーション名 | レコードの種類 | レベル |
|---|---|---|
| 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
10A9PaulineMISINXD12345678BUYShare2500.45USD01-08-2009
Fixed-simple
ケース 2: アラインメントとパディングのある固定長レコード
こちらの詳細な例は、フィールドの配置を定義する方法と、ここで ' ' であるパディング文字を割り当てる方法を示しています。
10A9 PaulineM ISINXD12345678BUYShare2500.45USD01-08-2009
10A9 PaulineM ISINXD12345678BUYShare2500.45USD01-08-2009
Fixed-padding-align
ケース 3: フィールドパディング
' ' の代わりに '0' をパディングする数値形式があるため、レコードに定義されたデフォルトのパディングをフィールドに適用できない場合があります。この場合、モデルで @DataField の属性 paddingChar を使用して、この値を設定できます。
10A9 PaulineM ISINXD12345678BUYShare000002500.45USD01-08-2009
10A9 PaulineM ISINXD12345678BUYShare000002500.45USD01-08-2009
Fixed-padding-field
ケース 4: 区切り文字付きの固定長レコード
固定長レコードでは、レコード内のコンテンツが区切られている場合があります。次の例では、firstName フィールドと lastName フィールドが ^ 文字で区切られています。
10A9Pauline^M^ISINXD12345678BUYShare000002500.45USD01-08-2009
10A9Pauline^M^ISINXD12345678BUYShare000002500.45USD01-08-2009
Fixed-delimited
固定長レコードの pos 値は、オプションで、正確な列番号の代わりに序数の連続した値を使用して定義できます。
ケース 5: レコード定義フィールド長の固定長レコード
固定長レコードには、同じレコード内の別のフィールドで必要とされる長さを定義するフィールドが含まれる場合があります。次の例では、instrumentNumber フィールド値の長さは、レコード内の instrumentNumberLen フィールドの値によって定義されます。
10A9Pauline^M^ISIN10XD12345678BUYShare000002500.45USD01-08-2009
10A9Pauline^M^ISIN10XD12345678BUYShare000002500.45USD01-08-2009
Fixed-delimited
ケース 6: ヘッダーとフッター付きの固定長レコード
Bindy は、モデルの一部として設定されている固定長のヘッダーおよびフッターレコードを検出します。ただし、アノテーション付きのクラスが、プライマリー @FixedLengthRecord クラスと同じパッケージに存在するか、設定されたスキャンパッケージの 1 つに含まれている必要があります。次のテキストは、ヘッダーレコードとフッターレコードで囲まれた 2 つの固定長レコードを示しています。
101-08-2009 10A9 PaulineM ISINXD12345678BUYShare000002500.45USD01-08-2009 10A9 RichN ISINXD12345678BUYShare000002700.45USD01-08-2009 9000000002
101-08-2009
10A9 PaulineM ISINXD12345678BUYShare000002500.45USD01-08-2009
10A9 RichN ISINXD12345678BUYShare000002700.45USD01-08-2009
9000000002
Fixed-header-and-footer-main-class
ケース 7: 固定長レコードの解析時にコンテンツをスキップする
ターゲットユースケースに必要以上の情報を含む、固定長レコードを提供するシステムと統合するのが一般的です。この状況では、不要なフィールドの宣言と解析をスキップすると便利です。これに対応するために、次に宣言されたフィールドの pos 値が最後に解析されたフィールドのカーソル位置を超えている場合には、Bindy により、レコード内で次にマップされたフィールドに移動されます。対象のフィールドに (順序値ではなく) 絶対位置を使用すると、Bindy は 2 つのフィールド間のコンテンツをスキップします。
同様に、先のフィールドに対象となるコンテンツがない場合があります。この場合には、@FixedLengthRecord 宣言で ignoreTrailingChars プロパティーを設定して、最後にマップされたフィールド以降のすべての解析をスキップするように Bindy に指示できます。
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 ...
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 {
}
@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 メッセージ - タグ
ケース 2: 出力での別の位置
FIX メッセージに入れるタグ/キーを事前定義された順序に従ってソートする必要がある場合は、アノテーション @KeyValuePairField の属性 position を使用します。
FIX メッセージ - タグ - 並べ替え
17.3.7. 7.セクション リンクのコピーリンクがクリップボードにコピーされました!
固定長レコードの FIX メッセージでは、情報の表現にさまざまなセクション (ヘッダー、ボディ、およびセクション) があるのが一般的です。アノテーション @Section の目的は、モデルのどのクラスがヘッダー (= セクション 1)、ボディ (= セクション 2)、およびフッター (= セクション 3) を表しているかを bindy に通知することです。
このアノテーションには、1 つの属性/パラメーターのみが存在します。
| アノテーション名 | レコードの種類 | レベル |
|---|---|---|
| セクション | FIX | Class |
| パラメーター名 | タイプ | 必須/任意 | デフォルト値 | Info |
|---|---|---|---|---|
| number | int | ✓ | セクション番号 |
ケース 1: セクション
ヘッダーセクションの定義:
FIX メッセージ - セクション - ヘッダー
本文セクションの定義:
FIX メッセージ - セクション - 本文
フッターセクションの定義:
FIX メッセージ - セクション - フッター
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
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 を生成する
ケース 2: タグ/キーのグループを含む FIX メッセージの読み取り
モデルで処理するメッセージは次のとおりです。
タグ 22、48、および 54 が繰り返されます。
およびコード:
タグ/キーのグループを含む FIX メッセージの読み取り
17.3.9. 9.BindyConverter リンクのコピーリンクがクリップボードにコピーされました!
アノテーション @BindyConverter の目的は、フィールドレベルで使用されるコンバーターを定義することです。提供されたクラスは、Format インターフェイスを実装する必要があります。
17.3.10. 10.FormatFactories リンクのコピーリンクがクリップボードにコピーされました!
アノテーション @FormatFactories の目的は、一連のコンバーターをレコードレベルで定義することです。提供されるクラスは、FormatFactoryInterface インターフェイスを実装する必要があります。
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);
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");
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");
BindyCsvDataFormat bindy = new BindyCsvDataFormat(com.acme.model.MyModel.class);
bindy.setLocale("default");
17.5.2. アンマーシャリング リンクのコピーリンクがクリップボードにコピーされました!
from("file://inbox")
.unmarshal(bindy)
.to("direct:handleOrders");
from("file://inbox")
.unmarshal(bindy)
.to("direct:handleOrders");
または、Spring XML ファイルなどのレジストリーで定義できるデータ形式への名前付き参照を使用できます。
from("file://inbox")
.unmarshal("myBindyDataFormat")
.to("direct:handleOrders");
from("file://inbox")
.unmarshal("myBindyDataFormat")
.to("direct:handleOrders");
Camel ルートは、受信トレイディレクトリー内のファイルをピックアップし、CSV レコードをモデルオブジェクトのコレクションにアンマーシャリングして、handleOrders によって参照されるルートにコレクション
を送信します。
返されるコレクションは、List of Map オブジェクト です。リスト内の各 Map には、CSV の各行からマーシャリングされたモデルオブジェクトが含まれています。理由は、各行が複数のオブジェクトに対応している可能性 があるためです。1 行にオブジェクト 1 つだけが返されることを想定している場合には、混乱を招く可能性があります。
各オブジェクトは、そのクラス名を使用して取得できます。
ルート内で処理するためにこのマップから単一の Order オブジェクトを抽出すると仮定する場合に、次のようにスプリッターとプロセッサーの組み合わせを使用できます。
Bindy は CHARSET_NAME プロパティーまたは CHARSET_NAME ヘッダーを Exchange インターフェイスで定義されているように使用して、アンマーシャリングのために受信した入力ストリームの文字セット変換を行うことに注意してください。一部のプロデューサ (file-endpoint など) では、文字セットを定義できます。文字セット変換は、このプロデューサによってすでに実行されている可能性があります。アンマーシャルに送信する前に、エクスチェンジからこのプロパティーまたはヘッダーを削除する必要がある場合があります。削除しないと、変換が 2 回行われ、想定外の結果が生じる可能性があります。
from("file://inbox?charset=Cp922")
.removeProperty(Exchange.CHARSET_NAME)
.unmarshal("myBindyDataFormat")
.to("direct:handleOrders");
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")
from("direct:handleOrders")
.marshal(bindy)
.to("file://outbox")
17.6. Spring XML の使用 リンクのコピーリンクがクリップボードにコピーされました!
これにより、お気に入りの DSL 言語として Spring を使用して、非常に簡単に camel-bindy に使用するルートを宣言できます。次の例は、最初のルートがファイルからレコードを取得し、コンテンツをアンマーシャリングしてモデルにバインドする 2 つのルートを示しています。結果は pojo に送信され (特別なことは何も行われません)、キューに入れられます。
2 番目のルートは、キューから pojo を抽出し、コンテンツをマーシャリングして、CSV レコードを含むファイルを生成します。
Spring DSL
モデルクラスが serializable を実装していることを確認してください。実装されていない場合には、キューマネージャーでエラーが発生します。
17.7. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
camel ルートで Bindy を使用するには、このデータ形式を実装する camel-bindy に依存関係を追加する必要があります。
Maven を使用する場合は、pom.xml に以下を追加するだけで、バージョン番号を最新かつ最高のリリースに置き換えます (最新バージョンのダウンロードページを参照してください)。
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-bindy</artifactId>
<version>{CamelSBVersion}</version>
</dependency>
<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>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-browse-starter</artifactId>
</dependency>
18.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
browse:someName[?options]
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 (上級) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
18.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Browse エンドポイントは、URI 構文を使用して設定されます。
browse:name
browse:name
パスおよびクエリーパラメーターを使用します。
18.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| name (共通) | 必須 エンドポイントを一意に識別する任意の文字列の名前。 | String |
18.5.2. クエリーパラメーター (4 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| exceptionHandler (consumer (上級)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (上級)) | 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");
from("activemq:order.in").to("browse:orderReceived").to("bean:processOrder");
受信した交換を Java コード内から検査できるようになりました。
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>
<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 (上級) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
19.4. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Cassandra CQL エンドポイントは、URI 構文を使用して設定されます。
cql:beanRef:hosts:port/keyspace
cql:beanRef:hosts:port/keyspace
パスおよびクエリーパラメーターを使用します。
19.4.1. パスパラメーター (4 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| beanRef (共通) | beanRef は bean:id を使用して定義されます。 | String | |
| hosts (共通) | ホスト名 Cassandra サーバー複数のホストはコンマで区切ることができます。 | String | |
| port (共通) | Cassandra サーバーのポート番号 | Integer | |
| keyspace (共通) | 使用するキースペース | String |
19.4.2. クエリーパラメーター (30 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| clusterName (共通) | クラスター名 | String | |
| consistencyLevel (共通) | 使用する一貫性レベル。 列挙値:
| DefaultConsistencyLevel | |
| cql (共通) | 実行する CQL クエリー。キー CamelCqlQuery を持つメッセージヘッダーでオーバーライドできます。 | String | |
| datacenter (共通) | 使用するデータセンター。 | datacenter1 | String |
| loadBalancingPolicyClass (共通) | 特定の LoadBalancingPolicyClass を使用するには。 | String | |
| password (共通) | セッション認証のパスワード。 | String | |
| prepareStatements (共通) | PreparedStatements を使用するか、通常のステートメントを使用するか。 | true | boolean |
| resultSetConversionStrategy (共通) | ResultSet をメッセージ本文 ALL、ONE、LIMIT_10、LIMIT_100… に変換するためのロジックを実装するカスタムクラスを使用するには | ResultSetConversionStrategy | |
| session (共通) | Session インスタンスを使用するには (通常、このオプションは使用しません)。 | CqlSession | |
| username (共通) | セッション認証のユーザー名。 | String | |
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| sendEmptyMessageWhenIdle (consumer) | ポーリング consumer がファイルをポーリングしなかった場合、このオプションを有効にして、代わりに空のメッセージ (ボディーなし) を送信できます。 | false | boolean |
| exceptionHandler (consumer (上級)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (上級)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| pollStrategy (consumer (上級)) | プラグ可能な 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 (スケジューラー) | 実行の最大数を指定します。そのため、これを 1 に設定するとスケジューラーは 1 度だけ実行されます。これを 5 に設定した場合、5 回だけ実行されます。0 または負の値を設定すると、無制限に実行されます。 | 0 | long |
| runLoggingLevel (scheduler) | consumer はポーリング時に開始/完了のログ行を記録します。このオプションを使用すると、ログレベルを設定できます。 列挙値:
| TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | consumer に使用するカスタム/共有スレッドプールを設定できます。デフォルトでは、各 consumer に独自の単一スレッドのスレッドプールがあります。 | ScheduledExecutorService | |
| scheduler (スケジューラー) | camel-spring または camel-quartz コンポーネントから cron スケジューラーを使用します。スケジューラーにビルドされた値 spring または quartz を使用。 | none | オブジェクト |
| schedulerProperties (スケジューラー) | カスタムスケジューラーまたは Quartz や Spring ベースのスケジューラーを使用する場合に、追加のプロパティーを設定します。 | マップ | |
| 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
このリポジトリーの実装では、軽量のトランザクション (Compare and Set とも呼ばれます) を使用し、Cassandra 2.0.7+ が必要です。
または、CassandraIdempotentRepository には NAME 列がなく、別のデータモデルを使用するように拡張できます。
| オプション | デフォルト | 説明 |
|---|---|---|
|
|
| テーブル名 |
|
|
| プライマリーキー列 |
|
|
リポジトリー名、 | |
|
| 重要な生存期間 | |
|
|
キーの挿入/削除に使用される一貫性レベル: | |
|
|
キーの読み取り/チェックに使用される一貫性レベル: |
19.9. 集計リポジトリー リンクのコピーリンクがクリップボードにコピーされました!
NamedCassandraAggregationRepository は、次のように Cassandra テーブルに相関キーによる交換を格納します。
CAMEL_AGGREGATION.cql
または、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);
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")
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章 Constant リンクのコピーリンクがクリップボードにコピーされました!
定数式言語は、実際には定数値またはオブジェクトを使用する方法にすぎません。
これは、ルートの開始時に一度だけ設定される固定定数値 (またはオブジェクト) であるため、ルーティング中に動的な値が必要な場合は、この値は使用しないでください。
20.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で constant を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency> <groupId>org.apache.camel.springboot</groupId> <artifactId>camel-core-starter</artifactId> </dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-core-starter</artifactId>
</dependency>
20.2. Constant オプション リンクのコピーリンクがクリップボードにコピーされました!
Constant 言語は、以下に示す 2 つのオプションをサポートしています。
| 名前 | デフォルト | Java タイプ | 説明 |
|---|---|---|---|
| resultType |
| 定数型のクラス名を設定します。 | |
| trim |
| 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 |
20.3. 例 リンクのコピーリンクがクリップボードにコピーされました!
setHeader EIP は、次のような定数式を利用できます。
この場合、seda:a エンドポイントからのメッセージには、キー theHeader を含むヘッダーが含まれ、その値が the value (文字列型) として設定されます。
Java DSL を使用した同じ例:
from("seda:a")
.setHeader("theHeader", constant("the value"))
.to("mock:b");
from("seda:a")
.setHeader("theHeader", constant("the value"))
.to("mock:b");
20.3.1. 値の型の指定 リンクのコピーリンクがクリップボードにコピーされました!
オプション resultType を使用して、値が 文字列 値として指定されている場合に、値のタイプを指定できます。これは、XML または YAML DSL を使用する場合に発生します。
たとえば、int 型のヘッダーを設定するには、次のようにします。
20.4. 外部リソースからの定数のロード リンクのコピーリンクがクリップボードにコピーされました!
constant を外部化して、"classpath:"、"file:"、または "http:" などのリソースから Camel に読み込むことができます。
これは、"resource:scheme:location" の構文を使用して行われます。たとえば、クラスパス上のファイルを参照するには、以下を実行します。
.setHeader("myHeader").constant("resource:classpath:constant.txt")
.setHeader("myHeader").constant("resource:classpath:constant.txt")
20.5. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Constant 言語は camel-core の一部です。
20.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 | 追加の設定定義を定義します。 | マップ | |
| 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 で定義されます。 | マップ | |
| 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 | 追加の設定定義を定義します。 | マップ | |
| 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 で定義されます。 | マップ | |
| camel.cloud.dns.service-discovery.proto | 目的のサービスのトランスポートプロトコル。 | _tcp | String |
| camel.cloud.etcd.service-discovery.configurations | 追加の設定定義を定義します。 | マップ | |
| 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 で定義されます。 | マップ | |
| 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 | 追加の設定定義を定義します。 | マップ | |
| 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 で定義されます。 | マップ | |
| 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 | 追加の設定定義を定義します。 | マップ | |
| 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 で定義されます。 | マップ | |
| 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 | 追加の設定定義を定義します。 | マップ | |
| 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 | 追加の設定定義を定義します。 | マップ | |
| 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 が閉じられたときに呼び出しの結果を記録するために使用されるスライディングウィンドウのサイズを設定します。slideWindowSize は、スライディングウィンドウのサイズを設定します。スライディングウィンドウは、カウントベースまたは時間ベースのいずれかです。slidingWindowType が COUNT_BASED の場合、最後の slideWindowSize 呼び出しが記録され、集計されます。SlidingWindowType が TIME_BASED の場合は、最後の slideWindowSize 秒の呼び出しが記録され、集計されます。slidingWindowSize は 0 より大きくなければなりません。minimumNumberOfCalls は 0 より大きくする必要があります。SlidingWindowType が COUNT_BASED の場合、minimumNumberOfCalls を slideWindowSize より大きくすることはできません。slidingWindowType が TIME_BASED の場合は、好きなものを選択できます。デフォルトの slidingWindowType は 100 です。 | 100 | Integer |
| camel.resilience4j.sliding-window-type | CircuitBreaker が閉じられたときに呼び出しの結果を記録するために使用されるスライディングウィンドウのサイズを設定します。スライディングウィンドウは、カウントベースまたは時間ベースのいずれかです。slidingWindowType が COUNT_BASED の場合、最後の slideWindowSize 呼び出しが記録され、集計されます。SlidingWindowType が TIME_BASED の場合は、最後の slideWindowSize 秒の呼び出しが記録され、集計されます。デフォルトの 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 をクールスタッフに設定します。 | マップ | |
| 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 | 使用中の残りのコンポーネントの追加プロパティーをできるだけ多く設定できます。 | マップ | |
| camel.rest.consumer-property | 使用中の残りの consumer の追加プロパティーをできるだけ多く設定できます。 | マップ | |
| camel.rest.context-path | REST サービスが使用する主要なコンテキストパスを設定します。これは、デプロイされた Web アプリケーションがコンテキストパスを使用してデプロイされる camel-servlet などのコンポーネントを使用する場合に使用できます。または、HTTP サーバーを含む camel -jetty や camel-netty-http などのコンポーネントの場合。 | String | |
| camel.rest.cors-headers | カスタム CORS ヘッダーを設定できます。 | マップ | |
| camel.rest.data-format-property | 使用中のデータ形式の追加プロパティーをできるだけ多く設定できます。たとえば、プロパティー prettyPrint を true に設定すると、json がプリティモードで出力されます。オプションが JSON または XML のいずれか、および IN または OUT のいずれか専用であることを示すために、プロパティーに接頭辞を付けることができます。接頭辞は、json.in.、json.out.、xml.in.、xml.outです。たとえば、値が xml.out.mustBeJAXBElement のキーは、送信用の XML データ形式専用です。接頭辞のないキーは、すべての状況で共通のキーです。 | マップ | |
| camel.rest.enable-cors | HTTP 応答で CORS ヘッダーを有効にするかどうか。デフォルト値は false です。 | false | Boolean |
| camel.rest.endpoint-property | 使用中の残りのエンドポイントの追加プロパティーをできるだけ多く設定できます。 | マップ | |
| 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 |
第21章 コントロールバス リンクのコピーリンクがクリップボードにコピーされました!
producer のみサポート対象
EIP パターンからの 制御バス により、統合システムをフレームワーク内から監視および管理できます。
コントロールバスを使用して、エンタープライズ統合システムを管理します。コントロールバスは、アプリケーションデータで使用されるのと同じメッセージングメカニズムを使用しますが、メッセージフローに含まれるコンポーネントの管理に関連するデータを送信するために別のチャネルを使用します。
Camel では、JMX を使用して、または CamelContext から、または org.apache.camel.api.management パッケージから Java API を使用して、またはここに例があるイベント通知機能を使用して、管理および監視できます。
ControlBus コンポーネントは、Control Bus EIP パターンに基づいて Camel アプリケーションを簡単に管理できるようにします。たとえば、エンドポイントにメッセージを送信することで、ルートのライフサイクルを制御したり、パフォーマンス統計を収集したりできます。
controlbus:command[?options]
controlbus:command[?options]
command には、使用するコマンドのタイプを識別するための任意の文字列を指定できます。
21.1. コマンド リンクのコピーリンクがクリップボードにコピーされました!
| コマンド | 説明 |
|---|---|
|
|
|
|
| メッセージ本文の評価に使用するを指定できます。評価の結果があれば、その結果がメッセージ本文に入れられます。 |
21.2. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で controlbus を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency> <groupId>org.apache.camel.springboot</groupId> <artifactId>camel-controlbus-starter</artifactId> </dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-controlbus-starter</artifactId>
</dependency>
21.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
21.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
21.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
21.4. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
コントロールバスコンポーネントは、以下に示す 2 つのオプションをサポートします。
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| autowiredEnabled (上級) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
21.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Control Bus エンドポイントは、URI 構文を使用して設定されます。
controlbus:command:language
controlbus:command:language
パスおよびクエリーパラメーターを使用します。
21.5.1. パスパラメーター (2 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| command (producer) | 必要な コマンドは、ルートまたは言語のいずれかです。 列挙値:
| String | |
| language (producer) | メッセージ本文の評価に使用する言語の名前を指定できます。評価の結果があれば、その結果がメッセージ本文に入れられます。 列挙値:
| 言語 |
21.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 |
21.6. ルートコマンドの使用 リンクのコピーリンクがクリップボードにコピーされました!
route コマンドを使用すると、特定のルートで一般的なタスクを非常に簡単に実行できます。たとえば、ルートを開始するには、このエンドポイントに空のメッセージを送信できます。
template.sendBody("controlbus:route?routeId=foo&action=start", null);
template.sendBody("controlbus:route?routeId=foo&action=start", null);
ルートのステータスを取得するには、次のようにします。
String status = template.requestBody("controlbus:route?routeId=foo&action=status", null, String.class);
String status = template.requestBody("controlbus:route?routeId=foo&action=status", null, String.class);
21.7. パフォーマンス統計の取得 リンクのコピーリンクがクリップボードにコピーされました!
これには、JMX を有効にする必要があります (デフォルトで)。そうすると、ルートごと、または CamelContext のパフォーマンス統計を取得できます。たとえば、foo という名前のルートの統計を取得するには、次のようにします。
String xml = template.requestBody("controlbus:route?routeId=foo&action=stats", null, String.class);
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);
String xml = template.requestBody("controlbus:route?action=stats", null, String.class);
21.8. シンプルな言語を使用する リンクのコピーリンクがクリップボードにコピーされました!
コントロールバスで Simple 言語を使用できます。たとえば、特定のルートを停止するには、以下を含むメッセージを "controlbus:language:simple" エンドポイントに送信できます。
template.sendBody("controlbus:language:simple", "${camelContext.getRouteController().stopRoute('myRoute')}");
template.sendBody("controlbus:language:simple", "${camelContext.getRouteController().stopRoute('myRoute')}");
これは無効な操作であるため、結果は返されません。ただし、ルートステータスが必要な場合は、次のことができます。
String status = template.requestBody("controlbus:language:simple", "${camelContext.getRouteStatus('myRoute')}", String.class);
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()}");
template.sendBody("controlbus:language:simple?async=true", "${camelContext.stop()}");
async=true を使用して Camel を非同期的に停止します。そうしないと、制御バスコンポーネントに送信したメッセージを処理中に Camel を停止しようとすることになります。
Groovy などの他の言語も使用できます。
21.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 |
第22章 Cron リンクのコピーリンクがクリップボードにコピーされました!
consumer のみがサポートされている
Cron コンポーネントは、Unix cron 構文を使用して指定された特定の時間間隔でイベントをトリガーできる汎用インターフェイスコンポーネントです (例: 0/2 * * * * ? は 2 秒ごとにイベントをトリガーします)。
インターフェイスコンポーネントであるため、Cron コンポーネントにはデフォルトの実装が含まれていません。代わりに、ユーザーが選択した実装をプラグインする必要があります。
次の標準 Camel コンポーネントは、Cron エンドポイントをサポートしています。
- キャメルクォーツ
- Camel-spring
Cron コンポーネントは Camel K でもサポートされており、cron 式で必要なときに Kubernetes スケジューラーを使用してルートをトリガーできます。Camel K では、Kubernetes cron 構文と互換性のある cron 式を使用する場合、追加のライブラリーをプラグインする必要はありません。
22.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で cron を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency> <groupId>org.apache.camel.springboot</groupId> <artifactId>camel-cron-starter</artifactId> </dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-cron-starter</artifactId>
</dependency>
特定の実装をプラグインするには、追加のライブラリーが必要になる場合があります。
22.2. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
22.2.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
22.2.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
22.3. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
Cron コンポーネントは、以下に示す 3 つのオプションをサポートします。
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| autowiredEnabled (上級) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| cronService (上級) | 複数の実装が提供されている場合に使用する CamelCronService の ID。 | String |
22.4. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Cron エンドポイントは、URI 構文を使用して設定されます。
cron:name
cron:name
パスおよびクエリーパラメーターを使用します。
22.4.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| name (consumer) | 必須 cron トリガーの名前。 | String |
22.4.2. クエリーパラメーター (4 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| schedule (consumer) | 必須 イベントの生成に使用される cron 式。 | String | |
| exceptionHandler (consumer (上級)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (上級)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern |
22.5. 用途 リンクのコピーリンクがクリップボードにコピーされました!
次の例のように、コンポーネントを使用して、指定した時間にイベントをトリガーできます。
from("cron:tab?schedule=0/1+*+*+*+*+?")
.setBody().constant("event")
.log("${body}");
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 を使用して記述することもできます。
22.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 |
第23章 Crypto (JCE) リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.3 以降
producer のみサポート対象
Camel 暗号化エンドポイントと Java Cryptographic エクステンションを使用すると、エクスチェンジ用のデジタル署名を簡単に作成できます。Camel は、エクスチェンジワークフローのある時点でエクスチェンジ用の署名を作成し、後の別の時点で署名を検証するために対で使用できる、柔軟性に優れたエンドポイントのペアを提供します。
23.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で crypto を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency> <groupId>org.apache.camel.springboot</groupId> <artifactId>camel-crypto-starter</artifactId> </dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-crypto-starter</artifactId>
</dependency>
23.2. 概要 リンクのコピーリンクがクリップボードにコピーされました!
デジタル署名は、非対称暗号技術を使用してメッセージに署名します。高いレベルから、このアルゴリズムでは、1 つの鍵で暗号化されたデータは、もう一方の鍵でのみ復号化できるという特別なプロパティーを持つ補完的な鍵ペアが使用されます。秘密鍵は厳重に保護され、メッセージの署名に使用されますが、公開鍵は署名付きメッセージの検証に関心を持つすべてのユーザーに共有されます。メッセージは、秘密鍵を使用してメッセージのダイジェストを暗号化することによって署名されます。この暗号化されたダイジェストは、メッセージとともに送信されます。一方、検証者はメッセージダイジェストを再計算し、公開鍵を使用して署名内のダイジェストを復号化します。両方のダイジェストが一致する場合、検証者には、署名を作成できたのは秘密鍵の所有者のみであることがわかります。
Camel は、Java 暗号化拡張機能の署名サービスを使用して、エクスチェンジ署名の作成に必要なすべての重い暗号処理を行います。以下のリソースでは、暗号化、メッセージダイジェスト、デジタル署名の仕組みと、それらを JCE で活用する方法を説明しています。
- Bruce Schneier の応用暗号
- David Hook による Java による暗号化の開始
- 洞察に満ちたウィキペディア Digital_signatures
23.3. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
Camel が提供する署名の作成および検証用の暗号化エンドポイントペア
crypto:sign:name[?options] crypto:verify:name[?options]
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 は別のルートで定義されますが、わかりやすくするために例では順番に表示しています。署名と検証は、同じように設定する必要があります。
23.4. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは、以下の 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
23.4.1. コンポーネントオプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベルは、エンドポイントによって継承される一般的な設定を保持する最上位レベルです。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
コンポーネントによってはオプションが少ししかないものもあれば、多くのオプションを持つものもあります。コンポーネントには通常、一般的に使用されるデフォルトが事前設定されているため、コンポーネントにいくつかのオプションを設定するだけで済みます。あるいは、全く何も設定しない場合もあります。
コンポーネントの設定は、Component DSL、設定ファイル(application.properties|yaml)、または直接 Java コードで実行できます。
23.4.2. エンドポイントオプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントには多くのオプションがあり、エンドポイントに必要な動作を設定できます。オプションは、エンドポイントが consumer (from) または producer (to) として使用されるか、両方に使用されるかにも分類されます。
エンドポイントの設定は、パスおよびクエリーパラメーターとしてエンドポイント URI で直接行われます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
Property Placeholders を使用して、URL、ポート番号、機密情報、その他の設定をハードコーディングしないためのオプションを設定します。つまり、プレースホルダーを使用すると、コードから設定を外部化でき、柔軟性および再利用性が向上します。
以下の 2 つのセクションでは、最初にコンポーネント、次にエンドポイントのすべてのオプションを一覧表示します。
23.5. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
Crypto (JCE) コンポーネントは、以下に示す 21 のオプションをサポートします。
| Name | 説明 | デフォルト | タイプ |
|---|---|---|---|
| algorithm (producer) | 署名者に使用するアルゴリズムの JCE 名を設定します。 | SHA256withRSA | 文字列 |
| alias (producer) | エクスチェンジの署名と検証に使用される鍵および \\{link java.security.cert.Certificate Certificates} を KeyStore に照会する際に使用するエイリアスを設定します。この値は、実行時にメッセージヘッダー org.apache.camel.component.crypto.DigitalSignatureConstants#KEYSTORE_ALIAS を介して提供できます。 | 文字列 | |
| certificateName (producer) | レジストリーで検索できる PrivateKey の参照名を設定します。 | 文字列 | |
| keystore (producer) | エクスチェンジの署名と検証に使用する鍵と証明書を格納できる KeyStore を設定します。KeyStore は通常、Route 定義で提供されるか、メッセージヘッダーの CamelSignatureKeyStoreAlias を介して動的に指定されるエイリアスと共に使用されます。エイリアスが指定されておらず、キーストアに 1 つのエントリーしかない場合は、この 1 つのエントリーが使用されます。 | KeyStore | |
| keystoreName (producer) | レジストリーで検索できる Keystore の参照名を設定します。 | 文字列 | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| privateKey* (producer) | エクスチェンジの署名に使用する PrivateKey を設定します。 | PrivateKey | |
| privateKeyName (producer) | レジストリーで検索できる PrivateKey の参照名を設定します。 | 文字列 | |
| provider (producer) | 設定された署名アルゴリズムを提供するセキュリティープロバイダーの ID を設定します。 | String | |
| publicKeyName (producer) | コンテキストが変更された場合に解決する必要がある参照。 | 文字列 | |
| secureRandomName (producer) | レジストリーで検索できる SecureRandom の参照名を設定します。 | 文字列 | |
| signatureHeaderName (producer) | base64 でエンコードされた署名を格納するために使用する必要があるメッセージヘッダーの名前を設定します。デフォルト は 'CamelDigitalSignature' です。 | 文字列 | |
| autowiredEnabled (上級) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 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 にアクセスするために使用するパスワードを設定します。 | 文字列 |
23.6. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Crypto (JCE) エンドポイントは、URI 構文を使用して設定されます。
crypto:cryptoOperation:name
crypto:cryptoOperation:name
パスとクエリーのパラメーターは次のとおりです。
23.6.1. パスパラメーター (2 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| cryptoOperation (producer) | 必須 エンドポイント URI の暗号スキームの後に指定された暗号操作を設定します。たとえば、crypto:sign 操作として署名を設定します。 列挙値: * sign * verify | CryptoOperation | |
| name (producer) | 必須 この操作の論理名。 | 文字列 |
23.6.2. クエリーパラメーター(19 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| algorithm (producer) | 署名者に使用するアルゴリズムの JCE 名を設定します。 | SHA256withRSA | 文字列 |
| alias (producer) | エクスチェンジの署名と検証に使用される鍵および \\{link java.security.cert.Certificate Certificates} を KeyStore に照会する際に使用するエイリアスを設定します。この値は、実行時にメッセージヘッダー org.apache.camel.component.crypto.DigitalSignatureConstants#KEYSTORE_ALIAS を介して提供できます。 | 文字列 | |
| certificateName (producer) | レジストリーで検索できる PrivateKey の参照名を設定します。 | 文字列 | |
| keystore (producer) | エクスチェンジの署名と検証に使用するキーと証明書を格納できる KeyStore を設定します。KeyStore は通常、Route 定義で提供されるか、メッセージヘッダーの CamelSignatureKeyStoreAlias を介して動的に指定されるエイリアスと共に使用されます。エイリアスが指定されておらず、キーストアに 1 つのエントリーしかない場合は、この 1 つのエントリーが使用されます。 | KeyStore | |
| keystoreName (producer) | レジストリーで検索できる Keystore の参照名を設定します。 | 文字列 | |
| privateKey (producer) | エクスチェンジの署名に使用する PrivateKey を設定します。 | PrivateKey | |
| privateKeyName (producer) | レジストリーで検索できる PrivateKey の参照名を設定します。 | 文字列 | |
| provider (producer) | 設定された署名アルゴリズムを提供するセキュリティープロバイダーの ID を設定します。 | String | |
| publicKeyName (producer) | コンテキストが変更された場合に解決する必要がある参照。 | 文字列 | |
| secureRandomName (producer) | レジストリーで検索できる SecureRandom の参照名を設定します。 | 文字列 | |
| signatureHeaderName (producer) | base64 でエンコードされた署名を格納するために使用する必要があるメッセージヘッダーの名前を設定します。デフォルト は 'CamelDigitalSignature' です。 | 文字列 | |
| lazyStartProducer (producer (上級)) | 最初のメッセージで 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 にアクセスするために使用するパスワードを設定します。 | 文字列 |
23.7. メッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
Crypto (JCE) コンポーネントは、以下に示す 4 つのメッセージヘッダーをサポートします。
| Name | 説明 | デフォルト | タイプ |
|---|---|---|---|
| [CamelSignaturePrivateKey (producer) | メッセージの署名に使用する PrivateKey。 | PrivateKey | |
| [CamelSignaturePublicKeyOrCert (producer) | 署名の検証に使用する証明書または PublicKey。 | 証明書または PublicKey | |
| CamelSignatureKeyStoreAlias (producer)
定数: | エクスチェンジの署名と検証に使用される鍵と証明書を、KeyStore に照会する際に使用するエイリアス。 | 文字列 | |
| CamelSignatureKeyStorePassword (producer) | KeyStore でエイリアス化された PrivateKey にアクセスする際に使用するパスワード。 | char[] |
23.8. 使用 リンクのコピーリンクがクリップボードにコピーされました!
23.8.1. Raw keys リンクのコピーリンクがクリップボードにコピーされました!
エクスチェンジの署名および検証方法として最も基本的なのは、次のように KeyPair を使用する方法です。
Spring XML Extensions で鍵への参照を使用しても、同じ結果になります。
23.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
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}");
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 という名前で登録します。
再び Spring では、ref を使用して実際のキーストアインスタンスを検索します。
23.8.3. JCE プロバイダーとアルゴリズムの変更 リンクのコピーリンクがクリップボードにコピーされました!
署名アルゴリズムまたはセキュリティープロバイダーの変更は、それらの名前を指定するだけの簡単な作業です。選択したアルゴリズムと互換性のあるキーも使用する必要があります。
23.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");
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 の変更
バッファーのサイズを更新する必要がある場合。
23.8.5. キーを動的に提供します。 リンクのコピーリンクがクリップボードにコピーされました!
受信者リストまたは同様の EIP を使用する場合、エクスチェンジの受信者は動的に変化する可能性があります。すべての受信者に同じキーを使用することは、実現可能でも望ましくもない場合があります。署名キーを交換ごとに動的に指定できると便利です。エクスチェンジは、署名する前に、ターゲット受信者のキーで動的に強化できます。これを容易にするために、署名メカニズムでは、以下のメッセージヘッダーを介して鍵を動的に提供できます。
-
DigitalSignatureConstants.SIGNATURE_PRIVATE_KEY,"CamelSignaturePrivateKey" -
DigitalSignatureConstants.SIGNATURE_PUBLIC_KEY_OR_CERT,"CamelSignaturePublicKeyOrCert"
キーストアエイリアスを動的に指定することを推奨します。この場合も、エイリアスはメッセージヘッダーで指定できます。
-
DigitalSignatureConstants.KEYSTORE_ALIAS,"CamelSignatureKeyStoreAlias"
ヘッダーは次のように設定されます。
23.9. Spring Boot 自動設定 リンクのコピーリンクがクリップボードにコピーされました!
このコンポーネントは、以下に示す 47 個のオプションをサポートします。
| Name | 説明 | デフォルト | タイプ |
|---|---|---|---|
| camel.component.crypto.algorithm | 署名者に使用するアルゴリズムの JCE 名を設定します。 | SHA256withRSA | 文字列 |
| camel.component.crypto.alias | エクスチェンジの署名と検証に使用される鍵および {link java.security.cert.Certificate Certificates} を KeyStore に照会する際に使用するエイリアスを設定します。この値は、実行時にメッセージヘッダー org.apache.camel.component.crypto.DigitalSignatureConstants#KEYSTORE_ALIAS を介して提供できます。 | 文字列 | |
| camel.component.crypto.autowired-enabled | 自動ワイヤリングが有効かどうか。自動ワイヤリングオプション (自動ワイヤリングとマークする必要あり) で使用されます。レジストリー内を、タイプが一致するシングルインスタンスがあるか検索し、それをコンポーネント上で設定します。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | Boolean |
| camel.component.crypto.buffer-size | Exchange ペイロードデータの読み込みに使用されるバッファーのサイズを設定します。 | 2048 | 整数 |
| camel.component.crypto.certificate | ペイロードに基づいてエクスチェンジで署名を検証するために使用する証明書を設定します。オプションは java.security.cert.Certificate 型です。 | 証明書 | |
| camel.component.crypto.certificate-name | レジストリーで検索できる PrivateKey の参照名を設定します。 | 文字列 | |
| 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 の参照名を設定します。 | 文字列 | |
| camel.component.crypto.lazy-start-producer | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。これを遅らせて遅延起動することで、Camel のルーティングエラーハンドラーを経由するメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | Boolean |
| camel.component.crypto.password | KeyStore でエイリアス化された PrivateKey にアクセスするために使用するパスワードを設定します。 | 文字列 | |
| camel.component.crypto.private-key | エクスチェンジの署名に使用する PrivateKey を設定します。オプションは java.security.PrivateKey 型です。 | PrivateKey | |
| camel.component.crypto.private-key-name | レジストリーで検索できる PrivateKey の参照名を設定します。 | 文字列 | |
| camel.component.crypto.provider | 設定された署名アルゴリズムを提供するセキュリティープロバイダーの ID を設定します。 | 文字列 | |
| camel.component.crypto.public-key | エクスチェンジで署名を検証するために使用する PublicKey を設定します。オプションは java.security.PublicKey 型です。 | PublicKey | |
| camel.component.crypto.public-key-name | コンテキストが変更された場合に解決する必要がある参照。 | 文字列 | |
| camel.component.crypto.secure-random | Signature サービスの初期化に使用する SecureRandom を設定します。オプションは java.security.SecureRandom 型です。 | SecureRandom | |
| camel.component.crypto.secure-random-name | レジストリーで検索できる SecureRandom の参照名を設定します。 | 文字列 | |
| camel.component.crypto.signature-header-name | base64 でエンコードされた署名を格納するために使用する必要があるメッセージヘッダーの名前を設定します。デフォルト は 'CamelDigitalSignature' です。 | 文字列 | |
| camel.dataformat.crypto.algorithm | 使用される暗号アルゴリズムを示す JCE アルゴリズム名。 | 文字列 | |
| camel.dataformat.crypto.algorithm-parameter-ref | Cipher の初期化に使用される JCE AlgorithmParameterSpec。指定された名前を java.security.spec.AlgorithmParameterSpec タイプとして使用してタイプを検索します。 | 文字列 | |
| camel.dataformat.crypto.buffer-size | 署名プロセスで使用されるバッファーのサイズ。 | 4096 | 整数 |
| 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) です。暗号化にのみ関連します。 | 整数 | |
| camel.dataformat.pgp.armored | このオプションにより、PGP は暗号化されたテキストを base64 でエンコードし、コピー/貼り付けなどに使用できるようにします。 | false | Boolean |
| camel.dataformat.pgp.compression-algorithm | 圧縮アルゴリズム;可能な値は org.bouncycastle.bcpg.CompressionAlgorithmTags で定義されています。たとえば、0 (= 非圧縮)、1 (= ZIP)、2 (= ZLIB)、3 (= BZIP2) です。暗号化にのみ関連します。 | 整数 | |
| 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) です。署名にのみ関連します。 | 整数 | |
| camel.dataformat.pgp.integrity | 整合性チェック/署名を暗号化ファイルに追加します。デフォルト値は true です。 | true | Boolean |
| camel.dataformat.pgp.key-file-name | キーリングのファイル名。クラスパスリソースとしてアクセスできる必要があります (ただし、file: 接頭辞を使用してファイルシステム内のロケーションを指定できます)。 | 文字列 | |
| camel.dataformat.pgp.key-userid | 暗号化中に使用される PGP キーリング内のキーのユーザー ID。ユーザー ID の一部のみにすることもできます。たとえば、ユーザー ID が Test User の場合、Test User または部分を使用してユーザー ID を指定できます。 | 文字列 | |
| camel.dataformat.pgp.password | 秘密鍵を開くときに使用されるパスワード (暗号化には使用されません)。 | 文字列 | |
| camel.dataformat.pgp.provider | Java Cryptography Extension (JCE) プロバイダー。デフォルトは Bouncy Castle (BC) です。あるいは、IAIK JCE プロバイダーなどを使用することもできます。この場合、プロバイダーは事前に登録する必要があり、Bouncy Castle プロバイダーは事前に登録しないでください。Sun JCE プロバイダーが機能しません。 | 文字列 | |
| camel.dataformat.pgp.signature-key-file-name | 署名 (暗号化中) または署名検証 (復号化中) に使用するキーリングのファイル名。クラスパスリソースとしてアクセスできる必要があります (ただし、file: 接頭辞を使用してファイルシステム内のロケーションを指定できます)。 | 文字列 | |
| camel.dataformat.pgp.signature-key-ring | バイト配列としての署名/検証に使用されるキーリング。signatureKeyFileName と signatureKeyRing を同時に設定することはできません。 | 文字列 | |
| camel.dataformat.pgp.signature-key-userid | 署名 (暗号化中) または署名検証 (復号化中) に使用される PGP キーリング内のキーのユーザー ID。署名検証プロセス中、指定されたユーザー ID は、検証に使用できる公開キーリングからの公開鍵を制限します。署名の検証にユーザー ID が指定されていない場合は、公開キーリング内の任意の公開鍵を検証に使用できます。ユーザー ID の一部のみにすることもできます。たとえば、ユーザー ID が Test User の場合、Test User の部分を使用したり、ユーザー ID をアドレス指定したりできます。 | 文字列 | |
| camel.dataformat.pgp.signature-password | 署名に使用する秘密鍵を開くとき (暗号化時) に使用するパスワード。 | 文字列 | |
| camel.dataformat.pgp.signature-verification-option | アンマーシャリング中に署名を検証する動作を制御します。設定可能な値は 4 つあります。オプション: PGP メッセージには署名が含まれる場合と含まれない場合があります。署名が含まれている場合は、署名の検証が実行されます。必須: PGP メッセージには少なくとも 1 つの署名が含まれている必要があります。そうでない場合は、例外 (PGPException) が出力されます。署名検証が実行されます。ignore: PGP メッセージに含まれる署名は無視されます。署名の検証は実行されません。no_signature_allowed: PGP メッセージに署名を含めることはできません。それ以外の場合は、例外 (PGPException) が出力されます。 | 文字列 |
第24章 CSimple リンクのコピーリンクがクリップボードにコピーされました!
CSimple 言語は コンパイルされた Simple 言語です。
24.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で csimple を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency> <groupId>org.apache.camel.springboot</groupId> <artifactId>camel-core-starter</artifactId> </dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-core-starter</artifactId>
</dependency>
24.2. CSimple と Simple の相違点 リンクのコピーリンクがクリップボードにコピーされました!
Simple 言語は動的な式言語であり、一連の Camel 式または述語に実行時に解析されます。
csimple 言語は、通常の Java ソースコードに解析され、他のすべてのソースコードと一緒にコンパイルされるか、camel-csimple-joor モジュールを介してブートストラップ中に 1 回コンパイルされます。
Simple 言語は通常、非常に軽量で高速ですが、OGNL パスを介した動的メソッドの呼び出しを伴う一部のユースケースでは、Sinmple 言語が実行時のイントロスペクションとリフレクションの呼び出しを行います。これにはパフォーマンスのオーバーヘッドがあり、csimple が作成された理由の 1 つです。
csimple 言語はタイプセーフである必要があり、OGNL パスを介したメソッド呼び出しでは、解析中に型を把握しておく必要があります。つまり、csimple 言語式の場合、スクリプトでクラスタイプを提供する必要ですが、simple の場合は実行時にこれをイントロスペクトします。
言い換えると、Simple 言語は ダックタイピング (アヒルのように見え、アヒルのように鳴く場合、それはアヒルである) を使用しており、csimple は Java 型 (タイプセーフ) を使用しています。型エラーがある場合には、Simple は実行時にこれを報告し、csimple では Java コンパイルエラーが発生します。
24.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}
Hello $\{body[0].name}
このスクリプトには型情報がありません。Simple 言語は、メッセージボディーをイントロスペクトし、コレクションベースの場合は最初の要素を検索し、reflection を介して getName という名前のメソッドを呼び出すことにより、実行時にこの名前を解決します。
csimple (コンパイル済み) では、これをプリコンパイルする必要があるため、エンドユーザーは bodyAsIndex 関数で型情報を提供する必要があります。
Hello $\{bodyAsIndex(com.foo.MyUser, 0).name}
Hello $\{bodyAsIndex(com.foo.MyUser, 0).name}
24.3. コンパイル リンクのコピーリンクがクリップボードにコピーされました!
csimple 言語は、通常の Java ソースコードに解析され、他のすべてのソースコードと一緒にコンパイルされるか、camel-csimple-joor モジュールを介してブートストラップ中に 1 回コンパイルすることもできます。
csimple をコンパイルするには 2 つの方法があります
-
ビルド時に
camel-csimple-maven-plugin生成ソースコードを使用します。 -
Camel のブートストラップ中にランタイムインメモリーコンパイルを行う
camel-csimple-joorを使用します。
24.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 ファイルに追加する必要があります。
そして、build-helper-maven-plugin Maven プラグインを追加して、src/generated を Java コンパイラーのソースフォルダーのリストに追加して、生成されたソースコードがコンパイルされ、アプリケーション JAR ファイルに含まれるようにする必要があります。
Maven プラグインを使用する Camel Examples の camel-example-csimple の 例を参照してください。
24.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>
<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 の例を参照してください。
24.4. CSimple 言語オプション リンクのコピーリンクがクリップボードにコピーされました!
CSimple 言語は、次に示す 2 つのオプションをサポートしています。
| 名前 | デフォルト | Java タイプ | 説明 |
|---|---|---|---|
| resultType |
| 結果の型 (出力からの型) のクラス名を設定します。 | |
| trim |
| 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 |
24.5. 制限事項 リンクのコピーリンクがクリップボードにコピーされました!
現在、csimple 言語は以下をサポート していません。
- ネストされた関数 (別名、関数内の関数)
-
null セーフな 演算子 (
?)。
たとえば、次のスクリプトはコンパイルできません。
Hello ${bean:greeter(${body}, ${header.counter})}
Hello ${bean:greeter(${body}, ${header.counter})}
${bodyAs(MyUser)?.address?.zip} > 10000
${bodyAs(MyUser)?.address?.zip} > 10000
24.6. 自動インポート リンクのコピーリンクがクリップボードにコピーされました!
csimple 言語は、以下から自動的にインポートされます。
import java.util.*; import java.util.concurrent.*; import java.util.stream.*; import org.apache.camel.*; import org.apache.camel.util.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.*;
import org.apache.camel.*;
import org.apache.camel.util.*;
24.7. 設定ファイル リンクのコピーリンクがクリップボードにコピーされました!
ルートクラスパスからロードされる camel-csimple.properties ファイルで csimple 言語を設定できます。
たとえば、camel-csimple.properties ファイルに追加のインポートを追加するには、次を追加します。
import com.foo.MyUser; import com.bar.*; import static com.foo.MyHelper.*;
import com.foo.MyUser;
import com.bar.*;
import static com.foo.MyHelper.*;
また、コード内で省略形の置換として使用されるエイリアス (key=value) を追加することもできます。
echo()=${bodyAs(String)} ${bodyAs(String)}
echo()=${bodyAs(String)} ${bodyAs(String)}
次のような csimple 言語スクリプトで echo() を使用できます。
from("direct:hello")
.transform(csimple("Hello echo()"))
.log("You said ${body}");
from("direct:hello")
.transform(csimple("Hello echo()"))
.log("You said ${body}");
echo() エイリアスはその値に置き換えられ、スクリプトは次のようになります。
.transform(csimple("Hello ${bodyAs(String)} ${bodyAs(String)}"))
.transform(csimple("Hello ${bodyAs(String)} ${bodyAs(String)}"))
24.8. 関連項目 リンクのコピーリンクがクリップボードにコピーされました!
csimple には Simple 言語と同じ関数セットがあるため、Simple 言語を参照してください。
24.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 | 追加の設定定義を定義します。 | マップ | |
| 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 で定義されます。 | マップ | |
| 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 | 追加の設定定義を定義します。 | マップ | |
| 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 で定義されます。 | マップ | |
| camel.cloud.dns.service-discovery.proto | 目的のサービスのトランスポートプロトコル。 | _tcp | String |
| camel.cloud.etcd.service-discovery.configurations | 追加の設定定義を定義します。 | マップ | |
| 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 で定義されます。 | マップ | |
| 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 | 追加の設定定義を定義します。 | マップ | |
| 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 で定義されます。 | マップ | |
| 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 | 追加の設定定義を定義します。 | マップ | |
| 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 で定義されます。 | マップ | |
| 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 | 追加の設定定義を定義します。 | マップ | |
| 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 | 追加の設定定義を定義します。 | マップ | |
| 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 が閉じられたときに呼び出しの結果を記録するために使用されるスライディングウィンドウのサイズを設定します。slideWindowSize は、スライディングウィンドウのサイズを設定します。スライディングウィンドウは、カウントベースまたは時間ベースのいずれかです。slidingWindowType が COUNT_BASED の場合、最後の slideWindowSize 呼び出しが記録され、集計されます。SlidingWindowType が TIME_BASED の場合は、最後の slideWindowSize 秒の呼び出しが記録され、集計されます。slidingWindowSize は 0 より大きくなければなりません。minimumNumberOfCalls は 0 より大きくする必要があります。SlidingWindowType が COUNT_BASED の場合、minimumNumberOfCalls を slideWindowSize より大きくすることはできません。slidingWindowType が TIME_BASED の場合は、好きなものを選択できます。デフォルトの slidingWindowType は 100 です。 | 100 | Integer |
| camel.resilience4j.sliding-window-type | CircuitBreaker が閉じられたときに呼び出しの結果を記録するために使用されるスライディングウィンドウのサイズを設定します。スライディングウィンドウは、カウントベースまたは時間ベースのいずれかです。slidingWindowType が COUNT_BASED の場合、最後の slideWindowSize 呼び出しが記録され、集計されます。SlidingWindowType が TIME_BASED の場合は、最後の slideWindowSize 秒の呼び出しが記録され、集計されます。デフォルトの 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 をクールスタッフに設定します。 | マップ | |
| 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 | 使用中の残りのコンポーネントの追加プロパティーをできるだけ多く設定できます。 | マップ | |
| camel.rest.consumer-property | 使用中の残りの consumer の追加プロパティーをできるだけ多く設定できます。 | マップ | |
| camel.rest.context-path | REST サービスが使用する主要なコンテキストパスを設定します。これは、デプロイされた Web アプリケーションがコンテキストパスを使用してデプロイされる camel-servlet などのコンポーネントを使用する場合に使用できます。または、HTTP サーバーを含む camel -jetty や camel-netty-http などのコンポーネントの場合。 | String | |
| camel.rest.cors-headers | カスタム CORS ヘッダーを設定できます。 | マップ | |
| camel.rest.data-format-property | 使用中のデータ形式の追加プロパティーをできるだけ多く設定できます。たとえば、プロパティー prettyPrint を true に設定すると、json がプリティモードで出力されます。オプションが JSON または XML のいずれか、および IN または OUT のいずれか専用であることを示すために、プロパティーに接頭辞を付けることができます。接頭辞は、json.in.、json.out.、xml.in.、xml.outです。たとえば、値が xml.out.mustBeJAXBElement のキーは、送信用の XML データ形式専用です。接頭辞のないキーは、すべての状況で共通のキーです。 | マップ | |
| camel.rest.enable-cors | HTTP 応答で CORS ヘッダーを有効にするかどうか。デフォルト値は false です。 | false | Boolean |
| camel.rest.endpoint-property | 使用中の残りのエンドポイントの追加プロパティーをできるだけ多く設定できます。 | マップ | |
| 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 |
第25章 CXF リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
CXF コンポーネントは、CXF でホストされている JAX-WS サービスに接続するための Apache CXF との統合を提供します。
ストリーミングモードで CXF を使用する場合 (DataFormat オプションを参照)、ストリームキャッシングについてもお読みください。
25.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で cxf を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency> <groupId>org.apache.camel.springboot</groupId> <artifactId>camel-cxf-soap-starter</artifactId> </dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-cxf-soap-starter</artifactId>
</dependency>
25.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
このエンドポイントには、cxfEndpoint と someAddress の 2 つの URI 形式があります。
cxf:bean:cxfEndpoint[?options]
cxf:bean:cxfEndpoint[?options]
cxfEndpoint は、Spring Bean レジストリー内の Bean を参照する Bean ID を表します。この URI 形式では、ほとんどのエンドポイントの詳細が Bean 定義で指定されます。
cxf://someAddress[?options]
cxf://someAddress[?options]
someAddress は、CXF エンドポイントのアドレスを指定します。この URI 形式では、ほとんどのエンドポイントの詳細がオプションを使用して指定されます。
上記のどちらのスタイルでも、次のように URI にオプションを追加できます。
cxf:bean:cxfEndpoint?wsdlURL=wsdl/hello_world.wsdl&dataFormat=PAYLOAD
cxf:bean:cxfEndpoint?wsdlURL=wsdl/hello_world.wsdl&dataFormat=PAYLOAD
25.3. オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel コンポーネントは 2 つのレベルで設定されます。
- コンポーネントレベル
- エンドポイントレベル
25.3.1. コンポーネントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。
通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。
コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。
25.3.2. エンドポイントレベルのオプション リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。
エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSL と DataFormat DSL を使用することもできます。
オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。
プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。
25.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 (上級) | このオプションは、CXF コンポーネントが PAYLOAD モードで実行されている場合に、着信メッセージを DOM 解析して DOM 要素にするか、場合によってはストリーミングを許可する javax.xml.transform.Source オブジェクトとしてペイロードを保持するかを制御します。 | Boolean | |
| autowiredEnabled (上級) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| headerFilterStrategy (filter) | カスタムの org.apache.camel.spi.HeaderFilterStrategy を使用して、Camel メッセージとの間でヘッダーをフィルターします。 | HeaderFilterStrategy | |
| useGlobalSslContextParameters (security) | グローバル SSL コンテキストパラメーターの使用を有効にします。 | false | boolean |
25.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
CXF エンドポイントは、URI 構文を使用して設定されます。
cxf:beanId:address
cxf:beanId:address
パスおよびクエリーパラメーターを使用します。
25.5.1. パスパラメーター (2 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| beanId (共通) | 既存の設定済み CxfEndpoint を検索するには。bean: を接頭辞として使用する必要があります。 | String | |
| 住所 (サービス) | サービス公開アドレス。 | String |
25.5.2. クエリーパラメーター (35 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| dataFormat (共通) | CXF エンドポイントでサポートされるデータタイプメッセージ。 列挙値:
| POJO | DataFormat |
| ラップスタイル (共通) | パラメーターが 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 (上級)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (上級)) | 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 (上級)) | 同期処理を厳密に使用するかどうかを設定します。 | false | boolean |
| allowStreaming (上級) | このオプションは、CXF コンポーネントが PAYLOAD モードで実行されている場合に、着信メッセージを DOM 解析して DOM 要素にするか、場合によってはストリーミングを許可する javax.xml.transform.Source オブジェクトとしてペイロードを保持するかを制御します。 | Boolean | |
| bus (上級) | カスタム設定の CXF バスを使用するには。 | バス | |
| continuationTimeout (advanced) | このオプションは、CXF サーバーが Jetty またはサーブレットトランスポートを使用している場合にデフォルトで CxfConsumer で使用できる CXF 継続タイムアウトを設定するために使用されます。 | 30000 | long |
| cxfBinding (上級) | カスタム CxfBinding を使用して、Camel メッセージと CXF メッセージ間のバインディングを制御します。 | CxfBinding | |
| cxfConfigurer (上級) | このオプションは、プログラムによる方法での CXF エンドポイントの設定をサポートする org.apache.camel.component.cxf.CxfEndpointConfigurer の実装を適用できます。ユーザーは、CxfEndpointConfigurer の configure{ServerClient} メソッドを実装することで、CXF サーバーとクライアントを設定できます。 | CxfConfigurer | |
| defaultBus (上級) | CXF エンドポイントが独自にバスを作成するときに、デフォルトのバスを設定します。 | false | boolean |
| headerFilterStrategy (advanced) | カスタムの HeaderFilterStrategy を使用して、Camel メッセージとの間でヘッダーをフィルタリングします。 | HeaderFilterStrategy | |
| mergeProtocolHeaders (上級) | プロトコルヘッダーをマージするかどうか。有効にすると、Camel と CXF の間でヘッダーを伝播する際の一貫性と類似性が高まります。詳細については、CAMEL-6393 を参照してください。 | false | boolean |
| mtomEnabled (上級) | MTOM (添付ファイル) を有効にします。これには、POJO または PAYLOAD データ形式モードを使用する必要があります。 | false | boolean |
| properties (上級) | マップのキーと値のペアを使用して、追加の CXF オプションを設定します。たとえば、SOAP 障害でスタックトレースを有効にするには、properties.faultStackTraceEnabled=true とします。 | マップ | |
| skipPayloadMessagePartCheck (上級) | SOAP メッセージの検証を無効にするかどうかを設定します。 | false | boolean |
| loggingFeatureEnabled (logging) | このオプションは、インバウンドおよびアウトバウンドの SOAP メッセージをログに書き込む CXF ログ機能を有効にします。 | false | boolean |
| loggingSizeLimit (logging) | ロギング機能が有効になっているときにロガーが出力するバイト数の合計サイズを制限するには、制限なしの場合は -1 を指定します。 | 49152 | int |
| skipFaultLogging (ロギング) | このオプションは、PhaseInterceptorChain がキャッチした Fault のログ記録をスキップするかどうかを制御します。 | false | boolean |
| password (セキュリティー) | このオプションは、CXF クライアントのパスワードの基本認証情報を設定するために使用されます。 | String | |
| username (セキュリティー) | このオプションは、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) クラスのクラス名。 | クラス | |
| サービス名 (サービス) | このサービスが実装しているサービス名で、wsdl:servicename にマップされます。 | String | |
| wsdlURL (サービス) | WSDL のロケーション。クラスパス、ファイルシステム、またはリモートでホストできます。 | String |
serviceName と portName は QNames であるため、これらを指定する場合は、上記の例に示すように {namespace} を前に付けてください。
25.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 で定義されています。
25.5.4. CXF の LoggingOutInterceptor を RAW モードで有効にする方法 リンクのコピーリンクがクリップボードにコピーされました!
CXF の LoggingOutInterceptor は、ロギングシステム (Java Util Logging) に送信されるアウトバウンドメッセージを出力します。LoggingOutInterceptor は PRE_STREAM フェーズにあるため (ただし、PRE_STREAM フェーズは RAW モードでは削除されます)、WRITE フェーズ中に実行されるように LoggingOutInterceptor を設定する必要があります。以下に例を示します。
25.5.5. RelayHeaders オプションの説明 リンクのコピーリンクがクリップボードにコピーされました!
JAXWS WSDL ファーストの開発者の観点から見ると、帯域内 ヘッダーと 帯域外 ヘッダーがあります。
インバンド ヘッダーは、SOAP ヘッダーなどのエンドポイントの WSDL バインディングコントラクトの一部として明示的に定義されるヘッダーです。
アウトオブバンド ヘッダーは、ネットワーク経由でシリアル化されるヘッダーですが、明示的に WSDL バインディングコントラクトの一部ではありません。
ヘッダーの中継/フィルタリングは双方向です。
ルートに CXF エンドポイントがあり、開発者が SOAP ヘッダーなどのオンザワイヤヘッダーをルートに沿ってリレーして、たとえば別の JAXWS エンドポイントで消費する必要がある場合、relayHeaders を true に設定する必要があります。デフォルト値。
25.5.6. POJO モードでのみ使用可能 リンクのコピーリンクがクリップボードにコピーされました!
relayHeaders=true は、ヘッダーをリレーする意図を表します。特定のヘッダーが中継されるかどうかの実際の決定は、MessageHeadersRelay インターフェイスを実装するプラグ可能なインスタンスに委譲されます。MessageHeadersRelay の具体的な実装を調べて、ヘッダーを中継する必要があるかどうかを判断します。既知の SOAP 名前空間にバインドする SoapMessageHeadersRelay の実装がすでにあります。現在、帯域外ヘッダーのみがフィルタリングされ、relayHeaders=true の場合、帯域内ヘッダーは常に中継されます。ネームスペースがランタイムに不明なヘッダーがワイヤ上にある場合、フォールバック DefaultMessageHeadersRelay が使用されます。これにより、すべてのヘッダーの中継が単純に許可されます。
RelayHeaders=false 設定は、帯域内および帯域外のすべてのヘッダーをドロップする必要があることを指定します。
独自の MessageHeadersRelay 実装をプラグインして、リレーのリストをオーバーライドまたは追加することができます。プリロードされたリレーインスタンスをオーバーライドするには、MessageHeadersRelay 実装がオーバーライドしようとしている名前空間と同じ名前空間を提供していることを確認してください。また、オーバーライドするリレーは、オーバーライドしようとしているすべての名前空間にサービスを提供する必要があることに注意してください。そうしないと、インスタンスマッピングをリレーする名前空間にあいまいさが生じるため、ルートの起動時に実行時例外が出力されます。
ここでヘッダーをリレー/ドロップする方法を示すテストを見てください。
-
POJOおよびPAYLOADモードがサポートされています。POJOモードでは、CXF によってインバンドヘッダーが処理され、ヘッダーリストから削除されているため、フィルタリングに使用できるのはアウトオブバンドメッセージヘッダーのみです。インバンドヘッダーは、POJO モードでMessageContentListに組み込まれます。camel-cxfコンポーネントは、インバンドヘッダーをMessageContentListから削除しようとします。インバンドヘッダーのフィルタリングが必要な場合は、PAYLOADモードを使用するか、(非常に簡単な) CXF インターセプター/JAXWS ハンドラーを CXF エンドポイントにプラグインしてください。 -
メッセージヘッダーリレーメカニズムは
CxfHeaderFilterStrategyにマージされました。relayHeadersオプション、そのセマンティクス、およびデフォルト値は同じままですが、CxfHeaderFilterStrategyのプロパティーです。以下はその設定例です。
その後、エンドポイントは CxfHeaderFilterStrategy を参照できます。
次に、ルートを次のように設定します。
rom("cxf:bean:routerNoRelayEndpoint")
.to("cxf:bean:serviceNoRelayEndpoint");
rom("cxf:bean:routerNoRelayEndpoint")
.to("cxf:bean:serviceNoRelayEndpoint");
-
MessageHeadersRelayインターフェイスがわずかに変更され、名前がMessageHeaderFilterに変更されました。CxfHeaderFilterStrategyのプロパティーです。ユーザー定義のメッセージヘッダーフィルターを設定する例を次に示します。
-
relayHeadersに加えて、次のプロパティーをCxfHeaderFilterStrategyで設定できます。
| 名前 | 必須 | 説明 |
|---|---|---|
|
| いいえ |
すべてのメッセージヘッダーは、メッセージヘッダーフィルターによって処理されます タイプ: |
|
| いいえ |
すべてのメッセージヘッダーが伝達されます (メッセージヘッダーフィルターによる処理なし) タイプ: |
|
| いいえ |
アクティベーション名前空間で 2 つのフィルターが重複する場合、プロパティーはその処理方法を制御します。値が |
25.6. Spring で CXF エンドポイントを設定する リンクのコピーリンクがクリップボードにコピーされました!
以下に示す Spring 設定ファイルを使用して CXF エンドポイントを設定できます。また、エンドポイントを camelContext タグに埋め込むこともできます。サービスエンドポイントを呼び出すときに、operationName ヘッダーと operationNamespace ヘッダーを設定して、呼び出す操作を明示的に指定できます。
ルート 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 プロパティーを設定できます。
SpringBoot では、Spring XML ファイルを使用して camel-cxf を設定し、次の例のようなコードを使用して XML 設定 Bean を作成できます。
@ImportResource({
"classpath:spring-configuration.xml"
})
@ImportResource({
"classpath:spring-configuration.xml"
})
ただし、SpringBoot では、(他の例で示されているように) Java コードで設定された Bean を使用するのがベストプラクティスです。
25.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 行に含まれている必要があります。
25.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 [...]
Error:sendSms: SoapFault exception: [Client] looks like we got no XML document in [...]
この問題を解決するには、以下の WriteXmlDeclarationInterceptor のように、StaxOutInterceptor に XML 開始ドキュメントを書き込むように指示します。
別の方法として、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);
// 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);
25.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()));
// 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()));
25.10. POJO データ形式の camel-cxf エンドポイントからのメッセージを使用する方法 リンクのコピーリンクがクリップボードにコピーされました!
camel-cxf エンドポイントconsumer POJO データ形式は CXF インボーカー に基づいているため、メッセージヘッダーには CxfConstants.OPERATION_NAME という名前のプロパティーがあり、メッセージ本文は SEI メソッドパラメーターのリストです。
PersonProcessor のサンプルコードを考えてみましょう。
25.11. POJO データ形式で camel-cxf エンドポイントのメッセージを準備する方法 リンクのコピーリンクがクリップボードにコピーされました!
camel-cxf エンドポイント producer は、CXF client API に基づいています。まず、メッセージヘッダーでオペレーション名を指定し、次にメソッドパラメーターをリストに追加し、このパラメーターリストでメッセージを初期化する必要があります。応答メッセージの本文は messageContentsList であり、そのリストから結果を取得できます。
メッセージヘッダーで操作名を指定しない場合、CxfProducer は CxfEndpoint から defaultOperationName を使用しようとします。CxfEndpoint に defaultOperationName が設定されていない場合、操作リストから最初の operationName を取得します。
メッセージ本文からオブジェクト配列を取得する場合は、CxfProducerRouterTest.testInvokingSimpleServerWithParams に示すように、message.getBody (Object.class) を使用して本文を取得できます。
25.12. PAYLOAD データ形式の camel-cxf エンドポイントのメッセージを処理する方法 リンクのコピーリンクがクリップボードにコピーされました!
PAYLOAD は、SOAP エンベロープからのペイロードをネイティブ CxfPayload として処理することを意味します。Message.getBody () は org.apache.camel.component.cxf.CxfPayload オブジェクトを、SOAP メッセージヘッダーと SOAP 本文のゲッターと共に返します。
CxfConsumerPayloadTest を参照してください:
25.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());
from("cxf:bean:routerRelayEndpointWithInsertion")
.process(new InsertRequestOutHeaderProcessor())
.to("cxf:bean:serviceRelayEndpointWithInsertion")
.process(new InsertResponseOutHeaderProcessor());
Bean routerRelayEndpointWithInsertion および serviceRelayEndpointWithInsertion は次のように定義されます。
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 にあります。
25.14. PAYLOAD モードで SOAP ヘッダーを取得および設定する方法 リンクのコピーリンクがクリップボードにコピーされました!
PAYLOAD モードで CxfPayload オブジェクトとして SOAP メッセージにアクセスする方法については、PAYLOAD データ形式で camel-cxf エンドポイントのメッセージを処理する方法 セクションですでに説明しました。
CxfPayload オブジェクトを取得したら、DOM 要素 (SOAP ヘッダー) のリストを返す CxfPayload.getHeaders () メソッドを呼び出すことができます。
例については、CxfPayLoadSoapHeaderTest を参照してください。
サブチャプター 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" でそれらを削除する必要があります。
25.15. SOAP ヘッダーは RAW モードでは使用できません リンクのコピーリンクがクリップボードにコピーされました!
SOAP 処理がスキップされるため、SOAP ヘッダーは RAW モードでは使用できません。
25.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);
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));
from(routerEndpointURI).setFaultBody(constant(SOAP_FAULT));
CXF エンドポイントが MESSAGE データ形式で動作している場合、CxfMessageStreamExceptionTest で示されているように、メッセージ本文に SOAP Fault メッセージを設定し、メッセージヘッダーに応答コードを設定できます。
POJO データ形式を使用する場合も同様です。out body に SOAPFault を設定できます。
25.17. camel-cxf エンドポイントのリクエストとレスポンスのコンテキストを伝播する方法 リンクのコピーリンクがクリップボードにコピーされました!
CXF クライアント API は、要求と応答のコンテキストで操作を呼び出す方法を提供します。camel-cxf エンドポイント producer を使用して外部 Web サービスを呼び出す場合は、次のコードを使用して、要求コンテキストを設定し、応答コンテキストを取得できます。
25.18. アタッチメントサポート リンクのコピーリンクがクリップボードにコピーされました!
POJO モード: SOAP with Attachment と MTOM の両方がサポートされています (MTOM を有効にするためのペイロードモードの例を参照してください)。ただし、SOAP with Attachment はテストされていません。添付ファイルは POJO にマーシャリングおよびアンマーシャリングされるため、通常、ユーザーは添付ファイル自体を処理する必要はありません。MTOM が有効になっていない場合、添付ファイルは Camel メッセージの添付ファイルに伝達されます。そのため、Camel Message API で添付ファイルを取得することができます。
DataHandler Message.getAttachment(String id)
DataHandler Message.getAttachment(String id)
ペイロードモード: MTOM はコンポーネントによってサポートされます。添付ファイルは、上記の Camel Message API によって取得できます。SOAP with Attachment (SwA) がサポートされており、添付ファイルを取得できます。SwA がデフォルトです (CXF エンドポイントプロパティー mtom-enabled を false に設定するのと同じです)。
MTOM を有効にするには、CXF エンドポイントプロパティー "mtom-enabled" を true に設定します。
ペイロードモードで CXF エンドポイントに送信する添付ファイル付きの Camel メッセージを生成できます。
ペイロードモードで CXF エンドポイントから受信した Camel メッセージを使用することもできます。CxfMtomConsumerPayloadModeTest は、これがどのように機能するかを示しています。
Raw モード: メッセージをまったく処理しないため、添付ファイルはサポートされていません。
CXF_RAW モード: MTOM がサポートされ、添付ファイルは上記の Camel Message API によって取得できます。マルチパート (つまり MTOM) メッセージを受信する場合、デフォルトの SOAPMessage から String へのコンバーターは、本文で完全なマルチパートペイロードを提供することに注意してください。文字列として SOAP XML だけが必要な場合は、message.getSOAPPart () でメッセージ本文を設定でき、Camel convert が残りの作業を実行できます。
25.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 に追加してオフにすることができます。これによりグローバルなデフォルトが設定されますが、上記のエンドポイントプロパティーを設定すると、そのエンドポイントのこの値がオーバーライドされます。
25.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: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 ヘッダーで提供されます。
25.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 |
第26章 データ形式 リンクのコピーリンクがクリップボードにコピーされました!
producer のみサポート対象
Dataformat コンポーネントを使用すると、Data Format を Camel コンポーネントとして使用できます。
26.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で dataformat を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency> <groupId>org.apache.camel.springboot</groupId> <artifactId>camel-dataformat-starter</artifactId> </dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-dataformat-starter</artifactId>
</dependency>
26.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
dataformat:name:(marshal|unmarshal)[?options]
dataformat:name:(marshal|unmarshal)[?options]
name はデータ形式の名前です。次に、marshal または unmarshal のいずれかでなければならない操作が続きます。オプションは、使用中の データ形式 を設定するために使用されます。どのオプションがサポートされているかについては、データ形式のドキュメントを参照してください。
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. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
データ形式コンポーネントは、以下に示す 2 つのオプションをサポートしています。
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| autowiredEnabled (上級) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
26.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Data Format エンドポイントは、URI 構文を使用して設定されます。
dataformat:name:operation
dataformat:name:operation
パスおよびクエリーパラメーターを使用します。
26.5.1. パスパラメーター (2 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| name (producer) | 必須 データ形式の名前。 | String | |
| operation (producer) | マーシャリングまたはアンマーシャリングのいずれかを使用するために 必要な 操作。 列挙値:
| String |
26.5.2. クエリーパラメーター (1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
26.6. サンプル リンクのコピーリンクがクリップボードにコピーされました!
たとえば、JAXB データ形式 を使用するには、次のようにします。
from("activemq:My.Queue").
to("dataformat:jaxb:unmarshal?contextPath=com.acme.model").
to("mqseries:Another.Queue");
from("activemq:My.Queue").
to("dataformat:jaxb:unmarshal?contextPath=com.acme.model").
to("mqseries:Another.Queue");
XML DSL では、次のようにします。
26.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 |
第27章 Dataset リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
分散処理と非同期処理のテストは、非常に難しいことで知られています。Mock、Test、および DataSet エンドポイントは Camel テストフレームワークとうまく連携し、エンタープライズ統合パターン と Camel の幅広いコンポーネントを強力な Bean 統合と共に使用して、ユニットと統合のテストを簡素化します。
DataSet コンポーネントは、システムの負荷テストとソークテストを簡単に実行するメカニズムを提供します。メッセージのソースとして、またデータセットが受信されたことをアサートする方法として、DataSet インスタンス を作成できるようにすることで機能します。
Camel は、データセットを送信するときに スループットロガー を使用します。
27.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で dataset を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency> <groupId>org.apache.camel.springboot</groupId> <artifactId>camel-dataset-starter</artifactId> </dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-dataset-starter</artifactId>
</dependency>
27.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
dataset:name[?options]
dataset:name[?options]
name は、レジストリーで DataSet インスタンス を検索するために使用されます
Camel には、独自の DataSet を実装するためのベースとして使用できる org.apache.camel.component.dataset.DataSet、org.apache.camel.component.dataset.DataSetSupport クラスのサポート実装が付属しています。org.apache.camel.component.dataset.SimpleDataSet には、テスト に使用できるいくつかの実装も同 梱 されています。そのうち DataSetSupport を拡張します。
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. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
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 (上級) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| exchangeFormatter (上級) | Autowired カスタム ExchangeFormatter を設定して、Exchange をログに適した文字列に変換します。指定しない場合は、デフォルトで DefaultExchangeFormatter になります。 | ExchangeFormatter |
27.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Dataset エンドポイントは、URI 構文を使用して設定されます。
dataset:name
dataset:name
パスおよびクエリーパラメーターを使用します。
27.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| name (共通) | レジストリーで検索する DataSet の 必須 の名前。 | DataSet |
27.5.2. クエリーパラメーター (21 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| dataSetIndex (共通) | 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 (上級)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (上級)) | 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 (上級)) | このモックエンドポイントで受信したときに受信 Exchange のディープコピーを作成するかどうかを設定します。デフォルトでは true です。 | true | boolean |
27.6. DataSet の設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel は、DataSet インターフェイスを実装する Bean をレジストリーで検索します。したがって、独自の DataSet を次のように登録できます。
<bean id="myDataSet" class="com.mycompany.MyDataSet"> <property name="size" value="100"/> </bean>
<bean id="myDataSet" class="com.mycompany.MyDataSet">
<property name="size" value="100"/>
</bean>
27.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");
// 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 実装を作成し、データセットの大きさやメッセージの外観などを設定します。
27.8. DataSetSupport (抽象クラス) リンクのコピーリンクがクリップボードにコピーされました!
DataSetSupport 抽象クラスは、新しい DataSet の出発点として最適であり、派生クラスにいくつかの便利な機能を提供します。
27.8.1. DataSetSupport のプロパティー リンクのコピーリンクがクリップボードにコピーされました!
| プロパティー | タイプ | デフォルト | 説明 |
|---|---|---|---|
|
|
|
|
デフォルトのメッセージ本文を指定します。SimpleDataSet の場合、これは一定のペイロードです。ただし、メッセージごとにカスタムペイロードを作成する場合は、 |
|
|
| null | |
|
|
|
| 送信/消費するメッセージの数を指定します。 |
|
|
|
|
進行状況を報告する前に受信するメッセージの数を指定します。大規模な負荷テストの進行状況を表示するのに役立ちます。< 0 の場合は |
27.9. SimpleDataSet リンクのコピーリンクがクリップボードにコピーされました!
SimpleDataSet は DataSetSupport を拡張し、デフォルトの本文を追加します。
27.9.1. SimpleDataSet の追加プロパティー リンクのコピーリンクがクリップボードにコピーされました!
| プロパティー | タイプ | デフォルト | 説明 |
|---|---|---|---|
|
|
|
|
デフォルトのメッセージ本文を指定します。デフォルトでは、 |
27.10. ListDataSet リンクのコピーリンクがクリップボードにコピーされました!
List`DataSet` は DataSetSupport を拡張し、デフォルトボディのリストを追加します。
27.10.1. ListDataSet の追加プロパティー リンクのコピーリンクがクリップボードにコピーされました!
| プロパティー | タイプ | デフォルト | 説明 |
|---|---|---|---|
|
|
|
|
デフォルトのメッセージ本文を指定します。デフォルトでは、 |
|
|
| defaultBodies リストのサイズ |
送信/消費するメッセージの数を指定します。この値は、 |
27.11. FileDataSet リンクのコピーリンクがクリップボードにコピーされました!
FileDataSet は ListDataSet を拡張し、ファイルから本文をロードするためのサポートを追加します。
27.11.1. FileDataSet の追加プロパティー リンクのコピーリンクがクリップボードにコピーされました!
| プロパティー | タイプ | デフォルト | 説明 |
|---|---|---|---|
|
|
| null | ペイロードのソースファイルを指定します |
|
|
| \z |
ファイルを複数のペイロードに分割するために |
27.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 |
第28章 Direct リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
Direct コンポーネント producer がメッセージエクスチェンジを送信する際に、コンポーネントは consumer を直接、同期呼び出しを提供します。
このエンドポイントは、同じ Camel コンテキストの既存ルートを接続するために使用できます。
Asynchronous
SEDA コンポーネントは、プロデューサーがメッセージエクスチェンジを送信するときに、任意のコンシューマーの非同期呼び出しを提供します。
28.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で direct を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency> <groupId>org.apache.camel.springboot</groupId> <artifactId>camel-direct-starter</artifactId> </dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-direct-starter</artifactId>
</dependency>
28.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
direct:someName[?options]
direct:someName[?options]
someName は、エンドポイントを一意に識別する任意の文字列にすることができます。
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. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
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 (上級) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
28.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Direct エンドポイントは、URI 構文を使用して設定されます。
direct:name
direct:name
パスおよびクエリーパラメーターを使用します。
28.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| name (共通) | 必須 direct エンドポイントの名前 | String |
28.5.2. クエリーパラメーター (8 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| bridgeErrorHandler (consumer) | consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | false | boolean |
| exceptionHandler (consumer (上級)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (上級)) | 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 (上級) | 同期処理を強制するかどうか。有効にすると、producer スレッドは、同じスレッドが処理を続行する前に、メッセージが完了するまで強制的に待機します。無効 (デフォルト) にすると、producer スレッドは解放され、他のスレッドが引き続きメッセージを処理する間、別の作業を行うことができます (リアクティブ)。 | false | boolean |
28.6. サンプル リンクのコピーリンクがクリップボードにコピーされました!
以下のルートでは、direct コンポーネントを使用して 2 つのルートをリンクします。
Spring DSL を使用した例:
SEDA コンポーネントの例も参照し、どのように併用できるか確認してください。
28.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 |
第29章 Elasticsearch リンクのコピーリンクがクリップボードにコピーされました!
Since Camel 3.18.3
producer のみサポート対象
ElasticSearch コンポーネントを使用すると、Java API クライアントライブラリーを使用して ElasticSearch 8.x API とやり取りできます。
29.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で elasticsearch を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency> <groupId>org.apache.camel.springboot</groupId> <artifactId>camel-elasticsearch-starter</artifactId> </dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-elasticsearch-starter</artifactId>
</dependency>
29.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
elasticsearch://clusterName[?options]
elasticsearch://clusterName[?options]
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. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
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 (上級) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| client (上級) | Autowired エンドポイントごとにクライアントを作成する代わりに、既存の設定済み Elasticsearch クライアントを使用するには。これにより、特定の設定でクライアントをカスタマイズできます。 | RestClient | |
| enableSniffer (上級) | 実行中の Elasticsearch クラスターからのノードの自動検出を有効にする。このオプションを Spring Boot と組み合わせて使用する場合、Spring Boot 設定によって管理されます (Spring Boot でスニファーを無効にするを参照)。 | false | boolean |
| sniffAfterFailureDelay (上級) | 失敗後にスケジュールされたスニファ実行の遅延 (ミリ秒単位)。 | 60000 | int |
| snifferInterval (上級) | 通常のスニファを連続して実行する間隔 (ミリ秒単位)。sniffOnFailure が無効になっている場合、または連続するスニファ実行の間に失敗がない場合に受け入れられます。 | 300000 | int |
| certificatePath (セキュリティー) | Elasticsearch へのアクセスに使用する自己署名証明書のパス。 | String | |
| enableSSL (セキュリティー) | SSL の有効化。 | false | boolean |
| password (セキュリティー) | 認証用パスワード。 | String | |
| ユーザー (セキュリティー) | 基本認証ユーザー。 | String |
29.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
Elasticsearch エンドポイントは、URI 構文を使用して設定されます。
elasticsearch:clusterName
elasticsearch:clusterName
パスおよびクエリーパラメーターを使用します。
29.5.1. パスパラメーター(1 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| clusterName (producer) | 必須 クラスターの名前。 | String |
29.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 (上級)) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| documentClass (上級) | ドキュメントを逆シリアル化するときに使用するクラス。 | ObjectNode | クラス |
| enableSniffer (上級) | 実行中の Elasticsearch クラスターからのノードの自動検出を有効にする。このオプションを Spring Boot と組み合わせて使用する場合、Spring Boot 設定によって管理されます (Spring Boot でスニファーを無効にするを参照)。 | false | boolean |
| sniffAfterFailureDelay (上級) | 失敗後にスケジュールされたスニファ実行の遅延 (ミリ秒単位)。 | 60000 | int |
| snifferInterval (上級) | 通常のスニファを連続して実行する間隔 (ミリ秒単位)。sniffOnFailure が無効になっている場合、または連続するスニファ実行の間に失敗がない場合に受け入れられます。 | 300000 | int |
| certificatePath (セキュリティー) | Elasticsearch へのアクセスに使用する自己署名証明書のパス。 | String | |
| enableSSL (セキュリティー) | SSL の有効化。 | false | boolean |
29.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 |
29.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 を返します。 |
29.8. コンポーネントを設定して基本認証を有効にする リンクのコピーリンクがクリップボードにコピーされました!
Elasticsearch コンポーネントを使用するには、最小構成で設定する必要があります。
ElasticsearchComponent elasticsearchComponent = new ElasticsearchComponent();
elasticsearchComponent.setHostAddresses("myelkhost:9200");
camelContext.addComponent("elasticsearch", elasticsearchComponent);
ElasticsearchComponent elasticsearchComponent = new ElasticsearchComponent();
elasticsearchComponent.setHostAddresses("myelkhost:9200");
camelContext.addComponent("elasticsearch", elasticsearchComponent);
Elasticsearch を使用した基本認証、または Elasticsearch クラスターの前でリバース HTTP プロキシーを使用する場合は、以下の例のようにコンポーネントで基本認証と SSL をセットアップするだけです。
29.9. インデックスの例 リンクのコピーリンクがクリップボードにコピーされました!
以下は単純な INDEX の例です
from("direct:index")
.to("elasticsearch://elasticsearch?operation=Index&indexName=twitter");
from("direct:index")
.to("elasticsearch://elasticsearch?operation=Index&indexName=twitter");
<route>
<from uri="direct:index"/>
<to uri="elasticsearch://elasticsearch?operation=Index&indexName=twitter"/>
</route>
<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);
Map<String, String> map = new HashMap<String, String>();
map.put("content", "test");
String indexId = template.requestBody("direct:index", map, String.class);
29.10. 検索例 リンクのコピーリンクがクリップボードにコピーされました!
特定のフィールドと値を検索するには、検索操作を使用します。クエリーの JSON 文字列またはマップを渡します
from("direct:search")
.to("elasticsearch://elasticsearch?operation=Search&indexName=twitter");
from("direct:search")
.to("elasticsearch://elasticsearch?operation=Search&indexName=twitter");
<route>
<from uri="direct:search"/>
<to uri="elasticsearch://elasticsearch?operation=Search&indexName=twitter"/>
</route>
<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);
String query = "{\"query\":{\"match\":{\"doc.content\":\"new release of ApacheCamel\"}}}";
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");
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>
<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
}
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
}
以下も使用できます。
29.11. マルチサーチの例 リンクのコピーリンクがクリップボードにコピーされました!
特定のフィールドと値に対する MultiSearching は、Operation 'MultiSearch' を使用します。MultiSearchRequest インスタンスを渡す
from("direct:multiSearch")
.to("elasticsearch://elasticsearch?operation=MultiSearch");
from("direct:multiSearch")
.to("elasticsearch://elasticsearch?operation=MultiSearch");
<route>
<from uri="direct:multiSearch"/>
<to uri="elasticsearch://elasticsearch?operation=MultiSearch"/>
</route>
<route>
<from uri="direct:multiSearch"/>
<to uri="elasticsearch://elasticsearch?operation=MultiSearch"/>
</route>
特定のフィールドでの MultiSearch
29.12. ドキュメントタイプ リンクのコピーリンクがクリップボードにコピーされました!
すべての検索操作で、取得するドキュメントのタイプを指定して、予想されるタイプで非整列化された結果を取得することができます。
ドキュメントタイプは、ヘッダー documentClass を使用するか、同じ名前の uri パラメーターを介して設定できます。
29.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>
<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 を使用する必要があるためです。
29.13.1. Spring Boot が提供する RestClient を使用する リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Spring Boot は camel によって使用される Elasticsearch RestClient を自動設定します。次の基本プロパティーを使用してクライアントをカスタマイズできます。
spring.elasticsearch.uris=myelkhost:9200 spring.elasticsearch.username=elkuser spring.elasticsearch.password=secure!!
spring.elasticsearch.uris=myelkhost:9200
spring.elasticsearch.username=elkuser
spring.elasticsearch.password=secure!!
詳細は、application-properties.data.spring.elasticsearch.connection-timeout を参照してください。
29.13.2. Spring Boot 使用時に Sniffer を無効にする リンクのコピーリンクがクリップボードにコピーされました!
Spring Boot が classpath 上にある場合、Elasticsearch の Sniffer クライアントはデフォルトで有効になっています。このオプションは、Spring Boot 設定で無効にすることができます。
spring:
autoconfigure:
exclude: org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration
spring:
autoconfigure:
exclude: org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration
29.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 | 基本認証ユーザー。 | 文字列 |
第30章 ExchangeProperty リンクのコピーリンクがクリップボードにコピーされました!
ExchangeProperty 式言語を使用すると、名前付きエクスチェンジプロパティーの値を抽出できます。
30.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>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-core-starter</artifactId>
</dependency>
30.2. Exchange Property のオプション リンクのコピーリンクがクリップボードにコピーされました!
ExchangeProperty 言語は、以下にリストされている 1 つのオプションをサポートしています。
| 名前 | デフォルト | Java タイプ | 説明 |
|---|---|---|---|
| trim |
| 値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。 |
30.3. 例 リンクのコピーリンクがクリップボードにコピーされました!
recipientList EIP は、次のような exchangeProperty を利用できます。
この場合、受信者のリストはプロパティ (myProperty) に含まれています。
Java DSL での同じ例:
from("direct:a").recipientList(exchangeProperty("myProperty"));
from("direct:a").recipientList(exchangeProperty("myProperty"));
30.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 | 追加の設定定義を定義します。 | マップ | |
| 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 で定義されます。 | マップ | |
| 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 | 追加の設定定義を定義します。 | マップ | |
| 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 で定義されます。 | マップ | |
| camel.cloud.dns.service-discovery.proto | 目的のサービスのトランスポートプロトコル。 | _tcp | String |
| camel.cloud.etcd.service-discovery.configurations | 追加の設定定義を定義します。 | マップ | |
| 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 で定義されます。 | マップ | |
| 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 | 追加の設定定義を定義します。 | マップ | |
| 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 で定義されます。 | マップ | |
| 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 | 追加の設定定義を定義します。 | マップ | |
| 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 で定義されます。 | マップ | |
| 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 | 追加の設定定義を定義します。 | マップ | |
| 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 | 追加の設定定義を定義します。 | マップ | |
| 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 が閉じられたときに呼び出しの結果を記録するために使用されるスライディングウィンドウのサイズを設定します。slideWindowSize は、スライディングウィンドウのサイズを設定します。スライディングウィンドウは、カウントベースまたは時間ベースのいずれかです。slidingWindowType が COUNT_BASED の場合、最後の slideWindowSize 呼び出しが記録され、集計されます。SlidingWindowType が TIME_BASED の場合は、最後の slideWindowSize 秒の呼び出しが記録され、集計されます。slidingWindowSize は 0 より大きくなければなりません。minimumNumberOfCalls は 0 より大きくする必要があります。SlidingWindowType が COUNT_BASED の場合、minimumNumberOfCalls を slideWindowSize より大きくすることはできません。slidingWindowType が TIME_BASED の場合は、好きなものを選択できます。デフォルトの slidingWindowType は 100 です。 | 100 | Integer |
| camel.resilience4j.sliding-window-type | CircuitBreaker が閉じられたときに呼び出しの結果を記録するために使用されるスライディングウィンドウのサイズを設定します。スライディングウィンドウは、カウントベースまたは時間ベースのいずれかです。slidingWindowType が COUNT_BASED の場合、最後の slideWindowSize 呼び出しが記録され、集計されます。SlidingWindowType が TIME_BASED の場合は、最後の slideWindowSize 秒の呼び出しが記録され、集計されます。デフォルトの 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 をクールスタッフに設定します。 | マップ | |
| 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 | 使用中の残りのコンポーネントの追加プロパティーをできるだけ多く設定できます。 | マップ | |
| camel.rest.consumer-property | 使用中の残りの consumer の追加プロパティーをできるだけ多く設定できます。 | マップ | |
| camel.rest.context-path | REST サービスが使用する主要なコンテキストパスを設定します。これは、デプロイされた Web アプリケーションがコンテキストパスを使用してデプロイされる camel-servlet などのコンポーネントを使用する場合に使用できます。または、HTTP サーバーを含む camel -jetty や camel-netty-http などのコンポーネントの場合。 | String | |
| camel.rest.cors-headers | カスタム CORS ヘッダーを設定できます。 | マップ | |
| camel.rest.data-format-property | 使用中のデータ形式の追加プロパティーをできるだけ多く設定できます。たとえば、プロパティー prettyPrint を true に設定すると、json がプリティモードで出力されます。オプションが JSON または XML のいずれか、および IN または OUT のいずれか専用であることを示すために、プロパティーに接頭辞を付けることができます。接頭辞は、json.in.、json.out.、xml.in.、xml.outです。たとえば、値が xml.out.mustBeJAXBElement のキーは、送信用の XML データ形式専用です。接頭辞のないキーは、すべての状況で共通のキーです。 | マップ | |
| camel.rest.enable-cors | HTTP 応答で CORS ヘッダーを有効にするかどうか。デフォルト値は false です。 | false | Boolean |
| camel.rest.endpoint-property | 使用中の残りのエンドポイントの追加プロパティーをできるだけ多く設定できます。 | マップ | |
| 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 |
第31章 FHIR リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
FHIR コンポーネントは、Java での FHIR (Fast Healthcare Interoperability Resources) 仕様のオープンソース実装である HAPI-FHIR ライブラリーと統合されます。
31.1. 依存関係 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Camel Spring Boot で fhir を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。
<dependency> <groupId>org.apache.camel.springboot</groupId> <artifactId>camel-fhir-starter</artifactId> </dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-fhir-starter</artifactId>
</dependency>
31.2. URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
FHIR コンポーネントは、次の URI 形式を使用します。
fhir://endpoint-prefix/endpoint?[options]
fhir://endpoint-prefix/endpoint?[options]
エンドポイント 接頭辞は次のいずれかです。
- capabilities
- create
- delete
- history
- load-page
- meta
- operation
- patch
- read
- search
- transaction
- update
- validate
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. コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
コンポーネントは、以下に記載される 27 のオプションをサポートします。
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| encoding (共通) | すべてのリクエストに使用するエンコーディング。 列挙値:
| String | |
| fhirVersion (共通) | 使用する FHIR バージョン。 列挙値:
| R4 | String |
| log (共通) | リクエストとレスポンスをすべてログに記録します。 | false | boolean |
| prettyPrint (共通) | すべてのリクエストをきれいに印刷します。 | false | boolean |
| serverUrl (共通) | 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 (上級) | 自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。 | true | boolean |
| client (上級) | カスタムクライアントを使用します。 | IGenericClient | |
| clientFactory (上級) | カスタムクライアントファクトリーを使用します。 | IRestfulClientFactory | |
| compress (上級) | 発信 (POST/PUT) コンテンツを GZIP 形式に圧縮します。 | false | boolean |
| configuration (上級) | 共有設定を使用するには、以下を行います。 | FhirConfiguration | |
| connectionTimeout (上級) | 初期 TCP 接続の試行と確立にかかる時間 (ミリ秒)。 | 10000 | Integer |
| deferModelScanning (advanced) | このオプションが設定されている場合は、指定されたタイプの子リストが実際にアクセスされるまで、モデルクラスの子はスキャンされません。 | false | boolean |
| fhirContext (advanced) | FhirContext は、作成するのにコストのかかるオブジェクトです。複数のインスタンスを作成しないようにするために、直接設定できます。 | FhirContext | |
| forceConformanceCheck (上級) | 適合性チェックを強制します。 | false | boolean |
| sessionCookie (上級) | すべてのリクエストに追加する HTTP セッション Cookie。 | String | |
| socketTimeout (上級) | 個々の読み取り/書き込み操作をブロックする時間 (ミリ秒単位)。 | 10000 | Integer |
| summary (上級) | _summary パラメーターを使用して、サーバーが応答を変更するように要求します。 列挙値:
| String | |
| validationMode (上級) | Camel が FHIR Server の適合ステートメントをいつ検証する必要があるか。 列挙値:
| ONCE | String |
| proxyHost (プロキシー) | プロキシーホスト。 | String | |
| proxyPassword (プロキシー) | プロキシーパスワード。 | String | |
| proxyPort (プロキシー) | プロキシーポート。 | Integer | |
| proxyUser (プロキシー) | プロキシーのユーザー名。 | String | |
| accessToken (セキュリティー) | OAuth アクセストークン。 | String | |
| password (セキュリティー) | Basic 認証に使用するユーザー名。 | String | |
| username (セキュリティー) | Basic 認証に使用するユーザー名。 | String |
31.5. エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
FHIR エンドポイントは、URI 構文を使用して設定されます。
fhir:apiName/methodName
fhir:apiName/methodName
パスおよびクエリーパラメーターを使用します。
31.5.1. パスパラメーター (2 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| apiName (共通) | 必須 実行する操作の種類 列挙値:
| FhirApiName | |
| methodName (共通) | 必須: 選択した操作に使用するサブ操作 | String |
31.5.2. クエリーパラメーター (44 パラメーター) リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | 説明 | デフォルト | タイプ |
|---|---|---|---|
| encoding (共通) | すべてのリクエストに使用するエンコーディング。 列挙値:
| String | |
| fhirVersion (共通) | 使用する FHIR バージョン。 列挙値:
| R4 | String |
| inBody (共通) | ボディにて交換で渡されるパラメーターの名前を設定します。 | String | |
| log (共通) | リクエストとレスポンスをすべてログに記録します。 | false | boolean |
| prettyPrint (共通) | すべてのリクエストをきれいに印刷します。 | false | boolean |
| serverUrl (共通) | 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 (上級)) | consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。 | ExceptionHandler | |
| exchangePattern (consumer (上級)) | consumer がエクスチェンジを作成する際に交換パターンを設定します。 列挙値:
| ExchangePattern | |
| pollStrategy (consumer (上級)) | プラグ可能な org.apache.camel.PollingConsumerPollingStrategy を使用すると、エクスチェンジが作成され、Camel でルーティングされる前に、通常はポーリング操作中に発生するエラー処理を制御するカスタム実装が提供できます。 | PollingConsumerPollStrategy | |
| lazyStartProducer (producer) | 最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。 | false | boolean |
| client (上級) | カスタムクライアントを使用します。 | IGenericClient | |
| clientFactory (上級) | カスタムクライアントファクトリーを使用します。 | IRestfulClientFactory | |
| compress (上級) | 発信 (POST/PUT) コンテンツを GZIP 形式に圧縮します。 | false | boolean |
| connectionTimeout (上級) | 初期 TCP 接続の試行と確立にかかる時間 (ミリ秒)。 | 10000 | Integer |
| deferModelScanning (advanced) | このオプションが設定されている場合は、指定されたタイプの子リストが実際にアクセスされるまで、モデルクラスの子はスキャンされません。 | false | boolean |
| fhirContext (advanced) | FhirContext は、作成するのにコストのかかるオブジェクトです。複数のインスタンスを作成しないようにするために、直接設定できます。 | FhirContext | |
| forceConformanceCheck (上級) | 適合性チェックを強制します。 | false | boolean |
| sessionCookie (上級) | すべてのリクエストに追加する HTTP セッション Cookie。 | String | |
| socketTimeout (上級) | 個々の読み取り/書き込み操作をブロックする時間 (ミリ秒単位)。 | 10000 | Integer |
| summary (上級) | _summary パラメーターを使用して、サーバーが応答を変更するように要求します。 列挙値:
| String | |
| validationMode (上級) | 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 (スケジューラー) | 実行の最大数を指定します。そのため、これを 1 に設定するとスケジューラーは 1 度だけ実行されます。これを 5 に設定した場合、5 回だけ実行されます。0 または負の値を設定すると、無制限に実行されます。 | 0 | long |
| runLoggingLevel (scheduler) | consumer はポーリング時に開始/完了のログ行を記録します。このオプションを使用すると、ログレベルを設定できます。 列挙値:
| TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | consumer に使用するカスタム/共有スレッドプールを設定できます。デフォルトでは、各 consumer に独自の単一スレッドのスレッドプールがあります。 | ScheduledExecutorService | |
| scheduler (スケジューラー) | camel-spring または camel-quartz コンポーネントから cron スケジューラーを使用します。スケジューラーにビルドされた値 spring または quartz を使用。 | none | オブジェクト |
| schedulerProperties (スケジューラー) | カスタムスケジューラーまたは Quartz や Spring ベースのスケジューラーを使用する場合に、追加のプロパティーを設定します。 | マップ | |
| startScheduler (scheduler) | スケジューラーを自動起動するかどうか。 | true | boolean |
| timeUnit (scheduler) | initialDelay および delay オプションの時間単位。 列挙値:
| MILLISECONDS | TimeUnit |
| useFixedDelay (scheduler) | 固定遅延または固定レートを使用するかどうかを制御します。詳細は、JDK の ScheduledExecutorService を参照してください。 | true | boolean |
| accessToken (セキュリティー) | OAuth アクセストークン。 | String | |
| password (セキュリティー) | Basic 認証に使用するユーザー名。 | String | |
| username (セキュリティー) | Basic 認証に使用するユーザー名。 | String |
31.6. API パラメーター (13 API) リンクのコピーリンクがクリップボードにコピーされました!
@FHIR エンドポイントは API ベースのコンポーネントであり、使用される API 名と API メソッドに基づく追加のパラメーターがあります。API 名と API メソッドは、apiName/methodName パスパラメーターとしてエンドポイント URI に配置されます。
fhir:apiName/methodName
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 については、以降のセクションで説明します。
31.6.1. API: 機能 リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
機能 API は、次の構文で定義されます。
fhir:capabilities/methodName?[parameters]
fhir:capabilities/methodName?[parameters]
以下の表にメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)
| メソッド | 説明 |
|---|---|
| 指定されたモデルタイプを使用して適合ステートメントを取得します |
31.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 の場合があります。 | マップ |
| type | モデルタイプ | クラス |
上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。
いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHere は CamelFhir.myParameterNameHere ヘッダーをオーバーライドします。
31.6.2. API: 作成 リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
作成 API は、構文で次のように定義されます。
fhir:create/methodName?[parameters]
fhir:create/methodName?[parameters]
以下の表に 1 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)
| メソッド | 説明 |
|---|---|
| サーバー上に IBaseResource を作成します |
31.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 の場合があります。 | マップ |
| 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 ヘッダーをオーバーライドします。
31.6.3. API: 削除 リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
削除 API は、構文で次のように定義されます。
fhir:delete/methodName?[parameters]
fhir:delete/methodName?[parameters]
以下の表に 3 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)
| メソッド | 説明 |
|---|---|
| 指定されたリソースを削除します | |
| リソースタイプ e でリソースを削除する | |
| 特定の検索 URL に対する条件付き削除として削除を実行する必要があることを指定します。 |
31.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 の場合があります。 | マップ |
| resource | 削除する IBaseResource | IBaseResource |
31.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 の場合があります。 | マップ |
| id | リソースを参照する IIdType | IIdType |
| stringId | id です | String |
| type | リソースの種類 (患者など) | String |
31.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 の場合があります。 | マップ |
| url | 使用する検索 URL。この URL の形式は、ResourceTypeParameters の形式にする必要があります。たとえば、Patientname=Smith&identifier=13.2.4.11.4%7C847366 です。 | String |
上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。
いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHere は CamelFhir.myParameterNameHere ヘッダーをオーバーライドします。
31.6.4. API: 履歴 リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
履歴 API は、次の構文で定義されます。
fhir:history/methodName?[parameters]
fhir:history/methodName?[parameters]
以下の表に 3 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)
| メソッド | 説明 |
|---|---|
| サーバー上の特定のリソースのすべてのバージョンに対して (ID とタイプによって) 操作を実行します | |
| サーバー上のすべてのタイプのすべてのリソースのすべてのバージョンで操作を実行します | |
| サーバー上の指定されたタイプのすべてのリソースのすべてのバージョンで操作を実行します |
31.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 の場合があります。 | マップ |
| iCutoff | 指定された時間以降に作成されたリソースバージョンのみをサーバーが返すように要求します。NULL の場合があります。 | IPrimitiveType |
| id | リソースタイプとリソース ID の両方を入力する必要がある IIdType | IIdType |
| returnType | メソッドが Bundle リソース (ca.uhn.fhir.model.dstu2.resource.Bundle など) を返すように要求します。DSTU2 サーバーにアクセスしている場合は、この方法を使用します。 | クラス |
31.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 の場合があります。 | マップ |
| iCutoff | 指定された時間以降に作成されたリソースバージョンのみをサーバーが返すように要求します。NULL の場合があります。 | IPrimitiveType |
| returnType | メソッドが Bundle リソース (ca.uhn.fhir.model.dstu2.resource.Bundle など) を返すように要求します。DSTU2 サーバーにアクセスしている場合は、この方法を使用します。 | クラス |
31.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 の場合があります。 | マップ |
| iCutoff | 指定された時間以降に作成されたリソースバージョンのみをサーバーが返すように要求します。NULL の場合があります。 | IPrimitiveType |
| resourceType | 検索するリソースの種類 | クラス |
| returnType | メソッドが Bundle リソース (ca.uhn.fhir.model.dstu2.resource.Bundle など) を返すように要求します。DSTU2 サーバーにアクセスしている場合は、この方法を使用します。 | クラス |
上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。
いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHere は CamelFhir.myParameterNameHere ヘッダーをオーバーライドします。
31.6.5. API: ページの読み込み リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
ページ読み込み API は、次の構文で定義されます。
fhir:load-page/methodName?[parameters]
fhir:load-page/methodName?[parameters]
以下の表に 3 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)
| メソッド | 説明 |
|---|---|
| 指定された URL とバンドルタイプを使用して結果のページを読み込み、DSTU1 Atom バンドルを返します | |
| バンドル内のリレーション next のリンクを使用して、結果の次のページを読み込みます | |
| バンドル内のリレーション prev のリンクを使用して、結果の前のページをロードします |
31.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 の場合があります。 | マップ |
| returnType | リターンタイプ | クラス |
| url | 検索 URL | String |
31.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 の場合があります。 | マップ |
31.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 の場合があります。 | マップ |
上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。
いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHere は CamelFhir.myParameterNameHere ヘッダーをオーバーライドします。
31.6.6. API: メタ リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
メタ API は、次の構文で定義されます。
fhir:meta/methodName?[parameters]
fhir:meta/methodName?[parameters]
以下の表に 5 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)
| メソッド | 説明 |
|---|---|
| 指定されたメタデータの要素を既存のセットに追加します (削除しないでください)。 | |
| 指定された ID から指定されたメタデータの要素を削除します | |
| 特定のリソースから現在のメタデータを取得する | |
| サーバー全体から現在のメタデータを取得する | |
| 特定のタイプから現在のメタデータをフェッチする |
31.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 の場合があります。 | マップ |
| id | ID | IIdType |
| meta | IBaseMetaType クラス | IBaseMetaType |
31.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 の場合があります。 | マップ |
| id | ID | IIdType |
| meta | IBaseMetaType クラス | IBaseMetaType |
31.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 の場合があります。 | マップ |
| id | ID | IIdType |
| metaType | IBaseMetaType クラス | クラス |
31.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 の場合があります。 | マップ |
| metaType | 特定の FHIR モデルバージョンのメタデータ型のタイプ (MetaDt.class または MetaType.class である必要があります) | クラス |
31.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 の場合があります。 | マップ |
| metaType | IBaseMetaType クラス | クラス |
| resourceType | リソースの種類 (患者など) | String |
上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。
いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHere は CamelFhir.myParameterNameHere ヘッダーをオーバーライドします。
31.6.7. API: 操作 リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
操作 API は、次の構文で定義されます。
fhir:operation/methodName?[parameters]
fhir:operation/methodName?[parameters]
以下の表に 5 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)
| メソッド | 説明 |
|---|---|
| サーバー上の特定のリソースのすべてのバージョンに対して (ID とタイプによって) 操作を実行します | |
| この操作は、リソースの特定のバージョンで動作します | |
| サーバー上のすべてのタイプのすべてのリソースのすべてのバージョンで操作を実行します | |
| サーバー上の指定されたタイプのすべてのリソースのすべてのバージョンで操作を実行します | |
| この操作は、FHIR 仕様で定義されているように $process-message と呼ばれます |
31.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 の場合があります。 | マップ |
| id | リソース (バージョンは削除されます) | IIdType |
| name | 操作名 | String |
| outputParameterType | 出力パラメーターに使用する型 (これは、使用している FHIR 構造のバージョンから引き出された Parameters.class に設定する必要があります) は、NULL の場合があります。 | クラス |
| parameters | 入力として使用するパラメーター。操作に入力パラメーターが必要ない場合は、null になることもあります。 | IBaseParameters |
| returnType | このオペレーションが、Parameters リソースではなく、単一のリソースボディを戻り値の型として返す場合は、このメソッドを使用してそのリソースの型を指定します。これは、Parameters リソースの代わりにバンドルを返す特定の操作 (Patient/NNN/$everything など) に役立ちます。NULL の場合があります。 | クラス |
| useHttpGet | HTTP GET 動詞を使用する | Boolean |
31.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 の場合があります。 | マップ |
| id | リソースのバージョン | IIdType |
| name | 操作名 | String |
| outputParameterType | 出力パラメーターに使用する型 (これは、使用している FHIR 構造のバージョンから引き出された Parameters.class に設定する必要があります) は、NULL の場合があります。 | クラス |
| parameters | 入力として使用するパラメーター。操作に入力パラメーターが必要ない場合は、null になることもあります。 | IBaseParameters |
| returnType | このオペレーションが、Parameters リソースではなく、単一のリソースボディを戻り値の型として返す場合は、このメソッドを使用してそのリソースの型を指定します。これは、Parameters リソースの代わりにバンドルを返す特定の操作 (Patient/NNN/$everything など) に役立ちます。NULL の場合があります。 | クラス |
| useHttpGet | HTTP GET 動詞を使用する | Boolean |
31.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 の場合があります。 | マップ |
| name | 操作名 | String |
| outputParameterType | 出力パラメーターに使用する型 (これは、使用している FHIR 構造のバージョンから引き出された Parameters.class に設定する必要があります) は、NULL の場合があります。 | クラス |
| parameters | 入力として使用するパラメーター。操作に入力パラメーターが必要ない場合は、null になることもあります。 | IBaseParameters |
| returnType | このオペレーションが、Parameters リソースではなく、単一のリソースボディを戻り値の型として返す場合は、このメソッドを使用してそのリソースの型を指定します。これは、Parameters リソースの代わりにバンドルを返す特定の操作 (Patient/NNN/$everything など) に役立ちます。NULL の場合があります。 | クラス |
| useHttpGet | HTTP GET 動詞を使用する | Boolean |
31.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 の場合があります。 | マップ |
| name | 操作名 | String |
| outputParameterType | 出力パラメーターに使用する型 (これは、使用している FHIR 構造のバージョンから引き出された Parameters.class に設定する必要があります) は、NULL の場合があります。 | クラス |
| parameters | 入力として使用するパラメーター。操作に入力パラメーターが必要ない場合は、null になることもあります。 | IBaseParameters |
| resourceType | 操作するリソースの種類 | クラス |
| returnType | このオペレーションが、Parameters リソースではなく、単一のリソースボディを戻り値の型として返す場合は、このメソッドを使用してそのリソースの型を指定します。これは、Parameters リソースの代わりにバンドルを返す特定の操作 (Patient/NNN/$everything など) に役立ちます。NULL の場合があります。 | クラス |
| useHttpGet | HTTP GET 動詞を使用する | Boolean |
31.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 の場合があります。 | マップ |
| msgBundle | メッセージバンドルをメッセージングサーバーへの POST に設定します。 | IBaseBundle |
| respondToUri | 受信サーバーからの応答をこの URI に送信する必要があることを示すオプションのクエリーパラメーター。NULL の場合があります。 | String |
| responseClass | 応答クラス | クラス |
上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。
いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHere は CamelFhir.myParameterNameHere ヘッダーをオーバーライドします。
31.6.8. API: パッチ リンクのコピーリンクがクリップボードにコピーされました!
producer と consumer の両方がサポート対象
パッチ API は、次の構文で定義されます。
fhir:patch/methodName?[parameters]
fhir:patch/methodName?[parameters]
以下の表に 2 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)
| メソッド | 説明 |
|---|---|
| 指定されたリソース ID にパッチを適用します | |
| 特定の検索 URL に対して条件付きの作成として更新を実行する必要があることを指定します。 |
31.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 の場合があります。 | マップ |
| id | パッチを適用するリソース ID | IIdType |
| patchBody | に準拠する XML または JSON でシリアル化されたパッチドキュメントの本文 | String |
| preferReturn | リクエストに Prefer ヘッダーを追加します。これは、サーバーが結果の一部としてリソース本文を含めるか抑制することを要求します。リソースがサーバーによって返された場合、それは解析され、MethodOutcome#getResource () を介してクライアントにアクセス可能になります。 | PreferReturnEnum |
| stringId | パッチを適用するリソース ID | String |