Red Hat build of Apache Camel for Spring Boot リファレンス


Red Hat build of Apache Camel 4.0

Red Hat build of Apache Camel for Spring Boot リファレンス

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

概要

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

はじめに

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

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

第1章 コンポーネントスターター

Camel Spring Boot は、Spring Boot スターターとして次の Camel アーティファクトをサポートします。

Expand
表1.1 Camel コンポーネント
コンポーネントアーティファクト説明

AMQP

camel-amqp-starter

Apache QPid クライアントを使用した AMQP プロトコルによるメッセージング。

AWS Cloudwatch

camel-aws2-cw-starter

AWS SDK バージョン 2.x を使用してメトリクスを AWS CloudWatch に送信します。

AWS DynamoDB

camel-aws2-ddb-starter

AWS SDK バージョン 2.x を使用して、AWS DynamoDB サービスからデータを保存および取得します。

AWS Kinesis

camel-aws2-kinesis-starter

AWS SDK バージョン 2.x を使用して、AWS Kinesis Streams からレコードを消費し、AWS Kinesis Streams にレコードを作成します。

AWS Lambda

camel-aws2-lambda-starter

AWS SDK バージョン 2.x を使用して、AWS Lambda 関数を管理および呼び出します。

AWS S3 Storage Service

camel-aws2-s3-starter

AWS SDK バージョン 2.x を使用して、AWS S3 Storage Service からオブジェクトを保存および取得します。

AWS Simple Notification System (SNS)

camel-aws2-sns-starter

AWS SDK バージョン 2.x を使用して AWS Simple Notification Topic にメッセージを送信します。

AWS Simple Queue Service (SQS)

camel-aws2-sqs-starter

AWS SDK バージョン 2.x を使用して AWS SQS サービスを送信先および送信元としてメッセージを送受信します。

Azure ServiceBus

camel-azure-servicebus-starter

Azure Event Bus との間でメッセージを送受信します。

Azure Storage Blob Service

camel-azure-storage-blob-starter

SDK v12 を使用して Azure Storage Blob Service からブロブを保存および取得します。

Azure Storage Queue Service

camel-azure-storage-queue-starter

azure-storage-queue コンポーネントは、Azure SDK v12 を使用して Azure Storage Queue への/からのメッセージを保存および取得するために使用されます。

Bean

camel-bean-starter

Camel レジストリーに格納されている Java Bean のメソッドを呼び出します。

Bean Validator

camel-bean-validator-starter

Java Bean Validation API を使用してメッセージボディーを検証します。

Browse

camel-browse-starter

BrowsableEndpoint をサポートするエンドポイントで受信したメッセージを調べます。

Cassandra CQL

camel-cassandraql-starter

CQL3 API (Thrift API 以外) を使用して Cassandra 2.0 と統合します。DataStax が提供する Cassandra Java Driver をベースにしています。

Control Bus

camel-controlbus-starter

Camel ルートを管理および監視します。

Cron

camel-cron-starter

Unix cron 構文で指定されたタイミングでイベントをトリガーする汎用インターフェイス。

Crypto (JCE)

camel-crypto-starter

Java Cryptographic Extension (JCE) の署名サービスを使用してエクスチェンジに署名し、検証します。

CXF

camel-cxf-soap-starter

Apache CXF を使用して SOAP WebServices を公開するか、CXF WS クライアントを使用して外部 WebServices に接続します。

Data Format

camel-dataformat-starter

Camel Data Format を通常の Camel コンポーネントとして使用します。

Dataset

camel-dataset-starter

Camel アプリケーションの負荷テストおよびソークテスト用のデータを提供します。

Direct

camel-direct-starter

同じ Camel コンテキストから別のエンドポイントを同期的に呼び出します。

Elastic Search

camel-elasticsearch-starter

Java クライアント API 経由で ElasticSearch にリクエストを送信します。

FHIR

camel-fhir-starter

FHIR (Fast Healthcare Interoperability Resources) 規格を使用して、ヘルスケアドメインの情報を交換します。

File

camel-file-starter

ファイルの読み取りと書き込みを行います。

FTP

camel-ftp-starter

FTP サーバーとの間でファイルをアップロードおよびダウンロードします。

Google BigQuery

camel-google-bigquery-starter

分析用の Google BigQuery データウェアハウス。

Google Pubsub

camel-google-pubsub-starter

Google Cloud Platform PubSub サービスとの間でメッセージを送受信します。

gRPC

camel-grpc-starter

gRPC エンドポイントを公開し、外部 gRPC エンドポイントにアクセスします。

HTTP

camel-http-starter

Apache HTTP Client 4.x を使用して、外部の HTTP サーバーにリクエストを送信します。

Infinispan

camel-infinispan-starter

Infinispan の分散キー/値のストアとデータグリッドの読み取りと書き込みを行います。

Infinispan Embedded

camel-infinispan-embedded-starter

Infinispan の分散キー/値のストアとデータグリッドの読み取りと書き込みを行います。

JDBC

camel-jdbc-starter

SQL および JDBC を通じてデータベースにアクセスします。

Jira

camel-jira-starter

JIRA 問題トラッカーと対話します。

JMS

camel-jms-starter

JMS Queue または Topic との間でメッセージを送受信します。

JPA

camel-jpa-starter

Java Persistence API (JPA) を使用して、データベースから Java オブジェクトを保存し、取得します。

JSLT

camel-jslt-starter

JSLT を使用して JSON ペイロードをクエリーまたは変換します。

Kafka

camel-kafka-starter

Apache Kafka ブローカーとの間でメッセージを送受信します。

Kamelet

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 がサポートする任意の言語でスクリプトを実行します。

LDAP

camel-ldap-starter

LDAP サーバーで検索を実行します。

Log

camel-log-starter

基礎となるロギングメカニズムにメッセージをログとして記録します。

Mail

camel-mail-starter

imap、pop3、および smtp プロトコルを使用してメールを送受信します。

Mail Microsoft OAuth

camel-mail-microsoft-oauth-starter

Camel Mail OAuth2 Authenticator for Microsoft Exchange Online

MapStruct

camel-mapstruct-starter

Mapstruct を使用した型変換

Master

camel-master-starter

クラスター内の単一のコンシューマーのみが特定のエンドポイントから消費するようにします。JVM が停止した場合に自動的にフェイルオーバーします。

Micrometer

camel-micrometer-starter

Micrometer ライブラリーを使用して、Camel ルートからさまざまなメトリクスを直接収集します。

Minio

camel-minio-starter

Minio SDK を使用して、Minio Storage Service からオブジェクトを保存および取得します。

MLLP

camel-mllp-starter

MLLP プロトコルを使用して外部システムと通信します。

Mock

camel-mock-starter

モックを使用してルートおよび仲介ルールをテストします。

MongoDB

camel-mongodb-starter

MongoDB ドキュメントおよびコレクションの操作を実行します。

MyBatis

camel-mybatis-starter

MyBatis を使用して、リレーショナルデータベースでクエリー、ポーリング、挿入、更新、または削除を実行します。

Netty

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 デプロイメント設定に対する操作を実行し、デプロイメント設定の変更に関する通知を受け取ります。

Netty HTTP

camel-netty-http-starter

Netty 4.x を使用する Netty HTTP サーバーおよびクライアント。

Paho

camel-paho-starter

Eclipse Paho MQTT クライアントを使用して MQTT メッセージブローカーと通信します。

Paho MQTT 5

camel-paho-mqtt5-starter

Eclipse Paho MQTT v5 クライアントを使用して MQTT メッセージブローカーと通信します。

Platform HTTP

camel-platform-http-starter

現在のプラットフォームで利用可能な HTTP サーバーを使用して HTTP エンドポイントを公開します。

Quartz

camel-quartz-starter

Quartz 2.x スケジューラーを使用してメッセージの送信をスケジュールします。

Ref

camel-ref-starter

Camel Registry で名前によって動的に検索されたエンドポイントにメッセージをルーティングします。

REST

camel-rest-starter

REST サービスを公開するか、外部 REST サービスを呼び出します。

Saga

camel-saga-starter

Saga EIP を使用して、ルート内でカスタムアクションを実行します。

Salesforce

camel-salesforce-starter

Java DTO を使用して Salesforce と通信します。

SAP

camel-sap-starter

SAP Java コネクター (SAP JCo) ライブラリーを使用して SAP との双方向通信を容易にし、SAP IDoc ライブラリーを使用して中間ドキュメント (IDoc) 形式でのドキュメントの送信を容易にします。

Scheduler

camel-scheduler-starter

java.util.concurrent.ScheduledExecutorService を使用して、指定された間隔でメッセージを生成します。

SEDA

camel-seda-starter

同じ JVM の Camel コンテキストから別のエンドポイントを非同期に呼び出します。

Servlet

camel-servlet-starter

Servlet によって HTTP リクエストを処理します。

Slack

camel-slack-starter

Slack との間でメッセージを送受信します。

SNMP

camel-snmp-starter

トラップを受信し、SNMP (Simple Network Management Protocol) 対応デバイスをポーリングします。

Spring Batch

camel-spring-batch-starter

さらに処理するためにメッセージを Spring Batch に送信します。

Spring JDBC

camel-spring-jdbc-starter

Spring Transaction サポートにより、SQL および JDBC を介してデータベースにアクセスします。

Spring LDAP

camel-spring-ldap-starter

メッセージペイロードとしてフィルターを使用して、LDAP サーバーで検索を実行します。

Spring RabbitMQ

camel-spring-rabbitmq-starter

Spring RabbitMQ クライアントを使用して RabbitMQ からメッセージを送受信します。

Spring Redis

camel-spring-redis-starter

Redis からメッセージを送受信します。

Spring Webservice

camel-spring-ws-starter

このコンポーネントを使用して、Spring Web Services と統合できます。Web サービスにアクセスするためのクライアント側のサポート、およびコントラクトファースト Web サービスを作成するためのサーバー側のサポートを提供します。

SQL

camel-sql-starter

Spring JDBC を使用して SQL クエリーを実行します。

Stub

camel-stub-starter

開発中またはテスト中に物理エンドポイントをスタブアウトします。

Telegram

camel-telegram-starter

Telegram Bot API として動作するメッセージを送受信します。

Timer

camel-timer-starter

java.util.Timer を使用して、指定された間隔でメッセージを生成します。

Validator

camel-validator-starter

XML スキーマと JAXP 検証を使用してペイロードを検証します。

Velocity

camel-velocity-starter

Velocity テンプレートを使用してメッセージを変換します。

Vert.x HTTP クライアント

camel-vertx-http-starter

Vert.x を使用して、外部 HTTP サーバーにリクエストを送信します。

Vert.x WebSocket

camel-vertx-websocket-starter

WebSocket エンドポイントを公開し、Vert.x を使用してリモート WebSocket サーバーに接続します。

Webhook

camel-webhook-starter

Webhook エンドポイントを公開して、他の Camel コンポーネントのプッシュ通知を受信します。

XJ

camel-xj-starter

XSLT を使用して、JSON および XML メッセージを変換します。

XSLT

camel-xslt-starter

XSLT テンプレートを使用して XML ペイロードを変換します。

XSLT Saxon

camel-xslt-saxon-starter

Saxon を使用した XSLT テンプレートを使用して XML ペイロードを変換します。

Expand
表1.2 Camel データフォーマット
コンポーネントアーティファクト説明

Avro

camel-avro-starter

Apache Avro バイナリーデータフォーマットを使用して、メッセージをシリアライズおよびデシリアライズします。

Avro Jackson

camel-jackson-avro-starter

Jackson を使用して、POJO を Avro に (およびその逆に) マーシャリングします。

Bindy

camel-bindy-starter

Camel Bindy を使用して、POJO とキーと値のペア (KVP) 形式の間でマーシャリングおよびアンマーシャリングします。

HL7

camel-hl7-starter

HL7 MLLP コーデックを使用して、HL7 (Health Care) モデルオブジェクトをマーシャリングおよびアンマーシャリングします。

JacksonXML

camel-jacksonxml-starter

Jackson の XMLMapper エクステンションを使用して、XML ペイロードを POJO に、およびその逆にアンマーシャリングします。

JAXB

camel-jaxb-starter

JAXB2 XML マーシャリング標準を使用して、XML ペイロードを POJO に、およびその逆にアンマーシャリングします。

JSON Gson

camel-gson-starter

Gson を使用して、POJO を JSON に、およびその逆にマーシャリングします。

JSON Jackson

camel-jackson-starter

Jackson を使用して、POJO を JSON に、およびその逆にマーシャリングします。

Protobuf Jackson

camel-jackson-protobuf-starter

Jackson を使用して、POJO を Protobuf に、およびその逆にマーシャリングします。

SOAP

camel-soap-starter

Java オブジェクトを SOAP メッセージに、およびその逆にマーシャリングします。

Zip ファイル

camel-zipfile-starter

java.util.zip.ZipStream を使用して、ストリームを圧縮および圧縮解除します。

Expand
表1.3 Camel 言語
言語アーティファクト説明

Constant

camel-core-starter

固定の値は、ルートの起動時に一度だけ設定されます。

CSimple

camel-core-starter

コンパイルされた単純な式を評価します。

ExchangeProperty

camel-core-starter

Exchange からプロパティーを取得します。

File

camel-core-starter

Simple 言語のファイル関連機能。

Header

camel-core-starter

Exchange からヘッダーを取得します。

JQ

camel-jq-starter

JQ 式を JSON メッセージボディーに対して評価します。

JSONPath

camel-jsonpath-starter

JSON メッセージのボディーに対して、JsonPath 式を評価します。

Ref

camel-core-starter

レジストリーの既存の式を使用します。

Simple (単純)

camel-core-starter

Camel 単純式を評価します。

Tokenize

camel-core-starter

区切り文字パターンを使用してテキストペイロードをトークン化します。

XML Tokenize

camel-xml-jaxp-starter

XML ペイロードをトークン化します。

XPath

camel-xpath-starter

XML ペイロードに対して XPath 式を評価します。

XQuery

camel-saxon-starter

XQuery および Saxon を使用して XML ペイロードをクエリーまたは変換します。

Expand
表1.4 その他のエクステンション
エクステンションアーティファクト説明

Kamelet Main

camel-kamelet-main-starter

Kamelet スタンドアロンを実行するためのメイン

Openapi Java

camel-openapi-java-starter

openapi ドキュメントを使用するための REST-dsl サポート

OpenTelemetry

camel-opentelemetry-starter

OpenTelemetry を使用した分散トレース

Spring Security

camel-spring-security-starter

Spring Security を使用したセキュリティー

YAML DSL

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>
Copy to Clipboard Toggle word wrap

2.2. URI 形式

amqp:[queue:|topic:]destinationName[?options]
Copy to Clipboard Toggle word wrap

2.3. オプションの設定

Camel コンポーネントは 2 つのレベルで設定されます。

  • コンポーネントレベル
  • エンドポイントレベル

2.3.1. コンポーネントレベルのオプション

コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。

通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。

コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。

2.3.2. エンドポイントレベルのオプション

エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。

エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSLDataFormat DSL を使用することもできます。

オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。

プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。

2.4. コンポーネントオプション

AMQP コンポーネントは、以下に示す 100 のオプションをサポートしています。

Expand
名前説明デフォルトタイプ

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 のいずれかです。

列挙値:

  • 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
  • CACHE_CONNECTION
  • CACHE_CONSUMER
  • CACHE_NONE
  • CACHE_SESSION

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 が決まります。

列挙値:

  • Simple (単純)
  • デフォルト
  • カスタム

デフォルト

ConsumerType

defaultTaskExecutorType (consumer (上級))

consumer エンドポイントとプロデューサエンドポイントの ReplyTo consumer の両方に対して、DefaultMessageListenerContainer で使用するデフォルトの TaskExecutor タイプを指定します。可能な値: SimpleAsync (Spring の SimpleAsyncTaskExecutor を使用) または ThreadPool (Spring の ThreadPoolTaskExecutor を最適な値で使用 - キャッシュされたスレッドプールのようなもの)。設定されていない場合は、デフォルトで以前の動作になり、consumer エンドポイントにはキャッシュされたスレッドプールが使用され、応答 consumer には SimpleAsync が使用されます。ThreadPool の使用は、同時 consumer が動的に増減するエラスティック設定でスレッドのゴミを減らすために推奨されます。

列挙値:

  • ThreadPool
  • SimpleAsync
 

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 が決まります。

列挙値:

  • Simple (単純)
  • デフォルト
  • カスタム

デフォルト

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。

列挙値:

  • 1
  • 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 オプションも有効にする必要があります。

列挙値:

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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 のドキュメントを参照してください。特に、クラスター化された環境で実行する場合の影響に関する注意事項と、共有応答キューは代替の一時および排他的キューよりもパフォーマンスが低いという事実を参照してください。

列挙値:

  • Temporary
  • 共有
  • 排他的
 

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 などのより高い値を使用する必要があります。

列挙値:

  • CACHE_AUTO
  • CACHE_CONNECTION
  • CACHE_CONSUMER
  • CACHE_NONE
  • 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 の独自の実装を提供し、# 表記を使用して参照できます。

列挙値:

  • default
  • パススルー
 

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 ログレベルを設定できます。

列挙値:

  • TRACE
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • OFF

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
Copy to Clipboard Toggle word wrap

パスおよびクエリーパラメーターを使用します。

2.5.1. パスパラメーター (2 パラメーター)

Expand
名前説明デフォルトタイプ

destinationType (共通)

使用する宛先の種類。

列挙値:

  • queue
  • topic
  • temp-queue
  • temp-topic

queue

String

destinationName (共通)

必須 宛先として使用するキューまたはトピックの名前。

 

String

2.5.2. クエリーパラメーター(96 パラメーター):

Expand
名前説明デフォルトタイプ

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 のいずれかです。

列挙値:

  • 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
  • CACHE_CONNECTION
  • CACHE_CONSUMER
  • CACHE_NONE
  • CACHE_SESSION

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 が決まります。

列挙値:

  • Simple (単純)
  • デフォルト
  • カスタム

デフォルト

ConsumerType

defaultTaskExecutorType (consumer (上級))

consumer エンドポイントとプロデューサエンドポイントの ReplyTo consumer の両方に対して、DefaultMessageListenerContainer で使用するデフォルトの TaskExecutor タイプを指定します。可能な値: SimpleAsync (Spring の SimpleAsyncTaskExecutor を使用) または ThreadPool (Spring の ThreadPoolTaskExecutor を最適な値で使用 - キャッシュされたスレッドプールのようなもの)。設定されていない場合は、デフォルトで以前の動作になり、consumer エンドポイントにはキャッシュされたスレッドプールが使用され、応答 consumer には SimpleAsync が使用されます。ThreadPool の使用は、同時 consumer が動的に増減するエラスティック設定でスレッドのゴミを減らすために推奨されます。

列挙値:

  • ThreadPool
  • SimpleAsync
 

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 がエクスチェンジを作成する際に交換パターンを設定します。

列挙値:

  • InOnly
  • InOut
  • InOptionalOut
 

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 が決まります。

列挙値:

  • Simple (単純)
  • デフォルト
  • カスタム

デフォルト

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。

列挙値:

  • 1
  • 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 オプションも有効にする必要があります。

列挙値:

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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 のドキュメントを参照してください。特に、クラスター化された環境で実行する場合の影響に関する注意事項と、共有応答キューは代替の一時および排他的キューよりもパフォーマンスが低いという事実を参照してください。

列挙値:

  • Temporary
  • 共有
  • 排他的
 

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 などのより高い値を使用する必要があります。

列挙値:

  • CACHE_AUTO
  • CACHE_CONNECTION
  • CACHE_CONSUMER
  • CACHE_NONE
  • 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 の独自の実装を提供し、# 表記を使用して参照できます。

列挙値:

  • default
  • パススルー
 

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 ログレベルを設定できます。

列挙値:

  • TRACE
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • OFF

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 コンポーネントの使用

// Consuming from AMQP queue
from("amqp:queue:incoming").
  to(...);

// Sending message to the AMQP topic
from(...).
  to("amqp:topic:notify");
Copy to Clipboard Toggle word wrap

2.7. AMQP コンポーネントの設定

AMQP 1.0 コンポーネントの作成

AMQPComponent amqp = AMQPComponent.amqpComponent("amqp://localhost:5672");

AMQPComponent authorizedAmqp = AMQPComponent.amqpComponent("amqp://localhost:5672", "user", "password");
Copy to Clipboard Toggle word wrap

AMQP コンポーネントを自動的に設定するために、org.apache.camel.component.amqp.AMQPConnectionDetails のインスタンスをレジストリーに追加することもできます。たとえば、Spring Boot の場合、Bean を定義するだけです。

AMQP 接続の詳細の自動設定

@Bean
AMQPConnectionDetails amqpConnection() {
  return new AMQPConnectionDetails("amqp://localhost:5672");
}

@Bean
AMQPConnectionDetails securedAmqpConnection() {
  return new AMQPConnectionDetails("amqp://localhost:5672", "username", "password");
}
Copy to Clipboard Toggle word wrap

同様に、Camel-CDI を使用する場合は、CDI producer メソッドも使用できます。

CDI の AMQP 接続の詳細の自動設定

@Produces
AMQPConnectionDetails amqpConnection() {
  return new AMQPConnectionDetails("amqp://localhost:5672");
}
Copy to Clipboard Toggle word wrap

また、AMQP 接続の詳細を読み取るために信頼することもできます。ファクトリーメソッド AMQPConnectionDetails.discoverAMQP() は、以下のスニペットで示されているように、Kubernetes に似た規則で Camel プロパティーを読み取ろうとします。

AMQP 接続の詳細の自動設定

export AMQP_SERVICE_HOST = "mybroker.com"
export AMQP_SERVICE_PORT = "6666"
export AMQP_SERVICE_USERNAME = "username"
export AMQP_SERVICE_PASSWORD = "password"

...

@Bean
AMQPConnectionDetails amqpConnection() {
  return AMQPConnectionDetails.discoverAMQP();
}
Copy to Clipboard Toggle word wrap

AMQP 固有のオプションを有効にする

たとえば、amqp.traceFrames を有効にする必要がある場合は、次の例のように、オプションを URI に追加することで有効にできます。

AMQPComponent amqp = AMQPComponent.amqpComponent("amqp://localhost:5672?amqp.traceFrames=true");
Copy to Clipboard Toggle word wrap

QPID JMS クライアント設定 を参照してください。

2.8. トピックの使用

camel-amqp でトピックを使用するには、以下に示すように、topic:// をトピック 接頭辞として使用するようにコンポーネントを設定する必要があります。

 <bean id="amqp" class="org.apache.camel.component.amqp.AmqpComponent">
   <property name="connectionFactory">
     <bean class="org.apache.qpid.jms.JmsConnectionFactory" factory-method="createFromURL">
       <property name="remoteURI" value="amqp://localhost:5672" />
       <property name="topicPrefix" value="topic://" />  <!-- only necessary when connecting to ActiveMQ over AMQP 1.0 -->
     </bean>
   </property>
 </bean>
Copy to Clipboard Toggle word wrap

AMQPComponent#amqpComponent () メソッドと AMQPConnectionDetails の両方がトピック接頭辞を使用してコンポーネントを事前設定するため、明示的に設定する必要がないことに注意してください。

2.9. Spring Boot 自動設定

コンポーネントは、以下に記載される 101 のオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

3.2. Avro データ形式オプション

Avro データ形式は、以下にリストされている 1 つのオプションをサポートしています。

Expand
名前デフォルトJava タイプ説明

instanceClassName

 

String

マーシャリングとアンマーシャリングに使用するクラス名。

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");
Copy to Clipboard Toggle word wrap

ここで、値は Avro Maven プラグインで生成されたクラス

または XML です。

    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
        <route>
            <from uri="direct:in"/>
            <marshal>
                <avro instanceClass="org.apache.camel.dataformat.avro.Message"/>
            </marshal>
            <to uri="log:out"/>
        </route>
    </camelContext>
Copy to Clipboard Toggle word wrap

別の方法として、コンテキスト内でデータ形式を指定し、ルートから参照することもできます。

    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
         <dataFormats>
            <avro id="avro" instanceClass="org.apache.camel.dataformat.avro.Message"/>
        </dataFormats>
        <route>
            <from uri="direct:in"/>
            <marshal><custom ref="avro"/></marshal>
            <to uri="log:out"/>
        </route>
    </camelContext>
Copy to Clipboard Toggle word wrap

同じ方法で、avro データ形式を使用してアンマーシャリングできます。

3.4. Spring Boot 自動設定

Spring Boot で avro を使用する場合は、自動設定をサポートするために Maven 依存関係を必ず追加してください。コンポーネントは、以下に記載される 2 つのオプションをサポートします。

Expand
名前説明デフォルトタイプ

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");
Copy to Clipboard Toggle word wrap

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>
Copy to Clipboard Toggle word wrap

4.2. SchemaResolver の設定

Avro シリアル化はスキーマベースであるため、このデータ形式では、マーシャリング/アンマーシャリングされる各交換のスキーマを検索できる SchemaResolver オブジェクトを提供する必要があります。

単一の SchemaResolver をレジストリーに追加すると、自動的に検索されます。または、カスタム SchemaResolver への参照を明示的に指定できます。

4.3. Avro Jackson オプション

Avro Jackson データ形式は、以下に示す 18 のオプションをサポートしています。

Expand
名前デフォルトJava タイプ説明

objectMapper

 

String

Jackson を使用する場合は、指定された ID で既存の ObjectMapper を検索して使用します。

useDefaultObjectMapper

 

Boolean

レジストリーからデフォルトの Jackson ObjectMapper を検索して使用するかどうか。

unmarshalType

 

String

アンマーシャリング時に使用する Java 型のクラス名。

jsonView

 

String

POJO を JSON にマーシャリングする際に、JSON 出力から特定のフィールドを除外する場合があります。Jackson では、JSON ビューを使用してこれを実現できます。このオプションは、JsonView アノテーションを持つクラスを参照するためのものです。

include

 

String

pojo を JSON にマーシャリングする必要があり、pojo に null 値を持つフィールドがいくつかある場合。これらの null 値をスキップする場合は、このオプションを NON_NULL に設定できます。

allowJmsType

 

Boolean

JMS ユーザーが JMS 仕様の JMSType ヘッダーを使用して、アンマーシャリングに使用する FQN クラス名を指定できるようにするために使用されます。

collectionType

 

String

使用するレジストリーを参照するカスタムコレクションタイプを参照します。このオプションはあまり使用しないでください。ただし、デフォルトとして java.util.Collection に基づくものとは異なるコレクションタイプを使用できます。

useList

 

Boolean

Map の List または Pojo の List にアンマーシャリングします。

moduleClassNames

 

String

カスタム Jackson モジュール com.fasterxml.jackson.databind.Module を使用するには、FQN クラス名を持つ文字列として指定します。複数のクラスはコンマで区切ることができます。

moduleRefs

 

String

Camel レジストリーから参照されるカスタム Jackson モジュールを使用します。複数のモジュールはコンマで区切ることができます。

enableFeatures

 

String

Jackson com.fasterxml.jackson.databind.ObjectMapper で有効にする機能のセット。機能は、com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature、または com.fasterxml.jackson.databind.MapperFeature の列挙型と一致する名前である必要があります。複数の機能はコンマで区切ることができます。

disableFeatures

 

String

Jackson com.fasterxml.jackson.databind.ObjectMapper で無効にする機能のセット。機能は、com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature、または com.fasterxml.jackson.databind.MapperFeature の列挙型と一致する名前である必要があります。複数の機能はコンマで区切ることができます。

allowUnmarshallType

 

Boolean

有効にすると、Jackson はアンマーシャリング中に CamelJacksonUnmarshalType ヘッダーの使用を試みることができます。これは、使用する必要がある場合にのみ有効にする必要があります。

timezone

 

String

設定されている場合、Jackson はマーシャリング/アンマーシャリング時にタイムゾーンを使用します。

autoDiscoverObjectMapper

 

Boolean

true に設定すると、Jackson は objectMapper をレジストリーで検索します。

contentTypeHeader

 

Boolean

データ形式が Content-Type ヘッダーにデータ形式のタイプを設定する必要があるかどうか。たとえば、XML にマーシャリングするデータ形式の場合は application/xml、JSON にマーシャリングするデータ形式の場合は application/json です。

schemaResolver

 

String

転送中のデータのスキーマを検索するために使用されるオプションのスキーマリゾルバー。

autoDiscoverSchemaResolver

 

Boolean

無効にしない場合、SchemaResolver はレジストリーで検索されます。

4.4. カスタム AvroMapper の使用

マッピング設定をさらに制御する必要がある場合は、カスタム AvroMapper を使用するように JacksonAvroDataFormat を設定できます。

レジストリーに AvroMapper を 1 つ設定すると、Camel が自動的に検索し、この AvroMapper を使用します。

4.5. Spring Boot 自動設定

コンポーネントは、以下に記載される 19 のオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

5.2. URI 形式

aws2-cw://namespace[?options]
Copy to Clipboard Toggle word wrap

メトリクスが存在しない場合は作成されます。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 DSLDataFormat DSL を使用することもできます。

オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。

プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。

5.4. コンポーネントオプション

AWS CloudWatch コンポーネントは、以下に示す 18 のオプションをサポートします。

Expand
名前説明デフォルトタイプ

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 クライアントをインスタンス化する際にプロキシープロトコルを定義します。

列挙値:

  • HTTP
  • HTTPS

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
Copy to Clipboard Toggle word wrap

パスおよびクエリーパラメーターを使用します。

5.5.1. パスパラメーター(1 パラメーター)

Expand
名前説明デフォルトタイプ

namespace (producer)

必須。メトリクス namespace。

 

String

5.5.2. クエリーパラメーター(16 パラメーター)

Expand
名前説明デフォルトタイプ

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 クライアントをインスタンス化する際にプロキシープロトコルを定義します。

列挙値:

  • HTTP
  • HTTPS

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 によって評価されるメッセージヘッダー

Expand
ヘッダータイプ説明

CamelAwsCwMetricName

String

Amazon CW メトリクス名。

CamelAwsCwMetricValue

double

Amazon CW メトリクス値。

CamelAwsCwMetricUnit

String

Amazon CW メトリクスユニット。

CamelAwsCwMetricNamespace

String

Amazon CW メトリクス namespace。

CamelAwsCwMetricTimestamp

日付

Amazon CW メトリクスのタイムスタンプ。

CamelAwsCwMetricDimensionName

String

Amazon CW メトリクスディメンション名。

CamelAwsCwMetricDimensionValue

String

Amazon CW メトリクスディメンション値。

CamelAwsCwMetricDimensions

Map<String, String>

ディメンション名とディメンション値のマップ。

5.6.3. 高度な CloudWatchClient 設定

CloudWatchClient インスタンス設定をさらに制御する必要がある場合は、独自のインスタンスを作成し、URI から参照できます。

from("direct:start")
.to("aws2-cw://namespace?amazonCwClient=#client");
Copy to Clipboard Toggle word wrap

#client は、レジストリー内の CloudWatchClient を参照します。

5.7. 例

5.7.1. producer の例

from("direct:start")
  .to("aws2-cw://http://camel.apache.org/aws-cw");
Copy to Clipboard Toggle word wrap

次に、以下のようなものを送信します。

exchange.getIn().setHeader(Cw2Constants.METRIC_NAME, "ExchangesCompleted");
exchange.getIn().setHeader(Cw2Constants.METRIC_VALUE, "2.0");
exchange.getIn().setHeader(Cw2Constants.METRIC_UNIT, "Count");
Copy to Clipboard Toggle word wrap

5.8. Spring Boot 自動設定

コンポーネントは、以下に記載される 19 のオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

6.2. URI 形式

aws2-ddb://domainName[?options]
Copy to Clipboard Toggle word wrap

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 DSLDataFormat DSL を使用することもできます。

オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。

プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。

6.4. コンポーネントオプション

AWS DynamoDB コンポーネントは 22 のオプションをサポートします。これは以下に記載されています。

Expand
名前説明デフォルトタイプ

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)

実行する操作。

列挙値:

  • BatchGetItems
  • DeleteItem
  • DeleteTable
  • DescribeTable
  • GetItem
  • PutItem
  • クエリー
  • スキャン
  • UpdateItem
  • UpdateTable

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 クライアントをインスタンス化する際にプロキシープロトコルを定義します。

列挙値:

  • HTTP
  • HTTPS

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
Copy to Clipboard Toggle word wrap

パスおよびクエリーパラメーターを使用します。

6.5.1. パスパラメーター(1 パラメーター)

Expand
名前説明デフォルトタイプ

tableName (producer)

必須。現在作業中のテーブルの名前。

 

String

6.5.2. クエリーパラメーター(20 パラメーター)

Expand
名前説明デフォルトタイプ

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)

実行する操作。

列挙値:

  • BatchGetItems
  • DeleteItem
  • DeleteTable
  • DescribeTable
  • GetItem
  • PutItem
  • クエリー
  • スキャン
  • UpdateItem
  • UpdateTable

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 クライアントをインスタンス化する際にプロキシープロトコルを定義します。

列挙値:

  • HTTP
  • HTTPS

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 によって評価されるメッセージヘッダー

Expand
ヘッダータイプ説明

CamelAwsDdbBatchItems

Map<String, KeysAndAttributes>

プライマリーキーによって取得するテーブル名と対応する項目のマップ。

CamelAwsDdbTableName

String

この操作のテーブル名。

CamelAwsDdbKey

キー

テーブル内の各項目を一意に識別するプライマリーキー。

CamelAwsDdbReturnValues

String

変更前または変更後の属性の名前および値のペアを取得する場合は、このパラメーターを使用します (NONE、ALL_OLD、UPDATED_OLD、ALL_NEW、UPDATED_NEW)。

CamelAwsDdbUpdateCondition

Map<String, ExpectedAttributeValue>

条件変更の属性を指定します。

CamelAwsDdbAttributeNames

Collection<String>

属性名が指定されていない場合、すべての属性が返されます。

CamelAwsDdbConsistentRead

Boolean

true に設定すると、一貫性のある読み取りが発行されます。それ以外の場合は、最終的に一貫性が使用されます。

CamelAwsDdbIndexName

String

設定されている場合、クエリー操作のセカンダリーインデックスとして使用されます。

CamelAwsDdbItem

Map<String, AttributeValue>

アイテムの属性のマップ。アイテムを定義するプライマリーキー値を含める必要があります。

CamelAwsDdbExactCount

Boolean

true に設定すると、Amazon DynamoDB は、一致する項目とその属性のリストではなく、クエリーパラメーターに一致する項目の総数を返します。

CamelAwsDdbKeyConditions

Map<String, Condition>

このヘッダーはクエリーの選択基準を指定し、2 つの古いヘッダー CamelAwsDdbHashKeyValue および CamelAwsDdbScanRangeKeyCondition をマージします。

CamelAwsDdbStartKey

キー

以前のクエリーを続行するアイテムのプライマリーキー。

CamelAwsDdbHashKeyValue

AttributeValue

複合プライマリーキーのハッシュコンポーネントの値。

CamelAwsDdbLimit

Integer

返すアイテムの最大数。

CamelAwsDdbScanRangeKeyCondition

状態

クエリーに使用する属性値および比較 Operator のコンテナー。

CamelAwsDdbScanIndexForward

Boolean

インデックスの順方向または逆方向のトラバーサルを指定します。

CamelAwsDdbScanFilter

Map<String, Condition>

スキャン結果を評価し、目的の値のみを返します。

CamelAwsDdbUpdateValues

Map<String, AttributeValueUpdate>

更新の新しい値とアクションへの属性名のマップ。

6.6.3. BatchGetItems 操作中に設定されたメッセージヘッダー

Expand
ヘッダータイプ説明

CamelAwsDdbBatchResponse

Map<String,BatchResponse>

テーブル名およびテーブルの各項目属性。

CamelAwsDdbUnprocessedKeys

Map<String,KeysAndAttributes>

テーブルのマップと、現在の応答で処理されなかった対応するキーが含まれます。

6.6.4. DeleteItem 操作時に設定されたメッセージヘッダー

Expand
ヘッダータイプ説明

CamelAwsDdbAttributes

Map<String, AttributeValue>

操作によって返される属性の一覧。

6.6.5. DeleteTable 操作時に設定されたメッセージヘッダー

Expand
ヘッダータイプ説明

CamelAwsDdbProvisionedThroughput

  

ProvisionedThroughputDescription

 

このテーブルの ProvisionedThroughput プロパティーの値

CamelAwsDdbCreationDate

日付

このテーブルの DateTime の作成。

CamelAwsDdbTableItemCount

Long

このテーブルのアイテム数。

CamelAwsDdbKeySchema

KeySchema

このテーブルのプライマリーキーを識別する KeySchema。Camel 2.16.0 以降、このヘッダーのタイプは List<KeySchemaElement> であり、KeySchema ではありません。

CamelAwsDdbTableName

String

テーブル名。

CamelAwsDdbTableSize

Long

テーブルサイズ(バイト単位)。

CamelAwsDdbTableStatus

String

テーブルのステータス: CREATING、UPDATING、DELETING、ACTIVE

6.6.6. DescribeTable 操作中に設定されたメッセージヘッダー

Expand
ヘッダータイプ説明

CamelAwsDdbProvisionedThroughput

\{{ProvisionedThroughputDescription}}

このテーブルの ProvisionedThroughput プロパティーの値

CamelAwsDdbCreationDate

日付

このテーブルの DateTime の作成。

CamelAwsDdbTableItemCount

Long

このテーブルのアイテム数。

CamelAwsDdbKeySchema

\{{KeySchema}}

このテーブルのプライマリーキーを識別する KeySchema。

CamelAwsDdbTableName

String

テーブル名。

CamelAwsDdbTableSize

Long

テーブルサイズ(バイト単位)。

CamelAwsDdbTableStatus

String

テーブルのステータス: CREATING、UPDATING、DELETING、ACTIVE

CamelAwsDdbReadCapacity

Long

このテーブルの ReadCapacityUnits プロパティー。

CamelAwsDdbWriteCapacity

Long

このテーブルの WriteCapacityUnits プロパティー。

6.6.7. GetItem 操作時に設定されたメッセージヘッダー

Expand
ヘッダータイプ説明

CamelAwsDdbAttributes

Map<String, AttributeValue>

操作によって返される属性の一覧。

6.6.8. PutItem 操作中に設定されたメッセージヘッダー

Expand
ヘッダータイプ説明

CamelAwsDdbAttributes

Map<String, AttributeValue>

操作によって返される属性の一覧。

6.6.9. Query 操作時に設定されたメッセージヘッダー

Expand
ヘッダータイプ説明

CamelAwsDdbItems

List<java.util.Map<String,AttributeValue>>

操作によって返される属性の一覧。

CamelAwsDdbLastEvaluatedKey

キー

前の結果セットを含む、クエリー操作が停止した項目のプライマリーキー。

CamelAwsDdbConsumedCapacity

double

操作中に消費された、テーブルのプロビジョニングされたスループットのキャパシティーユニットの数。

CamelAwsDdbCount

Integer

応答のアイテム数。

6.6.10. Scan 操作時に設定されたメッセージヘッダー

Expand
ヘッダータイプ説明

CamelAwsDdbItems

List<java.util.Map<String,AttributeValue>>

操作によって返される属性の一覧。

CamelAwsDdbLastEvaluatedKey

キー

前の結果セットを含む、クエリー操作が停止した項目のプライマリーキー。

CamelAwsDdbConsumedCapacity

double

操作中に消費された、テーブルのプロビジョニングされたスループットのキャパシティーユニットの数。

CamelAwsDdbCount

Integer

応答のアイテム数。

CamelAwsDdbScannedCount

Integer

フィルターが適用される前の完全なスキャン内のアイテムの数。

6.6.11. UpdateItem 操作時に設定されたメッセージヘッダー

Expand
ヘッダータイプ説明

CamelAwsDdbAttributes

Map<String, AttributeValue>

操作によって返される属性の一覧。

6.6.12. 高度な AmazonDynamoDB 設定

AmazonDynamoDB インスタンス設定をさらに制御する必要がある場合は、独自のインスタンスを作成し、URI から参照できます。

from("direct:start")
.to("aws2-ddb://domainName?amazonDDBClient=#client");
Copy to Clipboard Toggle word wrap

#client は、レジストリー内の DynamoDbClient を参照します。

6.7. サポートされる producer 操作

  • BatchGetItems
  • DeleteItem
  • DeleteTable
  • DescribeTable
  • GetItem
  • PutItem
  • クエリー
  • スキャン
  • UpdateItem
  • UpdateTable

6.8. 例

6.8.1. producer の例

  • PutItem: このオペレーションは DynamoDB にエントリーを作成します
from("direct:start")
  .setHeader(Ddb2Constants.OPERATION, Ddb2Operations.PutItem)
  .setHeader(Ddb2Constants.CONSISTENT_READ, "true")
  .setHeader(Ddb2Constants.RETURN_VALUES, "ALL_OLD")
  .setHeader(Ddb2Constants.ITEM, attributeMap)
  .setHeader(Ddb2Constants.ATTRIBUTE_NAMES, attributeMap.keySet());
  .to("aws2-ddb://" + tableName + "?keyAttributeName=" + attributeName + "&keyAttributeType=" + KeyType.HASH
  + "&keyScalarType=" + ScalarAttributeType.S
  + "&readCapacity=1&writeCapacity=1");
Copy to Clipboard Toggle word wrap

Maven ユーザーは、以下の依存関係を pom.xml に追加する必要があります。

pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws2-ddb</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

この場合の 3.18.6 は、Camel の実際のバージョンに置き換える必要があります。

6.9. Spring Boot 自動設定

コンポーネントは、以下に記載される 40 のオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

7.2. URI 形式

aws2-kinesis://stream-name[?options]
Copy to Clipboard Toggle word wrap

ストリームは、使用する前に作成する必要があります。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 DSLDataFormat DSL を使用することもできます。

オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。

プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。

7.4. コンポーネントオプション

AWS DynamoDB コンポーネントは 22 のオプションをサポートします。これは以下に記載されています。

Expand
名前説明デフォルトタイプ

amazonKinesisClient (共通)

Autowired このエンドポイントに対するすべての要求に使用する Amazon Kinesis クライアント。

 

KinesisClient

cborEnabled (共通)

このオプションは、実行中に CBOR_ENABLED プロパティーを設定します。

true

boolean

configuration (共通)

コンポーネントの設定。

 

Kinesis2Configuration

overrideEndpoint (共通)

エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。

false

boolean

proxyHost (共通)

Kinesis クライアントをインスタンス化する際にプロキシーホストを定義します。

 

String

proxyPort (共通)

Kinesis クライアントをインスタンス化する際にプロキシーポートを定義します。

 

Integer

proxyProtocol (共通)

Kinesis クライアントをインスタンス化する際にプロキシープロトコルを定義します。

列挙値:

  • HTTP
  • HTTPS

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 ストリーム内でレコードの取得を開始する場所を定義します。

列挙値:

  • AT_SEQUENCE_NUMBER
  • AFTER_SEQUENCE_NUMBER
  • TRIM_HORIZON
  • LATEST
  • AT_TIMESTAMP
  • null

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
  • fail
  • silent

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
Copy to Clipboard Toggle word wrap

パスおよびクエリーパラメーターを使用します。

7.5.1. パスパラメーター(1 パラメーター)

Expand
名前説明デフォルトタイプ

streamName (共通)

必須 ストリームの名前。

 

String

7.5.2. クエリーパラメーター (38 パラメーター)

Expand
名前説明デフォルトタイプ

amazonKinesisClient (共通)

Autowired このエンドポイントに対するすべての要求に使用する Amazon Kinesis クライアント。

 

KinesisClient

cborEnabled (共通)

このオプションは、実行中に CBOR_ENABLED プロパティーを設定します。

true

boolean

overrideEndpoint (共通)

エンドポイントをオーバーライドする必要性を設定します。このオプションは uriEndpointOverride オプションと併用する必要があります。

false

boolean

proxyHost (共通)

Kinesis クライアントをインスタンス化する際にプロキシーホストを定義します。

 

String

proxyPort (共通)

Kinesis クライアントをインスタンス化する際にプロキシーポートを定義します。

 

Integer

proxyProtocol (共通)

Kinesis クライアントをインスタンス化する際にプロキシープロトコルを定義します。

列挙値:

  • HTTP
  • HTTPS

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 ストリーム内でレコードの取得を開始する場所を定義します。

列挙値:

  • AT_SEQUENCE_NUMBER
  • AFTER_SEQUENCE_NUMBER
  • TRIM_HORIZON
  • LATEST
  • AT_TIMESTAMP
  • null

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
  • fail
  • silent

ignore

Kinesis2ShardClosedStrategyEnum

shardId (consumer)

Kinesis ストリームでどの shardId からレコードを取得するかを定義します。

 

String

exceptionHandler (consumer (上級))

consumer によるカスタム ExceptionHandler の使用を許可します。bridgeErrorHandler オプションが有効な場合は、このオプションは使用されないことに注意してください。デフォルトでは、consumer は例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。

 

ExceptionHandler

exchangePattern (consumer (上級))

consumer がエクスチェンジを作成する際に交換パターンを設定します。

列挙値:

  • InOnly
  • InOut
  • InOptionalOut
 

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
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • OFF

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
  • SECONDS
  • 時間

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 によって設定されるメッセージヘッダー

Expand
ヘッダータイプ説明

CamelAwsKinesisSequenceNumber

String

このレコードのシーケンス番号。これは、サイズが API によって定義されていないため、文字列として表されます。数値型として使用する場合は、次を使用します

CamelAwsKinesisApproximateArrivalTimestamp

String

AWS がレコードの到着時間として割り当てた時間。

CamelAwsKinesisPartitionKey

String

データレコードが割り当てられているストリーム内のシャードを識別します。

7.7.3. AmazonKinesis の設定

次に、amazonKinesisClient URI オプションで KinesisClient を参照する必要があります。

from("aws2-kinesis://mykinesisstream?amazonKinesisClient=#kinesisClient")
  .to("log:out?showAll=true");
Copy to Clipboard Toggle word wrap

7.7.4. AWS 認証情報の指定

新しい ClientConfiguration インスタンスを作成するときのデフォルトである DefaultAWSCredentialsProviderChain を使用して認証情報を取得することを推奨しますが、createClient (…) を呼び出すときに別の AWSCredentialsProvider を指定できます。

Expand
ヘッダータイプ説明

CamelAwsKinesisPartitionKey

String

このレコードを保存するために Kinesis に渡す PartitionKey。

CamelAwsKinesisSequenceNumber

String

このレコードのシーケンス番号を示すオプションのパラメーター。

Expand
ヘッダータイプ説明

CamelAwsKinesisSequenceNumber

String

Response Syntax で定義されているレコードのシーケンス番号

CamelAwsKinesisShardId

String

レコードが保存された場所のシャード ID

7.8. 依存関係

Maven ユーザーは、以下の依存関係を pom.xml に追加する必要があります。

pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws2-kinesis</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

この場合の 3.18.6 は、Camel の実際のバージョンに置き換える必要があります。

7.9. Spring Boot 自動設定

コンポーネントは、以下に記載される 40 のオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

8.2. URI 形式

aws2-lambda://functionName[?options]
Copy to Clipboard Toggle word wrap

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 DSLDataFormat DSL を使用することもできます。

オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。

プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。

8.4. コンポーネントオプション

AWS Lambda コンポーネントは、以下に示す 16 のオプションをサポートしています。

Expand
名前説明デフォルトタイプ

configuration (producer)

コンポーネントの設定。

 

Lambda2 設定

lazyStartProducer (producer)

最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。

false

boolean

operation (producer)

実行する操作。listFunctions、getFunction、createFunction、deleteFunction、または invokeFunction のいずれかです。

列挙値:

  • listFunctions
  • getFunction
  • createAlias
  • deleteAlias
  • getAlias
  • listAliases
  • createFunction
  • deleteFunction
  • invokeFunction
  • updateFunction
  • createEventSourceMapping
  • deleteEventSourceMapping
  • listEventSourceMapping
  • listTags
  • tagResource
  • untagResource
  • publishVersion
  • listVersions

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 クライアントをインスタンス化するときにプロキシープロトコルを定義します。

列挙値:

  • HTTP
  • HTTPS

HTTPS

Protocol

accessKey (security)

Amazon AWS Access Key。

 

String

secretKey (security)

Amazon AWS Secret Key。

 

String

8.5. エンドポイントオプション

AWS Lambda エンドポイントは、URI 構文を使用して設定されます。

aws2-lambda:function
Copy to Clipboard Toggle word wrap

パスおよびクエリーパラメーターを使用します。

8.5.1. パスパラメーター(1 パラメーター)

Expand
名前説明デフォルトタイプ

function (producer)

必須 Lambda 関数の名前。

 

String

8.5.2. クエリーパラメーター (14 パラメーター)

Expand
名前説明デフォルトタイプ

lazyStartProducer (producer)

最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。

false

boolean

operation (producer)

実行する操作。listFunctions、getFunction、createFunction、deleteFunction、または invokeFunction のいずれかです。

列挙値:

  • listFunctions
  • getFunction
  • createAlias
  • deleteAlias
  • getAlias
  • listAliases
  • createFunction
  • deleteFunction
  • invokeFunction
  • updateFunction
  • createEventSourceMapping
  • deleteEventSourceMapping
  • listEventSourceMapping
  • listTags
  • tagResource
  • untagResource
  • publishVersion
  • listVersions

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 クライアントをインスタンス化するときにプロキシープロトコルを定義します。

列挙値:

  • HTTP
  • HTTPS

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 によって評価されるメッセージヘッダー

Expand
操作ヘッダータイプ説明必須

すべて

CamelAwsLambdaOperation

String

実行する操作。クエリーパラメーターとして渡されたオーバーライド操作

はい

createFunction

CamelAwsLambdaS3Bucket

String

デプロイパッケージを含む .zip ファイルが保存される Amazon S3 バケット名。このバケットは、Lambda 関数を作成しているのと同じ AWS リージョンに存在する必要があります。

いいえ

createFunction

CamelAwsLambdaS3Key

String

アップロードする Amazon S3 オブジェクト (デプロイパッケージ) のキー名。

いいえ

createFunction

CamelAwsLambdaS3ObjectVersion

String

アップロードする Amazon S3 オブジェクト (デプロイパッケージ) のバージョン。

いいえ

createFunction

CamelAwsLambdaZipFile

String

zip ファイル (デプロイメントパッケージ) のローカルパス。zip ファイルの内容をメッセージ本文に入れることもできます。

いいえ

createFunction

CamelAwsLambdaRole

String

Lambda が関数を実行して他のアマゾンウェブサービス (AWS) リソースにアクセスするときに引き受ける IAM ロールの Amazon リソースネーム (ARN)。

はい

createFunction

CamelAwsLambdaRuntime

String

アップロードする Lambda 関数のランタイム環境。(nodejs、nodejs4.3、nodejs6.10、java8、python2.7、python3.6、dotnetcore1.0、odejs4.3-edge)

はい

createFunction

CamelAwsLambdaHandler

String

実行を開始するために Lambda が呼び出すコード内の関数。Node.js の場合は、関数の module-name.export 値です。Java の場合は、package.class-name::handler または package.class-name にすることができます。

はい

createFunction

CamelAwsLambdaDescription

String

ユーザー提供の説明。

いいえ

createFunction

CamelAwsLambdaTargetArn

String

Amazon SQS キューまたは Amazon SNS トピックのターゲット ARN (Amazon リソースネーム) を含む親オブジェクト。

いいえ

createFunction

CamelAwsLambdaMemorySize

Integer

関数用に設定したメモリーサイズ (MB 単位)。64 MB の倍数である必要があります。

いいえ

createFunction

CamelAwsLambdaKMSKeyArn

String

関数の環境変数を暗号化するために使用される KMS キーの Amazon リソースネーム (ARN)。指定しない場合、AWS Lambda はデフォルトのサービスキーを使用します。

いいえ

createFunction

CamelAwsLambdaPublish

Boolean

このブール値パラメーターを使用して、AWS Lambda に Lambda 関数を作成し、バージョンをアトミック操作として発行するようにリクエストできます。

いいえ

createFunction

CamelAwsLambdaTimeout

Integer

Lambda が関数を終了する関数実行時間。デフォルトは 3 秒です。

いいえ

createFunction

CamelAwsLambdaTracingConfig

String

関数のトレース設定 (Active または PassThrough)。

いいえ

createFunction

CamelAwsLambdaEnvironmentVariables

Map<String, String>

環境の設定を表すキーと値のペア。

いいえ

createFunction

CamelAwsLambdaEnvironmentTags

Map<String, String>

新しい関数に割り当てられたタグ (キーと値のペア) のリスト。

いいえ

createFunction

CamelAwsLambdaSecurityGroupIds

List<String>

Lambda 関数が VPC 内のリソースにアクセスする場合、VPC 内の 1 つ以上のセキュリティーグループ ID のリスト。

いいえ

createFunction

CamelAwsLambdaSubnetIds

List<String>

Lambda 関数が VPC 内のリソースにアクセスする場合、VPC 内の 1 つ以上のサブネット ID のリスト。

いいえ

createAlias

CamelAwsLambdaFunctionVersion

String

エイリアスに設定する関数のバージョン

はい

createAlias

CamelAwsLambdaAliasFunctionName

String

エイリアスに設定する関数名

はい

createAlias

CamelAwsLambdaAliasFunctionDescription

String

エイリアスに設定する関数の説明

いいえ

deleteAlias

CamelAwsLambdaAliasFunctionName

String

エイリアスの関数名

はい

getAlias

CamelAwsLambdaAliasFunctionName

String

エイリアスの関数名

はい

listAliases

CamelAwsLambdaFunctionVersion

String

エイリアスに設定する関数のバージョン

いいえ

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");
Copy to Clipboard Toggle word wrap

そして送ることで

template.send("direct:createFunction", ExchangePattern.InOut, new Processor() {
    @Override
    public void process(Exchange exchange) throws Exception {
        exchange.getIn().setHeader(Lambda2Constants.RUNTIME, "nodejs6.10");
        exchange.getIn().setHeader(Lambda2Constants.HANDLER, "GetHelloWithName.handler");
        exchange.getIn().setHeader(Lambda2Constants.DESCRIPTION, "Hello with node.js on Lambda");
        exchange.getIn().setHeader(Lambda2Constants.ROLE,
            "arn:aws:iam::643534317684:role/lambda-execution-role");
        ClassLoader classLoader = getClass().getClassLoader();
        File file = new File(
             classLoader
                 .getResource("org/apache/camel/component/aws2/lambda/function/node/GetHelloWithName.zip")
                 .getFile());
        FileInputStream inputStream = new FileInputStream(file);
        exchange.getIn().setBody(inputStream);
    }
});
Copy to Clipboard Toggle word wrap

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")
Copy to Clipboard Toggle word wrap

このようにして、この操作に特に関連するヘッダーやオプションを渡す必要なく、リクエストを直接渡します。

8.10. Dependencies

Maven ユーザーは、以下の依存関係を pom.xml に追加する必要があります。

pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws2-lambda</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

この場合の 3.18.6 は、Camel の実際のバージョンに置き換える必要があります。

8.11. Spring Boot 自動設定

コンポーネントは、以下に記載される 17 のオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

9.2. URI 形式

aws2-s3://bucketNameOrArn[?options]
Copy to Clipboard Toggle word wrap

バケットがまだ存在しない場合は作成されます。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 DSLDataFormat DSL を使用することもできます。

オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。

プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。

9.4. コンポーネントオプション

AWS S3 Storage Service コンポーネントは、以下に示す 50 のオプションをサポートしています。

Expand
名前説明デフォルトタイプ

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 クライアントをインスタンス化するときにプロキシープロトコルを定義します。

列挙値:

  • HTTP
  • HTTPS

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
  • random

progressive

AWSS3NamingStrategyEnum

operation (producer)

ユーザーがアップロードだけをしたくない場合に行う操作。

列挙値:

  • copyObject
  • listObjects
  • deleteObject
  • deleteBucket
  • listBuckets
  • getObject
  • getObjectRange
  • createDownloadLink
 

AWS2S3Operations

partSize (producer)

マルチパートのアップロードで使用される partSize を設定します。デフォルトのサイズは 25M です。

26214400

long

restartingPolicy (producer)

ストリーミングのアップロードモードで使用する再起動ポリシー。

列挙値:

  • override
  • lastPart

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
Copy to Clipboard Toggle word wrap

パスおよびクエリーパラメーターを使用します。

9.5.1. パスパラメーター(1 パラメーター)

Expand
名前説明デフォルトタイプ

bucketNameOrArn (共通)

必須 のバケット名または ARN。

 

String

9.5.2. クエリーパラメーター (68 パラメーター)

Expand
名前説明デフォルトタイプ

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 クライアントをインスタンス化するときにプロキシープロトコルを定義します。

列挙値:

  • HTTP
  • HTTPS

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 がエクスチェンジを作成する際に交換パターンを設定します。

列挙値:

  • InOnly
  • InOut
  • InOptionalOut
 

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
  • random

progressive

AWSS3NamingStrategyEnum

operation (producer)

ユーザーがアップロードだけをしたくない場合に行う操作。

列挙値:

  • copyObject
  • listObjects
  • deleteObject
  • deleteBucket
  • listBuckets
  • getObject
  • getObjectRange
  • createDownloadLink
 

AWS2S3Operations

partSize (producer)

マルチパートのアップロードで使用される partSize を設定します。デフォルトのサイズは 25M です。

26214400

long

restartingPolicy (producer)

ストリーミングのアップロードモードで使用する再起動ポリシー。

列挙値:

  • override
  • lastPart

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
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • OFF

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
  • SECONDS
  • 時間

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");
Copy to Clipboard Toggle word wrap

9.7.1. S3 producer によって評価されるメッセージヘッダー

Expand
ヘッダータイプ説明

CamelAwsS3BucketName

String

このオブジェクトが保存されるバケット名、または現在の操作に使用されるバケット名

CamelAwsS3BucketDestinationName

String

現在の操作に使用されるバケット宛先名

CamelAwsS3ContentLength

Long

このオブジェクトのコンテンツの長さ。

CamelAwsS3ContentType

String

このオブジェクトのコンテンツタイプ。

CamelAwsS3ContentControl

String

このオブジェクトのコンテンツコントロール。

CamelAwsS3ContentDisposition

String

このオブジェクトのコンテンツの配置。

CamelAwsS3ContentEncoding

String

このオブジェクトのコンテンツエンコーディング。

CamelAwsS3ContentMD5

String

このオブジェクトの md5 チェックサム。

CamelAwsS3DestinationKey

String

現在の操作に使用される宛先キー

CamelAwsS3Key

String

このオブジェクトが格納されるキー、または現在の操作に使用されるキー

CamelAwsS3LastModified

java.util.Date

このオブジェクトの最終変更のタイムスタンプ。

CamelAwsS3Operation

String

実行する操作。許可されている値は、copyObject、deleteObject、listBuckets、deleteBucket、listObjects です。

CamelAwsS3StorageClass

String

このオブジェクトのストレージクラス。

CamelAwsS3CannedAcl

String

オブジェクトに適用されるデフォルトの ACL。許可されている値については、software.amazon.awssdk.services.s3.model.ObjectCannedACL を参照してください。

CamelAwsS3Acl

software.amazon.awssdk.services.s3.model.BucketCannedACL

適切に設定された Amazon S3 アクセスコントロールリストオブジェクト。詳細については、software.amazon.awssdk.services.s3.model.BucketCannedACL を参照してください。

CamelAwsS3ServerSideEncryption

String

AWS が管理するキーを使用してオブジェクトを暗号化するときに、サーバー側の暗号化アルゴリズムを設定します。たとえば、AES256 を使用します。

CamelAwsS3VersionId

String

現在の操作から格納または返されるオブジェクトのバージョン ID

CamelAwsS3Metadata

Map<String, String>

S3 のオブジェクトと共に保存されるメタデータのマップ。メタデータの詳細。

9.7.2. S3 producer によって設定されたメッセージヘッダー

Expand
ヘッダータイプ説明

CamelAwsS3ETag

String

新しくアップロードされたオブジェクトの ETag 値。

CamelAwsS3VersionId

String

新しくアップロードされたオブジェクトの オプション のバージョン ID。

9.7.3. S3 consumer によって設定されたメッセージヘッダー

Expand
ヘッダータイプ説明

CamelAwsS3Key

String

このオブジェクトが格納されるキー。

CamelAwsS3BucketName

String

このオブジェクトが含まれるバケットの名前。

CamelAwsS3ETag

String

RFC 1864 に従って、関連付けられたオブジェクトの 16 進数でエンコードされた 128 ビット MD5 ダイジェスト。このデータは、呼び出し元によって受信されたデータが Amazon S3 によって送信されたデータと同じであることを確認するための整合性チェックとして使用されます。

CamelAwsS3LastModified

日付

Last-Modified ヘッダーの値。Amazon S3 が関連付けられたオブジェクトへの変更を最後に記録した日時を示します。

CamelAwsS3VersionId

String

関連する Amazon S3 オブジェクトのバージョン ID (利用可能な場合)。バージョン ID は、オブジェクトのバージョニングが有効になっている Amazon S3 バケットにオブジェクトがアップロードされた場合にのみ、オブジェクトに割り当てられます。

CamelAwsS3ContentType

String

関連付けられたオブジェクトに格納されているコンテンツのタイプを示す Content-Type HTTP ヘッダー。このヘッダーの値は、標準の MIME タイプです。

CamelAwsS3ContentMD5

String

RFC 1864 に従って、関連付けられたオブジェクト (ヘッダーを含まないコンテンツ) の base64 でエンコードされた 128 ビット MD5 ダイジェスト。このデータは、Amazon S3 が受信したデータが発信者が送信したデータと同じであることを確認するためのメッセージ整合性チェックとして使用されます。

CamelAwsS3ContentLength

Long

関連付けられたオブジェクトのサイズをバイト単位で示す Content-Length HTTP ヘッダー。

CamelAwsS3ContentEncoding

String

オブジェクトに適用されたコンテンツエンコーディングと、Content-Type フィールドによって参照されるメディアタイプを取得するために適用する必要があるデコードメカニズムを指定する、オプション の Content-Encoding HTTP ヘッダー。

CamelAwsS3ContentDisposition

String

オプション の Content-Disposition HTTP ヘッダー。保存するオブジェクトの推奨ファイル名などの表示情報を指定します。

CamelAwsS3ContentControl

String

ユーザーが HTTP 要求/応答チェーンに沿ってキャッシュ動作を指定できるようにする、オプション の Cache-Control HTTP ヘッダー。

CamelAwsS3ServerSideEncryption

String

AWS が管理するキーを使用してオブジェクトを暗号化するときのサーバー側の暗号化アルゴリズム。

CamelAwsS3Metadata

Map<String, String>

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");
Copy to Clipboard Toggle word wrap

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");
Copy to Clipboard Toggle word wrap

このようにして、KMS キー 3f0637ad-296a-3dfe-a796-e60654fb128c を使用してファイル test.txt を暗号化するよう S3 に依頼します。このファイルのダウンロードを要求すると、ダウンロードの直前に復号化が行われます。

9.7.7. 静的認証情報とデフォルトの認証情報プロバイダーの比較

useDefaultCredentialsProvider オプションを指定し、これを true に設定することにより、明示的な静的認証情報の使用を回避することが可能です。

  • Java システムプロパティー - aws.accessKeyId および aws.secretKey
  • 環境変数: AWS_ACCESS_KEY_ID および AWS_SECRET_ACCESS_KEY。
  • AWS STS の Web ID トークン。
  • 共有認証情報および設定ファイル。
  • Amazon ECS コンテナー認証情報 - 環境変数 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI が設定されている場合は、Amazon ECS からロードされます。
  • Amazon EC2 インスタンスプロファイルの認証情報。

これに関する詳細情報は、AWS 認証情報のドキュメント を参照してください。

9.7.8. S3 Producer 操作例

  • 単一のアップロード: 本文の内容に基づいてファイルを S3 にアップロードします。
  from("direct:start").process(new Processor() {

      @Override
      public void process(Exchange exchange) throws Exception {
          exchange.getIn().setHeader(S3Constants.KEY, "camel.txt");
          exchange.getIn().setBody("Camel rocks!");
      }
  })
  .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap

この操作により、コンテンツ Camel rocks! を含むファイル camel.txt がアップロードされます。mycamelbucket バケット内

  • マルチパートアップロード: 本文のコンテンツに基づいて S3 へのファイルのマルチパートアップロードを実行します。
  from("direct:start").process(new Processor() {

      @Override
      public void process(Exchange exchange) throws Exception {
          exchange.getIn().setHeader(AWS2S3Constants.KEY, "empty.txt");
          exchange.getIn().setBody(new File("src/empty.txt"));
      }
  })
  .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&multiPartUpload=true&autoCreateBucket=true&partSize=1048576")
  .to("mock:result");
Copy to Clipboard Toggle word wrap

この操作は、mycamelbucket バケット内のファイル src/empty.txt のコンテンツに基づいて、ファイル empty.txt のマルチパートアップロードを実行します。

  • CopyObject: あるバケットから別のバケットにオブジェクトをコピーします
  from("direct:start").process(new Processor() {

      @Override
      public void process(Exchange exchange) throws Exception {
          exchange.getIn().setHeader(S3Constants.BUCKET_DESTINATION_NAME, "camelDestinationBucket");
          exchange.getIn().setHeader(S3Constants.KEY, "camelKey");
          exchange.getIn().setHeader(S3Constants.DESTINATION_KEY, "camelDestinationKey");
      }
  })
  .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=copyObject")
  .to("mock:result");
Copy to Clipboard Toggle word wrap

この操作は、ヘッダー camelDestinationKey で表された名前を持つオブジェクトを、バケット mycamelbucket から camelDestinationBucket バケットにコピーします。

  • DeleteObject: バケットからオブジェクトを削除します
  from("direct:start").process(new Processor() {

      @Override
      public void process(Exchange exchange) throws Exception {
          exchange.getIn().setHeader(S3Constants.KEY, "camelKey");
      }
  })
  .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=deleteObject")
  .to("mock:result");
Copy to Clipboard Toggle word wrap

この操作により、オブジェクト camelKey がバケット mycamelbucket から削除されます。

  • ListBuckets: このリージョン内のこのアカウントのバケットを一覧表示します
  from("direct:start")
  .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=listBuckets")
  .to("mock:result");
Copy to Clipboard Toggle word wrap

この操作は、このアカウントのバケットを一覧表示します

  • DeleteBucket: URI パラメーターまたはヘッダーとして指定されたバケットを削除します
  from("direct:start")
  .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=deleteBucket")
  .to("mock:result");
Copy to Clipboard Toggle word wrap

この操作により、バケット mycamelbucket が削除されます

  • ListObjects: 特定のバケット内のこのオペレーションリストオブジェクト
  from("direct:start")
  .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=listObjects")
  .to("mock:result");
Copy to Clipboard Toggle word wrap

この操作は、mycamelbucket バケット内のオブジェクトを一覧表示します

  • GetObject: 特定のバケット内の単一のオブジェクトを取得します
  from("direct:start").process(new Processor() {

      @Override
      public void process(Exchange exchange) throws Exception {
          exchange.getIn().setHeader(S3Constants.KEY, "camelKey");
      }
  })
  .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=getObject")
  .to("mock:result");
Copy to Clipboard Toggle word wrap

このオペレーションは、mycamelbucket バケットの camelKey オブジェクトに関連する S3Object インスタンスを返します。

  • GetObjectRange: 特定のバケット内の単一のオブジェクト範囲を取得します
  from("direct:start").process(new Processor() {

      @Override
      public void process(Exchange exchange) throws Exception {
          exchange.getIn().setHeader(S3Constants.KEY, "camelKey");
          exchange.getIn().setHeader(S3Constants.RANGE_START, "0");
          exchange.getIn().setHeader(S3Constants.RANGE_END, "9");
      }
  })
  .to("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&operation=getObjectRange")
  .to("mock:result");
Copy to Clipboard Toggle word wrap

このオペレーションは、0 から 9 までのバイトを含む、mycamelbucket バケット内の camelKey オブジェクトに関連する S3Object インスタンスを返します。

  • CreateDownloadLink: S3 Presigner を介してダウンロードリンクを返します。
  from("direct:start").process(new Processor() {

      @Override
      public void process(Exchange exchange) throws Exception {
          exchange.getIn().setHeader(S3Constants.KEY, "camelKey");
      }
  })
  .to("aws2-s3://mycamelbucket?accessKey=xxx&secretKey=yyy&region=region&operation=createDownloadLink")
  .to("mock:result");
Copy to Clipboard Toggle word wrap

この操作は、バケット mycamelbucket およびリージョン region 内のファイル camel-key のダウンロードリンク URL を返します。

9.8. ストリーミングアップロードモード

ストリームモードを有効にすると、ユーザーはマルチパートアップロードを利用することで、データの次元を事前に知らなくても S3 にデータをアップロードできます。アップロードは、batchSize が完了したか、batchMessageNumber に達したときに完了します。次の 2 つの命名戦略が考えられます。

  • progressive

    プログレッシブ戦略では、各ファイルには keyName オプションとプログレッシブカウンターで設定された名前が付けられ、最終的にはファイル拡張子 (存在する場合) が付けられます。

  • ランダム

    ランダム戦略では、keyName の後に UUID が追加され、最終的にファイル拡張子が追加されます。

たとえば、以下のようになります。

from(kafka("topic1").brokers("localhost:9092"))
        .log("Kafka Message is: ${body}")
        .to(aws2S3("camel-bucket").streamingUploadMode(true).batchMessageNumber(25).namingStrategy(AWS2S3EndpointBuilderFactory.AWSS3NamingStrategyEnum.progressive).keyName("{{kafkaTopic1}}/{{kafkaTopic1}}.txt"));

from(kafka("topic2").brokers("localhost:9092"))
         .log("Kafka Message is: ${body}")
         .to(aws2S3("camel-bucket").streamingUploadMode(true).batchMessageNumber(25).namingStrategy(AWS2S3EndpointBuilderFactory.AWSS3NamingStrategyEnum.progressive).keyName("{{kafkaTopic2}}/{{kafkaTopic2}}.txt"));
Copy to Clipboard Toggle word wrap

バッチのデフォルトサイズは 1 Mb ですが、必要に応じて調整できます。

producer ルートを停止すると、producer はバッファリングされた残りのメッセージをフラッシュし、アップロードを完了します。

ストリーミングアップロードでは、producer を離れたところから再開できます。この機能は、プログレッシブ命名戦略を使用する場合にのみ重要であることに注意してください。

restartingPolicy を lastPart に設定することで、ファイルとコンテンツのアップロードを producer が残した最後のパーツ番号から再開します。

  1. プログレッシブ命名戦略でルートを開始し、keyname は camel.txt に等しく、batchMessageNumber は 20 に等しく、restartingPolicy は lastPart に等しい - 70 個のメッセージを送信します。
  2. ルートを停止
  3. S3 バケットには、次の 4 つのファイルが表示されます: * camel.txt

    • camel-1.txt
    • camel-2.txt
    • camel-3.txt

      最初の 3 つには 20 件のメッセージが含まれますが、最後の 1 つには 10 件しかありません。

  4. ルートを再開します。
  5. メッセージを 25 回送信します。
  6. ルートを停止します。
  7. バケットには他に 2 つのファイルがあります。camel-5.txt と camel-6.txt です。最初のファイルには 20 件のメッセージがあり、2 つ目のファイルには 5 件のメッセージがあります。
  8. どうぞ

ランダムな命名戦略を使用する場合、これは必要ありません。

反対に、オーバーライドの 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"));
Copy to Clipboard Toggle word wrap

この場合、アップロードは 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");
Copy to Clipboard Toggle word wrap

この場合、消費されたオブジェクトは myothercamelbucket バケットに移動され、元のバケットから削除されます (deleteAfterRead がデフォルトで true に設定されているため)。

ファイルを別のバケットに移動するときに、キーの接頭辞/接尾辞を使用することもできます。オプションは、destinationBucketPrefix と destinationBucketSuffix です。

上記の例を取ると、次のようなことができます。

  from("aws2-s3://mycamelbucket?amazonS3Client=#amazonS3Client&moveAfterRead=true&destinationBucket=myothercamelbucket&destinationBucketPrefix=RAW(pre-)&destinationBucketSuffix=RAW(-suff)")
  .to("mock:result");
Copy to Clipboard Toggle word wrap

この場合、消費されたオブジェクトは myothercamelbucket バケットに移動され、元のバケットから削除されます (deleteAfterRead がデフォルトで true に設定されているため)。

したがって、ファイル名が test の場合、myothercamelbucket に pre-test-suff というファイルが表示されます。

9.12. 顧客キーを暗号化として使用する

また、カスタマーキーサポート (KMS を使用する代替手段) も導入しました。次のコードは例を示しています。

String key = UUID.randomUUID().toString();
byte[] secretKey = generateSecretKey();
String b64Key = Base64.getEncoder().encodeToString(secretKey);
String b64KeyMd5 = Md5Utils.md5AsBase64(secretKey);

String awsEndpoint = "aws2-s3://mycamel?autoCreateBucket=false&useCustomerKey=true&customerKeyId=RAW(" + b64Key + ")&customerKeyMD5=RAW(" + b64KeyMd5 + ")&customerAlgorithm=" + AES256.name();

from("direct:putObject")
    .setHeader(AWS2S3Constants.KEY, constant("test.txt"))
    .setBody(constant("Test"))
    .to(awsEndpoint);
Copy to Clipboard Toggle word wrap

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")
Copy to Clipboard Toggle word wrap

このようにして、この操作に特に関連するヘッダーやオプションを渡す必要なく、リクエストを直接渡します。

9.14. S3 クライアントを作成し、コンポーネントをレジストリーに追加する

S3 クライアントの設定もできる AWS2S3Configuration を使用して、高度な設定を実行する場合があります。次の例に示すように、コンポーネント設定で S3 クライアントを作成および設定できます。

String awsBucketAccessKey = "your_access_key";
String awsBucketSecretKey = "your_secret_key";

S3Client s3Client = S3Client.builder().credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create(awsBucketAccessKey, awsBucketSecretKey)))
                .region(Region.US_EAST_1).build();

AWS2S3Configuration configuration = new AWS2S3Configuration();
configuration.setAmazonS3Client(s3Client);
configuration.setAutoDiscoverClient(true);
configuration.setBucketName("s3bucket2020");
configuration.setRegion("us-east-1");
Copy to Clipboard Toggle word wrap

これで、ルートを初期化する前に、(上で作成した設定オブジェクトを使用して) S3 コンポーネントを設定し、configure メソッドでレジストリーに追加できます。

AWS2S3Component s3Component = new AWS2S3Component(getContext());
s3Component.setConfiguration(configuration);
s3Component.setLazyStartProducer(true);
camelContext.addComponent("aws2-s3", s3Component);
Copy to Clipboard Toggle word wrap

これで、キャメルルートに実装されたすべての操作にコンポーネントが使用されます。

9.15. Dependencies

Maven ユーザーは、以下の依存関係を pom.xml に追加する必要があります。

pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws2-s3</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

この場合の 3.18.6 は、Camel の実際のバージョンに置き換える必要があります。

9.16. Spring Boot 自動設定

コンポーネントは、以下に記載される 51 のオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

10.2. URI 形式

aws2-sns://topicNameOrArn[?options]
Copy to Clipboard Toggle word wrap

トピックがまだ存在しない場合は作成されます。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 DSLDataFormat DSL を使用することもできます。

オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。

プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。

10.4. コンポーネントオプション

AWS Simple Notification System (SNS) コンポーネントは、以下に示す 24 のオプションをサポートしています。

Expand
名前説明デフォルトタイプ

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
  • useContentBasedDeduplication

useExchangeId

String

messageGroupIdStrategy (producer)

FIFO トピックのみ。メッセージに messageGroupId を設定するストラテジー。useConstant、useExchangeId、usePropertyValue のいずれかをオプションとして使用できます。usePropertyValue オプションでは、CamelAwsMessageGroupId プロパティーの値が使用されます。

列挙値:

  • useConstant
  • useExchangeId
  • usePropertyValue
 

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 クライアントをインスタンス化するときにプロキシープロトコルを定義します。

列挙値:

  • HTTP
  • HTTPS

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
Copy to Clipboard Toggle word wrap

パスおよびクエリーパラメーターを使用します。

10.5.1. パスパラメーター(1 パラメーター)

Expand
名前説明デフォルトタイプ

topicNameOrArn (producer)

必須 のトピック名または ARN。

 

String

10.5.2. クエリーパラメーター (23 パラメーター)

Expand
名前説明デフォルトタイプ

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
  • useContentBasedDeduplication

useExchangeId

String

messageGroupIdStrategy (producer)

FIFO トピックのみ。メッセージに messageGroupId を設定するストラテジー。useConstant、useExchangeId、usePropertyValue のいずれかをオプションとして使用できます。usePropertyValue オプションでは、CamelAwsMessageGroupId プロパティーの値が使用されます。

列挙値:

  • useConstant
  • useExchangeId
  • usePropertyValue
 

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 クライアントをインスタンス化するときにプロキシープロトコルを定義します。

列挙値:

  • HTTP
  • HTTPS

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 によって評価されるメッセージヘッダー

Expand
ヘッダータイプ説明

CamelAwsSnsSubject

String

Amazon SNS メッセージの件名。設定されていない場合は、SnsConfiguration の件名が使用されます。

10.6.3. SNS producer によって設定されるメッセージヘッダー

Expand
ヘッダータイプ説明

CamelAwsSnsMessageId

String

Amazon SNS メッセージ ID。

10.6.4. 高度な AmazonSNS 設定

SnsClient インスタンス設定をさらに制御する必要がある場合は、独自のインスタンスを作成し、URI から参照できます。

from("direct:start")
.to("aws2-sns://MyTopic?amazonSNSClient=#client");
Copy to Clipboard Toggle word wrap

#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");
Copy to Clipboard Toggle word wrap

#amazonSNSClient は、レジストリー内の SnsClient を参照します。subscribeSNStoSQS を true に指定し、既存の SQS キューの queueUrl を指定すると、SQS キューを SNS トピックにサブスクライブできます。

この時点で、SQS キューを介して SNS トピックからのメッセージを消費できます。

from("aws2-sqs://test-camel?amazonSQSClient=#amazonSQSClient&delay=50&maxMessagesPerPoll=5")
    .to(...);
Copy to Clipboard Toggle word wrap

10.7. トピックの自動作成

オプション autoCreateTopic を使用すると、SNS トピックが存在しない場合に自動作成を回避できます。このオプションのデフォルトは true です。false に設定すると、AWS に存在しないトピックに対する操作は成功せず、エラーが返されます。

10.8. SNS FIFO

SNS FIFO がサポートされています。SNS トピックにサブスクライブする SQS キューを作成する際に、覚えておくべき重要な点があります。SNS トピックがメッセージを SQS キューに送信できるようにする必要があります。

Order.fifo という SNS FIFO トピックと QueueSub.fifo という SQS キューを作成したとします。

QueueSub.fifo のアクセスポリシーでは、次のようなものを送信する必要があります。

{
  "Version": "2008-10-17",
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "__owner_statement",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::780560123482:root"
      },
      "Action": "SQS:*",
      "Resource": "arn:aws:sqs:eu-west-1:780560123482:QueueSub.fifo"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "sns.amazonaws.com"
      },
      "Action": "SQS:SendMessage",
      "Resource": "arn:aws:sqs:eu-west-1:780560123482:QueueSub.fifo",
      "Condition": {
        "ArnLike": {
          "aws:SourceArn": "arn:aws:sns:eu-west-1:780410022472:Order.fifo"
        }
      }
    }
  ]
}
Copy to Clipboard Toggle word wrap

これは、サブスクリプションを正しく機能させるための重要なステップです。

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");
Copy to Clipboard Toggle word wrap

10.10. Dependencies

Maven ユーザーは、以下の依存関係を pom.xml に追加する必要があります。

pom.xml

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-aws2-sns</artifactId>
    <version>${camel-version}</version>
</dependency>
Copy to Clipboard Toggle word wrap

この場合の 3.18.6 は、Camel の実際のバージョンに置き換える必要があります。

10.11. Spring Boot 自動設定

コンポーネントは、以下に記載される 25 のオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

11.2. URI 形式

aws2-sqs://queueNameOrArn[?options]
Copy to Clipboard Toggle word wrap

キューがまだ存在しない場合は作成されます。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 DSLDataFormat DSL を使用することもできます。

オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。

プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。

11.4. コンポーネントオプション

AWS Simple Queue Service (SQS) コンポーネントは、以下に示す 43 のオプションをサポートしています。

Expand
名前説明デフォルトタイプ

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 クライアントをインスタンス化するときにプロキシープロトコルを定義します。

列挙値:

  • HTTP
  • HTTPS

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
  • useContentBasedDeduplication

useExchangeId

String

messageGroupIdStrategy (producer)

FIFO キューの場合のみ。メッセージに messageGroupId を設定するストラテジー。useConstant、useExchangeId、usePropertyValue のいずれかをオプションとして使用できます。usePropertyValue オプションでは、CamelAwsMessageGroupId プロパティーの値が使用されます。

列挙値:

  • useConstant
  • useExchangeId
  • usePropertyValue
 

String

operation (producer)

ユーザーがメッセージだけを送信したくない場合に行う操作。

列挙値:

  • sendBatchMessage
  • deleteMessage
  • listQueues
  • purgeQueue
  • deleteQueue
 

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
Copy to Clipboard Toggle word wrap

パスおよびクエリーパラメーターを使用します。

11.5.1. パスパラメーター(1 パラメーター)

Expand
名前説明デフォルトタイプ

queueNameOrArn (共通)

必須 のキュー名または ARN。

 

String

11.5.2. クエリーパラメーター (61 パラメーター)

Expand
名前説明デフォルトタイプ

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 クライアントをインスタンス化するときにプロキシープロトコルを定義します。

列挙値:

  • HTTP
  • HTTPS

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 がエクスチェンジを作成する際に交換パターンを設定します。

列挙値:

  • InOnly
  • InOut
  • InOptionalOut
 

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
  • useContentBasedDeduplication

useExchangeId

String

messageGroupIdStrategy (producer)

FIFO キューの場合のみ。メッセージに messageGroupId を設定するストラテジー。useConstant、useExchangeId、usePropertyValue のいずれかをオプションとして使用できます。usePropertyValue オプションでは、CamelAwsMessageGroupId プロパティーの値が使用されます。

列挙値:

  • useConstant
  • useExchangeId
  • usePropertyValue
 

String

operation (producer)

ユーザーがメッセージだけを送信したくない場合に行う操作。

列挙値:

  • sendBatchMessage
  • deleteMessage
  • listQueues
  • purgeQueue
  • deleteQueue
 

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
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • OFF

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
  • SECONDS
  • 時間

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.accessKeyId and 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 認証情報のドキュメント を参照してください。

11.7.2. SQS producer によって設定されるメッセージヘッダー

Expand
ヘッダータイプ説明

CamelAwsSqsMD5OfBody

String

Amazon SQS メッセージの MD5 チェックサム。

CamelAwsSqsMessageId

String

Amazon SQS メッセージ ID。

CamelAwsSqsDelaySeconds

Integer

Amazon SQS メッセージが他のユーザーに表示される遅延秒数。

11.7.3. SQS consumer によって設定されるメッセージヘッダー

Expand
ヘッダータイプ説明

CamelAwsSqsMD5OfBody

String

Amazon SQS メッセージの MD5 チェックサム。

CamelAwsSqsMessageId

String

Amazon SQS メッセージ ID。

CamelAwsSqsReceiptHandle

String

Amazon SQS メッセージ受信ハンドル。

CamelAwsSqsMessageAttributes

Map<String, String>

Amazon SQS メッセージ属性。

11.7.4. 高度な AmazonSQS 設定

Camel アプリケーションがファイアウォールの背後で実行されている場合、または SqsClient インスタンス設定をより詳細に制御する必要がある場合は、独自のインスタンスを作成できます。

from("aws2-sqs://MyQueue?amazonSQSClient=#client&delay=5000&maxMessagesPerPoll=5")
.to("mock:result");
Copy to Clipboard Toggle word wrap

11.7.5. SQS キューの作成または更新

SQS コンポーネントでは、エンドポイントが開始されると、チェックが実行され、キューの存在に関する情報が取得されます。SQSConfiguration オプションを使用して QueueAttributeName マッピングを介して作成をカスタマイズできます。

from("aws2-sqs://MyQueue?amazonSQSClient=#client&delay=5000&maxMessagesPerPoll=5")
.to("mock:result");
Copy to Clipboard Toggle word wrap

この例では、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. サーバー側の暗号化

キューには一連のサーバー側暗号化属性があります。関連するオプションは、serverSideEncryptionEnabledkeyMasterKeyId、および 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");
Copy to Clipboard Toggle word wrap

上記のコードでは、交換に適切なヘッダーがない場合、フィルターを通過せず、SQS キューからも削除されません。5000 ミリ秒後、メッセージは他の consumer に表示されます。

フィルタリングされている場合、プロパティー Sqs2Constants.SQS_DELETE_FILTEREDtrue に設定して、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)&region=eu-west-1");
Copy to Clipboard Toggle word wrap

11.11. バッチメッセージの送信

SendMessageBatchRequest または Iterable を設定できます

from("direct:start")
  .setHeader(SqsConstants.SQS_OPERATION, constant("sendBatchMessage"))
  .process(new Processor() {
      @Override
      public void process(Exchange exchange) throws Exception {
          Collection c = new ArrayList();
          c.add("team1");
          c.add("team2");
          c.add("team3");
          c.add("team4");
          exchange.getIn().setBody(c);
      }
  })
  .to("aws2-sqs://camel-1?accessKey=RAW(xxx)&secretKey=RAW(xxx)&region=eu-west-1");
Copy to Clipboard Toggle word wrap

その結果、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)&region=eu-west-1");
Copy to Clipboard Toggle word wrap

その結果、メッセージが削除されたかどうかを確認するために使用できる DeleteMessageResponse インスタンスを含む交換が得られます。

11.13. リストキュー

キューを一覧表示するには、listQueues オペレーションを使用します。

from("direct:start")
  .setHeader(SqsConstants.SQS_OPERATION, constant("listQueues"))
  .to("aws2-sqs://camel-1?accessKey=RAW(xxx)&secretKey=RAW(xxx)&region=eu-west-1");
Copy to Clipboard Toggle word wrap

その結果、実際のキューを確認するために調べることができる ListQueuesResponse インスタンスを含む交換が得られます。

11.14. パージキュー

キューをパージするには、purgeQueue オペレーションを使用します。

from("direct:start")
  .setHeader(SqsConstants.SQS_OPERATION, constant("purgeQueue"))
  .to("aws2-sqs://camel-1?accessKey=RAW(xxx)&secretKey=RAW(xxx)&region=eu-west-1");
Copy to Clipboard Toggle word wrap

その結果、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>
Copy to Clipboard Toggle word wrap

この場合の 3.18.6 は、Camel の実際のバージョンに置き換える必要があります。

11.18. Spring Boot 自動設定

コンポーネントは、以下に記載される 44 のオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

12.2. オプションの設定

Camel コンポーネントは 2 つのレベルで設定されます。

  • コンポーネントレベル
  • エンドポイントレベル

12.2.1. コンポーネントレベルのオプション

コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。

通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。

コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。

12.2.2. エンドポイントレベルのオプション

エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。

エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSLDataFormat DSL を使用することもできます。

オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。

プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。

12.3. コンポーネントオプション

Azure ServiceBus コンポーネントは、以下に示す 25 のオプションをサポートしています。

Expand
名前説明デフォルトタイプ

amqpRetryOptions (common)

Service Bus クライアントの再試行オプションを設定します。指定しないと、デフォルトの再試行オプションが使用されます。

 

AmqpRetryOptions

amqpTransportType (common)

Azure Service Bus とのすべての通信が発生するトランスポートの種類を設定します。デフォルト値は AmqpTransportType#AMQP です。

列挙値:

  • Amqp
  • AmqpWebSockets

AMQP

AmqpTransportType

clientOptions (共通)

このビルダーから構築されたクライアントから送信される ClientOptions を設定し、特定のプロパティーのカスタマイズを有効にし、カスタムヘッダー情報の追加をサポートします。詳細は、ClientOptions のドキュメントを参照してください。

 

ClientOptions

configuration (common)

コンポーネントの設定。

 

ServiceBusConfiguration

proxyOptions (共通)

ServiceBusSenderAsyncClient に使用するプロキシー設定を設定します。プロキシーが設定されている場合は、AmqpTransportType#AMQP_WEB_SOCKETS をトランスポートタイプに使用する必要があります。

 

ProxyOptions

serviceBusType (common)

必須 実行するサービスバスの接続の種類。キューは、サブスクリプションベースのモデルの典型的なキューオプションとトピックです。

列挙値:

  • queue
  • topic

queue

ServiceBusType

bridgeErrorHandler (consumer)

consumer の Camel ルーティングエラーハンドラーへのブリッジを許可します。よって、consumer が受信メッセージなどの取得を試行している間に発生した例外は、メッセージとして処理され、ルーティングエラーハンドラーによって処理されます。デフォルトでは、consumer は org.apache.camel.spi.ExceptionHandler を使用して例外に対応し、WARN または ERROR レベルでログに記録され、無視されます。

false

boolean

consumerOperation (consumer)

consumer で使用する目的の操作を設定します。

列挙値:

  • receiveMessages
  • peekMessages

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
  • RECEIVE_AND_DELETE

PEEK_LOCK

ServiceBusReceiveMode

subQueue (consumer)

接続先の SubQueue のタイプを設定します。

列挙値:

  • NONE
  • DEAD_LETTER_QUEUE
  • TRANSFER_DEAD_LETTER_QUEUE
 

SubQueue

subscriptionName (consumer)

リッスンするトピックのサブスクリプションの名前を設定します。topicOrQueueName および serviceBusType=topic も設定する必要があります。このプロパティーは、serviceBusType=topic であり、consumer が使用されている場合に必要です。

 

文字列

lazyStartProducer (producer)

最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。

false

boolean

ProducerOperation (producer)

producer で使用する目的の操作を設定します。

列挙値:

  • sendMessages
  • scheduleMessages

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
Copy to Clipboard Toggle word wrap

パスおよびクエリーパラメーターを使用します。

12.4.1. パスパラメーター(1 パラメーター)

Expand
名前説明デフォルトタイプ

topicOrQueueName (common)

serviceBusType 設定に依存する、選択されたトピック名またはキュー名。たとえば、serviceBusType=queue の場合、これはキュー名になり、serviceBusType=topic の場合、これはトピック名になります。

 

文字列

12.4.2. クエリーパラメーター (25 個のパラメーター)

Expand
名前説明デフォルトタイプ

amqpRetryOptions (common)

Service Bus クライアントの再試行オプションを設定します。指定しないと、デフォルトの再試行オプションが使用されます。

 

AmqpRetryOptions

amqpTransportType (common)

Azure Service Bus とのすべての通信が発生するトランスポートの種類を設定します。デフォルト値は AmqpTransportType#AMQP です。

列挙値:

  • Amqp
  • AmqpWebSockets

AMQP

AmqpTransportType

clientOptions (共通)

このビルダーから構築されたクライアントから送信される ClientOptions を設定し、特定のプロパティーのカスタマイズを有効にし、カスタムヘッダー情報の追加をサポートします。詳細は、ClientOptions のドキュメントを参照してください。

 

ClientOptions

proxyOptions (共通)

ServiceBusSenderAsyncClient に使用するプロキシー設定を設定します。プロキシーが設定されている場合は、AmqpTransportType#AMQP_WEB_SOCKETS をトランスポートタイプに使用する必要があります。

 

ProxyOptions

serviceBusType (common)

必須 実行するサービスバスの接続の種類。キューは、サブスクリプションベースのモデルの典型的なキューオプションとトピックです。

列挙値:

  • queue
  • topic

queue

ServiceBusType

consumerOperation (consumer)

consumer で使用する目的の操作を設定します。

列挙値:

  • receiveMessages
  • peekMessages

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
  • RECEIVE_AND_DELETE

PEEK_LOCK

ServiceBusReceiveMode

subQueue (consumer)

接続先の SubQueue のタイプを設定します。

列挙値:

  • NONE
  • DEAD_LETTER_QUEUE
  • TRANSFER_DEAD_LETTER_QUEUE
 

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 がエクスチェンジを作成する際に交換パターンを設定します。

列挙値:

  • InOnly
  • InOut
  • InOptionalOut
 

ExchangePattern

ProducerOperation (producer)

producer で使用する目的の操作を設定します。

列挙値:

  • sendMessages
  • scheduleMessages

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 個のメッセージヘッダーをサポートしています。

Expand
名前説明デフォルトタイプ

CamelAzureServiceBusApplicationProperties (common)

定数: APPLICATION_PROPERTIES

producer と consumer によってそれぞれ送受信されるメッセージのアプリケーションプロパティー (カスタムプロパティーとも呼ばれます)。

 

Map

CamelAzureServiceBusContentType (consumer)

定数: CONTENT_TYPE

メッセージのコンテンツタイプを取得します。

 

文字列

CamelAzureServiceBusCorrelationId (consumer)

定数: CORRELATION_ID

相関識別子を取得します。

 

文字列

CamelAzureServiceBusDeadLetterErrorDescription (consumer)

定数: DEAD_LETTER_ERROR_DESCRIPTION

デッドレターキューに追加されたメッセージの説明を取得します。

 

文字列

CamelAzureServiceBusDeadLetterReason (consumer)

定数: DEAD_LETTER_REASON

メッセージがデッドレターキューに追加された理由を取得します。

 

文字列

CamelAzureServiceBusDeadLetterSource (consumer)

定数: DEAD_LETTER_SOURCE

このメッセージがキューに格納されたキューまたはサブスクリプションの名前を取得してから、デッドレターに追加されます。

 

文字列

CamelAzureServiceBusDeliveryCount (consumer)

定数: DELIVERY_COUNT

このメッセージがクライアントに配信された回数を取得します。

 

long

CamelAzureServiceBusEnqueuedSequenceNumber (consumer)

定数: ENQUEUED_SEQUENCE_NUMBER

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)

定数: REPLY_TO_SESSION_ID

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)

定数: SCHEDULED_ENQUEUE_TIME

(producer) メッセージが Service Bus キューまたはトピックに表示される OffsetDateTime をオーバーライドします。(consumer) このメッセージのスケジュールされたエンキュー時刻を取得します。

 

OffsetDateTime

CamelAzureServiceBusServiceBusTransactionContext (producer)

定数: SERVICE_BUS_TRANSACTION_CONTEXT

サービス中のトランザクションをオーバーライドします。このオブジェクトにはトランザクション ID のみが含まれます。

 

ServiceBusTransactionContext

CamelAzureServiceBusProducerOperation (producer)

定数: PRODUCER_OPERATION

producer で使用する目的の操作をオーバーライドします。

列挙値:

  • sendMessages
  • scheduleMessages
 

ServiceBusProducerOperationDefinition

12.6.1. メッセージボディー

producer では、このコンポーネントは String 型または List<String> のメッセージ本文を受け入れてバッチメッセージを送信します。

cosumer では、返されるメッセージ本文は String.type になります。

12.6.2. Azure ServiceBus producer の操作

Expand
操作説明

sendMessages

バッチアプローチを使用して、一連のメッセージを Service Bus キューまたはトピックに送信します。

scheduleMessages

この送信者が接続されている Azure Service Bus エンティティーにスケジュールされたメッセージを送信します。スケジュールされたメッセージはキューに入れられ、スケジュールされたエンキュー時間にのみ受信者が利用できるようになります。

12.6.3. Azure ServiceBus consumer の操作

Expand
操作説明

receiveMessages

Service Bus エンティティーから <b>無限</b> のメッセージストリームを受信します。

peekMessages

受信側またはメッセージソースの状態を変更せずに、アクティブメッセージの次のバッチを読み取ります。

12.6.3.1. 例
  • sendMessages
from("direct:start")
  .process(exchange -> {
         final List<Object> inputBatch = new LinkedList<>();
            inputBatch.add("test batch 1");
            inputBatch.add("test batch 2");
            inputBatch.add("test batch 3");
            inputBatch.add(123456);

            exchange.getIn().setBody(inputBatch);
       })
  .to("azure-servicebus:test//?connectionString=test")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • scheduleMessages
from("direct:start")
  .process(exchange -> {
         final List<Object> inputBatch = new LinkedList<>();
            inputBatch.add("test batch 1");
            inputBatch.add("test batch 2");
            inputBatch.add("test batch 3");
            inputBatch.add(123456);

            exchange.getIn().setHeader(ServiceBusConstants.SCHEDULED_ENQUEUE_TIME, OffsetDateTime.now());
            exchange.getIn().setBody(inputBatch);
       })
  .to("azure-servicebus:test//?connectionString=test&producerOperation=scheduleMessages")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • receiveMessages
from("azure-servicebus:test//?connectionString=test")
  .log("${body}")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • peekMessages
from("azure-servicebus:test//?connectionString=test&consumerOperation=peekMessages&peekNumMaxMessages=3")
  .log("${body}")
  .to("mock:result");
Copy to Clipboard Toggle word wrap

12.7. Spring Boot 自動設定

コンポーネントは、以下に記載される 26 個のオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

13.2. URI 形式

azure-storage-blob://accountName[/containerName][?options]
Copy to Clipboard Toggle word wrap

consumer の場合、accountNamecontainerName が必要です。producer の場合、要求される操作によって異なります。たとえば、操作がコンテナーレベルである場合、たとえば createContainer の場合、accountNamecontainerName のみが必要ですが、BLOB レベルで操作が要求される場合、たとえば、getBlobaccountNamecontainerName、および 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 DSLDataFormat DSL を使用することもできます。

オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。

プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。

13.4. コンポーネントオプション

Azure Storage Blob Service コンポーネントは、以下に示す 31 のオプションをサポートしています。

Expand
名前説明デフォルトタイプ

blobName (共通)

コンテナーから特定の BLOB を使用するための BLOB 名。ただし、producer では、BLOB レベルでの操作にのみ必要です。

 

String

blobOffset (共通)

アップロードまたはダウンロード操作の BLOB オフセットを設定します。デフォルトは 0 です。

0

long

blobType (共通)

BLOB の種類ごとに適切な設定を開始するための BLOB の種類。

列挙値:

  • blockblob
  • appendblob
  • pageblob

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
  • コミットされていない
  • all

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
  • createBlobContainer
  • deleteBlobContainer
  • listBlobs
  • getBlob
  • deleteBlob
  • downloadBlobToFile
  • downloadLink
  • uploadBlockBlob
  • stageBlockBlobList
  • commitBlobBlockList
  • getBlobBlockList
  • createAppendBlob
  • commitAppendBlob
  • createPageBlob
  • uploadPageBlob
  • resizePageBlob
  • clearPageBlob
  • getPageBlobRanges

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
Copy to Clipboard Toggle word wrap

パスおよびクエリーパラメーターを使用します。

13.5.1. パスパラメーター (2 パラメーター)

Expand
名前説明デフォルトタイプ

accountName (共通)

Azure BLOB サービスでの認証に使用される Azure アカウント名。

 

String

containerName (共通)

BLOB コンテナー名。

 

String

13.5.2. クエリーパラメーター (48 パラメーター)

Expand
名前説明デフォルトタイプ

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
  • appendblob
  • pageblob

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 がエクスチェンジを作成する際に交換パターンを設定します。

列挙値:

  • InOnly
  • InOut
  • InOptionalOut
 

ExchangePattern

pollStrategy (consumer (上級))

プラグ可能な org.apache.camel.PollingConsumerPollingStrategy を使用すると、エクスチェンジが作成され、Camel でルーティングされる前に、通常はポーリング操作中に発生するエラー処理を制御するカスタム実装が提供できます。

 

PollingConsumerPollStrategy

blobSequenceNumber (producer)

リクエストの追跡に使用できるユーザー制御の値。シーケンス番号の値は、0 から 263 - 1 の間でなければなりません。デフォルト値は 0 です。

0

Long

blockListType (producer)

返すブロックのタイプを指定します。

列挙値:

  • committed
  • コミットされていない
  • all

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
  • createBlobContainer
  • deleteBlobContainer
  • listBlobs
  • getBlob
  • deleteBlob
  • downloadBlobToFile
  • downloadLink
  • uploadBlockBlob
  • stageBlockBlobList
  • commitBlobBlockList
  • getBlobBlockList
  • createAppendBlob
  • commitAppendBlob
  • createPageBlob
  • uploadPageBlob
  • resizePageBlob
  • clearPageBlob
  • getPageBlobRanges

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
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • OFF

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
  • SECONDS
  • 時間

MILLISECONDS

TimeUnit

useFixedDelay (scheduler)

固定遅延または固定レートを使用するかどうかを制御します。詳細は、JDK の ScheduledExecutorService を参照してください。

true

boolean

accessKey (security)

Azure Blob サービスでの認証に使用される、関連付けられた Azure アカウント名のアクセスキー。

 

String

sourceBlobAccessKey (セキュリティー)

ソース Blob アクセスキー: copyblob 操作では、コピーするソース Blob の accessKey が必要です。accessKey をヘッダーとして渡すと、安全ではないため、キーとして設定できます。

 

String

必須情報オプション

このコンポーネントを使用するには、必要な Azure 認証情報を提供するための 3 つのオプションがあります。

  • Azure アカウントの accountNameaccessKey を指定します。これが最も簡単な開始方法です。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");
Copy to Clipboard Toggle word wrap

13.6.1. コンポーネント producer によって評価されるメッセージヘッダー

Expand
ヘッダー変数名タイプ操作説明

CamelAzureStorageBlobTimeout

BlobConstants.TIMEOUT

期間

すべて

それを超えると {@link RuntimeException} が発生する任意のタイムアウト値。

CamelAzureStorageBlobMetadata

BlobConstants.METADATA

Map<String,String>

コンテナーと BLOB に関する操作

コンテナーまたは BLOB に関連付けるメタデータ。

CamelAzureStorageBlobPublicAccessType

BlobConstants.PUBLIC_ACCESS_TYPE

PublicAccessType

createContainer

このコンテナー内のデータを公開する方法を指定します。パブリックアクセスがない場合は null を渡します。

CamelAzureStorageBlobRequestCondition

BlobConstants.BLOB_REQUEST_CONDITION

BlobRequestConditions

コンテナーと BLOB に関する操作

これには、さまざまな要求の正常な動作を現在の条件に制限する値が含まれています。これらの条件は完全にオプションです。

CamelAzureStorageBlobListDetails

BlobConstants.BLOB_LIST_DETAILS

BlobListDetails

listBlobs

特定のブロブを一覧表示するための詳細

CamelAzureStorageBlobPrefix

BlobConstants.PREFIX

String

listBlobs,getBlob

結果をフィルター処理して、名前が指定された接頭辞で始まる BLOB のみを返します。すべての BLOB を返すには null の場合があります。

CamelAzureStorageBlobMaxResultsPerPage

BlobConstants.MAX_RESULTS_PER_PAGE

Integer

listBlobs

すべての BlobPrefix 要素を含め、返される BLOB の最大数を指定します。要求で maxResultsPerPage が指定されていないか、5,000 を超える値が指定されている場合、サーバーは最大 5,000 項目を返します。

CamelAzureStorageBlobListBlobOptions

BlobConstants.LIST_BLOB_OPTIONS

ListBlobsOptions

listBlobs

{@link BlobContainerClient} オブジェクトで listBlobsFlatSegment への呼び出しの動作を設定するために使用できるオプションを定義します。

CamelAzureStorageBlobHttpHeaders

BlobConstants.BLOB_HTTP_HEADERS

BlobHttpHeaders

uploadBlockBlob, commitBlobBlockList, createAppendBlob, createPageBlob

一連の操作の追加パラメーター。

CamelAzureStorageBlobAccessTier

BlobConstants.ACCESS_TIER

AccessTier

uploadBlockBlobcommitBlobBlockList

AccessTier の値を定義します。

CamelAzureStorageBlobContentMD5

BlobConstants.CONTENT_MD5

byte[]

BLOB のアップロードに関連するほとんどの操作

ブロックコンテンツの MD5 ハッシュ。このハッシュは、転送中にブロックの整合性を検証するために使用されます。このヘッダーが指定されている場合、ストレージサービスは、到着したコンテンツのハッシュとこのヘッダー値を比較します。この MD5 ハッシュは BLOB には保存されないことに注意してください。2 つのハッシュが一致しない場合、操作は失敗します。

CamelAzureStorageBlobPageBlobRange

BlobConstants.PAGE_BLOB_RANGE

PageRange

ページブロブに関連する操作

{@link PageRange} オブジェクト。ページを 512 バイトの境界に揃える必要がある場合、開始オフセットは 512 の係数である必要があり、終了オフセットは 512 - 1 の係数である必要があります。有効なバイト範囲の例は、0 - 511、512 - 1023 などです。

CamelAzureStorageBlobCommitBlobBlockListLater

BlobConstants.COMMIT_BLOCK_LIST_LATER

boolean

stageBlockBlobList

true に設定されていると、ステージングされたブロックは直接コミットされません。

CamelAzureStorageBlobCreateAppendBlob

BlobConstants.CREATE_APPEND_BLOB

boolean

commitAppendBlob

true に設定されていると、追加ブロックのコミット時に追加ブロックが作成されます。

CamelAzureStorageBlobCreatePageBlob

BlobConstants.CREATE_PAGE_BLOB

boolean

uploadPageBlob

true に設定すると、ページブロブのアップロード時にページ Blob が作成されます。

CamelAzureStorageBlobBlockListType

BlobConstants.BLOCK_LIST_TYPE

BlockListType

getBlobBlockList

返すブロックのタイプを指定します。

CamelAzureStorageBlobPageBlobSize

BlobConstants.PAGE_BLOB_SIZE

Long

createPageBlob, resizePageBlob

ページ BLOB の最大サイズを 8 TB まで指定します。ページ BLOB のサイズは、512 バイトの境界に合わせる必要があります。

CamelAzureStorageBlobSequenceNumber

BlobConstants.BLOB_SEQUENCE_NUMBER

Long

createPageBlob

リクエストの追跡に使用できるユーザー制御の値。シーケンス番号の値は、0 から 2^63 - 1 の間でなければなりません。デフォルト値は 0 です。

CamelAzureStorageBlobDeleteSnapshotsOptionType

BlobConstants.DELETE_SNAPSHOT_OPTION_TYPE

DeleteSnapshotsOptionType

deleteBlob

この BLOB のスナップショットを削除するための動作を指定します。\{@code Include} は、ベース BLOB とすべてのスナップショットを削除します。\{@code Only} はスナップショットのみを削除します。スナップショットが削除されている場合は、null を渡す必要があります。

CamelAzureStorageBlobListBlobContainersOptions

BlobConstants.LIST_BLOB_CONTAINERS_OPTIONS

ListBlobContainersOptions

listBlobContainers

サービスによって返されるデータを指定する {@link ListBlobContainersOptions}。

CamelAzureStorageBlobParallelTransferOptions

BlobConstants.PARALLEL_TRANSFER_OPTIONS

ParallelTransferOptions

downloadBlobToFile

ファイルへのダウンロードに使用する {@link ParallelTransferOptions}。並列転送数パラメーターは無視されます。

CamelAzureStorageBlobFileDir

BlobConstants.FILE_DIR

String

downloadBlobToFile

ダウンロードした BLOB が保存されるファイルディレクトリー。

CamelAzureStorageBlobDownloadLinkExpiration

BlobConstants.DOWNLOAD_LINK_EXPIRATION

Long

downloadLink

URL ダウンロードリンクのデフォルトの有効期限 (ミリ秒) をオーバーライドします。

CamelAzureStorageBlobBlobName

BlobConstants.BLOB_NAME

String

ブロブに関連する操作

交換ヘッダーの BLOB 名をオーバーライド/設定します。

CamelAzureStorageBlobContainerName

BlobConstants.BLOB_CONTAINER_NAME

String

コンテナーと BLOB に関する操作

交換ヘッダーのコンテナー名をオーバーライド/設定します。

CamelAzureStorageBlobOperation

BlobConstants.BLOB_OPERATION

BlobOperationsDefinition

すべて

実行する producer 操作を指定します。producer 操作に関連するこのページのドキュメントを参照してください。

CamelAzureStorageBlobRegex

BlobConstants.REGEX

String

listBlobs,getBlob

結果をフィルタリングして、指定された正規表現と名前が一致する BLOB のみを返します。すべてを返すには null の場合があります。接頭辞と正規表現の両方が設定されている場合、正規表現が優先され、接頭辞は無視されます。

CamelAzureStorageBlobChangeFeedStartTime

BlobConstants.CHANGE_FEED_START_TIME

OffsetDateTime

getChangeFeed

結果をフィルタリングして、開始時刻の前後のイベントを返します。注意: 前の時間に属するいくつかのイベントも返される可能性があります。この時間に属するいくつかのイベントが欠落している可能性があります。その時間のすべてのイベントが確実に返されるようにするには、開始時間を 1 時間単位で切り捨てます。

CamelAzureStorageBlobChangeFeedEndTime

BlobConstants.CHANGE_FEED_END_TIME

OffsetDateTime

getChangeFeed

結果をフィルタリングして、終了時刻のほぼ前にイベントを返します。注意: 次の 1 時間に属するいくつかのイベントも返される可能性があります。この時間に属するいくつかのイベントが欠落している可能性があります。その時間のすべてのイベントが確実に返されるようにするには、終了時間を 1 時間単位で切り上げます。

CamelAzureStorageBlobChangeFeedContext

BlobConstants.CHANGE_FEED_CONTEXT

コンテキスト

getChangeFeed

これにより、サービス呼び出し中に Http パイプラインを介して渡される追加のコンテキストが提供されます。

CamelAzureStorageBlobSourceBlobAccountName

BlobConstants.SOURCE_BLOB_ACCOUNT_NAME

String

copyBlob

コピー BLOB 操作でソースアカウント名として使用されるソース BLOB アカウント名

CamelAzureStorageBlobSourceBlobContainerName

BlobConstants.SOURCE_BLOB_CONTAINER_NAME

String

copyBlob

コピー BLOB 操作でソースコンテナー名として使用されるソース BLOB コンテナー名

13.6.2. コンポーネントの producer または consumer によって設定されるメッセージヘッダー

Expand
ヘッダー変数名タイプ説明

CamelAzureStorageBlobAccessTier

BlobConstants.ACCESS_TIER

AccessTier

BLOB のアクセス層。

CamelAzureStorageBlobAccessTierChangeTime

BlobConstants.ACCESS_TIER_CHANGE_TIME

OffsetDateTime

BLOB のアクセス層が最後に変更された日時。

CamelAzureStorageBlobArchiveStatus

BlobConstants.ARCHIVE_STATUS

ArchiveStatus

BLOB のアーカイブステータス。

CamelAzureStorageBlobCreationTime

BlobConstants.CREATION_TIME

OffsetDateTime

ブロブの作成時間。

CamelAzureStorageBlobSequenceNumber

BlobConstants.BLOB_SEQUENCE_NUMBER

Long

ページ BLOB の現在のシーケンス番号。

CamelAzureStorageBlobBlobSize

BlobConstants.BLOB_SIZE

long

ブロブのサイズ。

CamelAzureStorageBlobBlobType

BlobConstants.BLOB_TYPE

BlobType

ブロブのタイプ。

CamelAzureStorageBlobCacheControl

BlobConstants.CACHE_CONTROL

String

BLOB に指定されたキャッシュコントロール。

CamelAzureStorageBlobCommittedBlockCount

BlobConstants.COMMITTED_BLOCK_COUNT

Integer

追加 BLOB にコミットされたブロックの数

CamelAzureStorageBlobContentDisposition

BlobConstants.CONTENT_DISPOSITION

String

BLOB に指定されたコンテンツの配置。

CamelAzureStorageBlobContentEncoding

BlobConstants.CONTENT_ENCODING

String

BLOB に指定されたコンテンツエンコーディング。

CamelAzureStorageBlobContentLanguage

BlobConstants.CONTENT_LANGUAGE

String

BLOB に指定されたコンテンツ言語。

CamelAzureStorageBlobContentMd5

BlobConstants.CONTENT_MD5

byte[]

BLOB に指定されたコンテンツ MD5。

CamelAzureStorageBlobContentType

BlobConstants.CONTENT_TYPE

String

BLOB に指定されたコンテンツタイプ。

CamelAzureStorageBlobCopyCompletionTime

BlobConstants.COPY_COMPILATION_TIME

OffsetDateTime

BLOB に対する最後のコピー操作が完了した日時。

CamelAzureStorageBlobCopyDestinationSnapshot

BlobConstants.COPY_DESTINATION_SNAPSHOT

String

BLOB の最後の増分コピースナップショットのスナップショット識別子。

CamelAzureStorageBlobCopyId

BlobConstants.COPY_ID

String

BLOB に対して実行された最後のコピー操作の識別子。

CamelAzureStorageBlobCopyProgress

BlobConstants.COPY_PROGRESS

String

BLOB に対して実行された最後のコピー操作の状態。

CamelAzureStorageBlobCopySource

BlobConstants.COPY_SOURCE

String

BLOB に対して実行された最後のコピー操作のソース。

CamelAzureStorageBlobCopyStatus

BlobConstants.COPY_STATUS

CopyStatusType

BLOB に対して実行された最後のコピー操作の状態。

CamelAzureStorageBlobCopyStatusDescription

BlobConstants.COPY_STATUS_DESCRIPTION

String

BLOB に対する最後のコピー操作の説明。

CamelAzureStorageBlobETag

BlobConstants.E_TAG

String

ブロブの E タグ

CamelAzureStorageBlobIsAccessTierInferred

BlobConstants.IS_ACCESS_TIER_INFRRRED

boolean

BLOB のアクセス層が BLOB のプロパティーから推測されたかどうかを示すフラグ。

CamelAzureStorageBlobIsIncrementalCopy

BlobConstants.IS_INCREMENTAL_COPY

boolean

BLOB が増分コピーされたかどうかを示すフラグ。

CamelAzureStorageBlobIsServerEncrypted

BlobConstants.IS_SERVER_ENCRYPTED

boolean

BLOB のコンテンツがサーバー上で暗号化されているかどうかを示すフラグ。

CamelAzureStorageBlobLastModified

BlobConstants.LAST_MODIFIED

OffsetDateTime

BLOB が最後に変更された日時。

CamelAzureStorageBlobLeaseDuration

BlobConstants.LEASE_DURATION

LeaseDurationType

BLOB のリースの種類。

CamelAzureStorageBlobLeaseState

BlobConstants.LEASE_STATE

LeaseStateType

BLOB のリースの状態。

CamelAzureStorageBlobLeaseStatus

BlobConstants.LEASE_STATUS

LeaseStatusType

BLOB のリースのステータス。

CamelAzureStorageBlobMetadata

BlobConstants.METADATA

Map<String, String>

BLOB に関連付けられた追加のメタデータ。

CamelAzureStorageBlobAppendOffset

BlobConstants.APPEND_OFFSET

String

ブロックがブロック BLOB にコミットされたオフセット。

CamelAzureStorageBlobFileName

BlobConstants.FILE_NAME

String

操作 downloadBlobToFile からダウンロードされたファイル名。

CamelAzureStorageBlobDownloadLink

BlobConstants.DOWNLOAD_LINK

String

downloadLink 操作によって生成されたダウンロードリンク。

CamelAzureStorageBlobRawHttpHeaders

BlobConstants.RAW_HTTP_HEADERS

HttpHeaders

ユーザーが使用できる解析されていない httpHeaders を返します。

13.6.3. 高度な Azure Storage Blob 設定

Camel アプリケーションがファイアウォールの背後で実行されている場合、または BlobServiceClient インスタンス設定をより詳細に制御する必要がある場合は、独自のインスタンスを作成できます。

StorageSharedKeyCredential credential = new StorageSharedKeyCredential("yourAccountName", "yourAccessKey");
String uri = String.format("https://%s.blob.core.windows.net", "yourAccountName");

BlobServiceClient client = new BlobServiceClientBuilder()
                          .endpoint(uri)
                          .credential(credential)
                          .buildClient();
// This is camel context
context.getRegistry().bind("client", client);
Copy to Clipboard Toggle word wrap

次に、Camel azure-storage-blob コンポーネント設定でこのインスタンスを参照します。

from("azure-storage-blob://cameldev/container1?blobName=myblob&serviceClient=#client")
.to("mock:result");
Copy to Clipboard Toggle word wrap

13.6.4. レジストリー内の BlobServiceClient クライアントの自動検出

このコンポーネントは、レジストリー内の BlobServiceClient bean の存在を検出できます。そのタイプの唯一のインスタンスである場合、それはクライアントとして使用され、上記の例のように uri パラメーターとして定義する必要はありません。これは、エンドポイントのよりスマートな設定に非常に役立つ場合があります。

13.6.5. Azure Storage Blob producer の操作

Camel Azure Storage Blob コンポーネントは、producer 側で幅広い操作を提供します。

サービスレベルの操作

これらの操作には、accountName必要 です。

Expand
操作説明

listBlobContainers

ブロブの内容を取得します。この操作の出力をブロブ範囲に制限できます。

getChangeFeed

ストレージアカウント内の BLOB と BLOB メタデータに発生したすべての変更のトランザクションログを返します。変更フィードは、これらの変更の順序付けられた、保証された、永続的で不変の読み取り専用ログを提供します。

コンテナーレベルでの操作

これらの操作には、accountNamecontainerName必要です

Expand
操作説明

createBlobContainer

ストレージアカウント内に新しいコンテナーを作成します。同じ名前のコンテナーがすでに存在する場合、producer はそれを無視します。

deleteBlobContainer

ストレージアカウント内の指定されたコンテナーを削除します。コンテナーが存在しない場合、操作は失敗します。

listBlobs

フォルダー構造がフラット化された、このコンテナー内の BLOB のリストを返します。

BLOB レベルでの操作

これらの操作では、accountNamecontainerName、および blobName必須です

Expand
操作ブロブの種類説明

getBlob

共通

ブロブの内容を取得します。この操作の出力をブロブ範囲に制限できます。

deleteBlob

共通

ブロブを削除します。

downloadBlobToFile

共通

パスで指定されたファイルに BLOB 全体をダウンロードします。ファイルが作成されますが、存在してはなりません。ファイルがすでに存在する場合、{@link FileAlreadyExistsException} が出力されます。

downloadLink

共通

Shared Access Signature (SAS) を使用して、指定された BLOB のダウンロードリンクを生成します。デフォルトでは、これは許可されたアクセスを 1 時間に制限します。ただし、ヘッダーを使用してデフォルトの有効期限をオーバーライドできます。

uploadBlockBlob

BlockBlob

新しいブロック BLOB を作成するか、既存のブロック BLOB の内容を更新します。既存のブロック BLOB を更新すると、BLOB の既存のメタデータが上書きされます。PutBlob では部分的な更新はサポートされていません。既存の BLOB のコンテンツは新しいコンテンツで上書きされます。

stageBlockBlobList

BlockBlob

指定されたブロックをブロック BLOB のステージング領域にアップロードし、後で commitBlobBlockList の呼び出しによってコミットします。ただし、ヘッダー CamelAzureStorageBlobCommitBlobBlockListLater または config commitBlockListLater が false に設定されている場合、これはブロックをステージングした直後にブロックをコミットします。

commitBlobBlockList

BlockBlob

BLOB を設定するブロック ID のリストを指定して、BLOB を書き込みます。ブロックが BLOB の一部として書き込まれるためには、ブロックが前の stageBlockBlobList 操作でサーバーに正常に書き込まれている必要があります。commitBlobBlockList を呼び出して、変更されたブロックのみをアップロードし、新しいブロックと既存のブロックを一緒にコミットすることで、BLOB を更新できます。ブロックリストに指定されておらず、完全に削除されたブロック。

getBlobBlockList

BlockBlob

指定されたブロックリストフィルターを使用して、ブロック BLOB の一部としてアップロードされたブロックのリストを返します。

createAppendBlob

AppendBlob

長さ 0 の追加 BLOB を作成します。commitAppendBlo`b 操作を呼び出して、追加 BLOB にデータを追加します。

commitAppendBlob

AppendBlob

新しいデータブロックを既存の追加 BLOB の末尾にコミットします。ヘッダー CamelAzureStorageBlobCreateAppendBlob または config createAppendBlob が true に設定されている場合、コミットする前にまず createAppendBlob 操作への内部呼び出しを通じて appendBlob の作成を試みます。

createPageBlob

PageBlob

指定された長さのページ BLOB を作成します。uploadPageBlob 操作を呼び出して、データデータをページ BLOB にアップロードします。

uploadPageBlob

PageBlob

1 つ以上のページをページ BLOB に書き込みます。書き込みサイズは 512 の倍数である必要があります。ヘッダー CamelAzureStorageBlobCreatePageBlob または config createPageBlob が true に設定されている場合、アップロードする前にまず createPageBlob 操作への内部呼び出しを通じて appendBlob の作成を試みます。

resizePageBlob

PageBlob

ページ BLOB のサイズを指定されたサイズ (512 の倍数である必要があります) に変更します。

clearPageBlob

PageBlob

指定されたページをページ BLOB から解放します。範囲のサイズは 512 の倍数でなければなりません。

getPageBlobRanges

PageBlob

ページ BLOB またはページ BLOB のスナップショットの有効なページ範囲のリストを返します。

copyBlob

共通

異なるアカウントからでも、あるコンテナーから別のコンテナーに BLOB をコピーします。

これらの操作を camel アプリケーションで使用する方法については、このページの例のセクションを参照してください。

13.6.6. consumer の例

ファイルコンポーネントを使用して BLOB をファイルに取り込むには、次のようにします。

from("azure-storage-blob://camelazure/container1?blobName=hello.txt&accountName=yourAccountName&accessKey=yourAccessKey").
to("file://blobdirectory");
Copy to Clipboard Toggle word wrap

ただし、ファイルコンポーネントを使用せずにファイルに直接書き込むこともできます。BLOB をマシンに保存するには、fileDir フォルダーパスを指定する必要があります。

from("azure-storage-blob://camelazure/container1?blobName=hello.txt&accountName=yourAccountName&accessKey=yourAccessKey&fileDir=/var/to/awesome/dir").
to("mock:results");
Copy to Clipboard Toggle word wrap

また、コンポーネントはバッチ consumer をサポートしているため、コンテナー名を指定するだけで複数の BLOB を使用できます。consumer は、コンテナー内の BLOB の数に応じて複数の交換を返します。

from("azure-storage-blob://camelazure/container1?accountName=yourAccountName&accessKey=yourAccessKey&fileDir=/var/to/awesome/dir").
to("mock:results");
Copy to Clipboard Toggle word wrap

13.6.7. producer 操作の例

  • listBlobContainers
from("direct:start")
  .process(exchange -> {
    // set the header you want the producer to evaluate, refer to the previous
    // section to learn about the headers that can be set
    // e.g:
    exchange.getIn().setHeader(BlobConstants.LIST_BLOB_CONTAINERS_OPTIONS, new ListBlobContainersOptions().setMaxResultsPerPage(10));
  })
  .to("azure-storage-blob://camelazure?operation=listBlobContainers&client&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • createBlobContainer
from("direct:start")
  .process(exchange -> {
    // set the header you want the producer to evaluate, refer to the previous
    // section to learn about the headers that can be set
    // e.g:
    exchange.getIn().setHeader(BlobConstants.BLOB_CONTAINER_NAME, "newContainerName");
  })
  .to("azure-storage-blob://camelazure/container1?operation=createBlobContainer&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • deleteBlobContainer:
from("direct:start")
  .process(exchange -> {
    // set the header you want the producer to evaluate, refer to the previous
    // section to learn about the headers that can be set
    // e.g:
    exchange.getIn().setHeader(BlobConstants.BLOB_CONTAINER_NAME, "overridenName");
  })
  .to("azure-storage-blob://camelazure/container1?operation=deleteBlobContainer&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • listBlobs:
from("direct:start")
  .process(exchange -> {
    // set the header you want the producer to evaluate, refer to the previous
    // section to learn about the headers that can be set
    // e.g:
    exchange.getIn().setHeader(BlobConstants.BLOB_CONTAINER_NAME, "overridenName");
  })
  .to("azure-storage-blob://camelazure/container1?operation=listBlobs&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • getBlob:

交換本体に outputStream を設定し、それにデータを書き込むことができます。例:

from("direct:start")
  .process(exchange -> {
    // set the header you want the producer to evaluate, refer to the previous
    // section to learn about the headers that can be set
    // e.g:
    exchange.getIn().setHeader(BlobConstants.BLOB_CONTAINER_NAME, "overridenName");

    // set our body
    exchange.getIn().setBody(outputStream);
  })
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=getBlob&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap

本体を設定しない場合、この操作は、さらに下流に進むことができる InputStream インスタンスを提供します。

from("direct:start")
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=getBlob&serviceClient=#client")
  .process(exchange -> {
      InputStream inputStream = exchange.getMessage().getBody(InputStream.class);
      // We use Apache common IO for simplicity, but you are free to do whatever dealing
      // with inputStream
      System.out.println(IOUtils.toString(inputStream, StandardCharsets.UTF_8.name()));
  })
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • deleteBlob:
from("direct:start")
  .process(exchange -> {
    // set the header you want the producer to evaluate, refer to the previous
    // section to learn about the headers that can be set
    // e.g:
    exchange.getIn().setHeader(BlobConstants.BLOB_NAME, "overridenName");
  })
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=deleteBlob&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • downloadBlobToFile:
from("direct:start")
  .process(exchange -> {
    // set the header you want the producer to evaluate, refer to the previous
    // section to learn about the headers that can be set
    // e.g:
    exchange.getIn().setHeader(BlobConstants.BLOB_NAME, "overridenName");
  })
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=downloadBlobToFile&fileDir=/var/mydir&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • downloadLink
from("direct:start")
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=downloadLink&serviceClient=#client")
  .process(exchange -> {
      String link = exchange.getMessage().getHeader(BlobConstants.DOWNLOAD_LINK, String.class);
      System.out.println("My link " + link);
  })
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • uploadBlockBlob
from("direct:start")
  .process(exchange -> {
    // set the header you want the producer to evaluate, refer to the previous
    // section to learn about the headers that can be set
    // e.g:
    exchange.getIn().setHeader(BlobConstants.BLOB_NAME, "overridenName");
    exchange.getIn().setBody("Block Blob");
  })
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=uploadBlockBlob&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • stageBlockBlobList
from("direct:start")
  .process(exchange -> {
      final List<BlobBlock> blocks = new LinkedList<>();
      blocks.add(BlobBlock.createBlobBlock(new ByteArrayInputStream("Hello".getBytes())));
      blocks.add(BlobBlock.createBlobBlock(new ByteArrayInputStream("From".getBytes())));
      blocks.add(BlobBlock.createBlobBlock(new ByteArrayInputStream("Camel".getBytes())));

      exchange.getIn().setBody(blocks);
  })
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=stageBlockBlobList&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • commitBlockBlobList
from("direct:start")
  .process(exchange -> {
      // We assume here you have the knowledge of these blocks you want to commit
      final List<Block> blocksIds = new LinkedList<>();
      blocksIds.add(new Block().setName("id-1"));
      blocksIds.add(new Block().setName("id-2"));
      blocksIds.add(new Block().setName("id-3"));

      exchange.getIn().setBody(blocksIds);
  })
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=commitBlockBlobList&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • getBlobBlockList
from("direct:start")
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=getBlobBlockList&serviceClient=#client")
  .log("${body}")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • createAppendBlob
from("direct:start")
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=createAppendBlob&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • commitAppendBlob
from("direct:start")
  .process(exchange -> {
    final String data = "Hello world from my awesome tests!";
    final InputStream dataStream = new ByteArrayInputStream(data.getBytes(StandardCharsets.UTF_8));

    exchange.getIn().setBody(dataStream);

    // of course you can set whatever headers you like, refer to the headers section to learn more
  })
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=commitAppendBlob&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • createPageBlob
from("direct:start")
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=createPageBlob&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • uploadPageBlob
from("direct:start")
  .process(exchange -> {
    byte[] dataBytes = new byte[512]; // we set range for the page from 0-511
    new Random().nextBytes(dataBytes);
    final InputStream dataStream = new ByteArrayInputStream(dataBytes);
    final PageRange pageRange = new PageRange().setStart(0).setEnd(511);

    exchange.getIn().setHeader(BlobConstants.PAGE_BLOB_RANGE, pageRange);
    exchange.getIn().setBody(dataStream);
  })
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=uploadPageBlob&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • resizePageBlob
from("direct:start")
  .process(exchange -> {
    final PageRange pageRange = new PageRange().setStart(0).setEnd(511);

    exchange.getIn().setHeader(BlobConstants.PAGE_BLOB_RANGE, pageRange);
  })
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=resizePageBlob&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • clearPageBlob
from("direct:start")
  .process(exchange -> {
    final PageRange pageRange = new PageRange().setStart(0).setEnd(511);

    exchange.getIn().setHeader(BlobConstants.PAGE_BLOB_RANGE, pageRange);
  })
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=clearPageBlob&serviceClient=#client")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • getPageBlobRanges
from("direct:start")
  .process(exchange -> {
    final PageRange pageRange = new PageRange().setStart(0).setEnd(511);

    exchange.getIn().setHeader(BlobConstants.PAGE_BLOB_RANGE, pageRange);
  })
  .to("azure-storage-blob://camelazure/container1?blobName=blob&operation=getPageBlobRanges&serviceClient=#client")
  .log("${body}")
  .to("mock:result");
Copy to Clipboard Toggle word wrap
  • copyBlob
from("direct:copyBlob")
  .process(exchange -> {
    exchange.getIn().setHeader(BlobConstants.BLOB_NAME, "file.txt");
    exchange.getMessage().setHeader(BlobConstants.SOURCE_BLOB_CONTAINER_NAME, "containerblob1");
    exchange.getMessage().setHeader(BlobConstants.SOURCE_BLOB_ACCOUNT_NAME, "account");
  })
  .to("azure-storage-blob://account/containerblob2?operation=copyBlob&sourceBlobAccessKey=RAW(accessKey)")
  .to("mock:result");
Copy to Clipboard Toggle word wrap

このようにして、アカウント 'account' のコンテナー containerblob1 内の file.txt が、同じアカウントのコンテナー containerblob2 にコピーされます。

13.6.8. 開発ノート (重要)

すべての統合テストは Testcontainers を使用し、デフォルトで実行されます。Azure サービスを使用してすべての統合テストを実行できるようにするには、Azure の accessKey と accountName を取得する必要があります。モック単体テストに加えて、マイナーバージョンのアップグレードでも Azure クライアントが問題を起こす可能性があるため、変更を加えたり、クライアントのアップグレードごとに統合テストを実行したりする必要があります。統合テストを実行するには、このコンポーネントディレクトリーで次の maven コマンドを実行します。

mvn verify -PfullTests -DaccountName=myacc -DaccessKey=mykey
Copy to Clipboard Toggle word wrap

ここで、accountName は Azure アカウント名で、accessKey は Azure portal から生成されるアクセスキーです。

13.7. Spring Boot 自動設定

コンポーネントは、以下に記載される 32 のオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

14.2. URI 形式

azure-storage-queue://accountName[/queueName][?options]
Copy to Clipboard Toggle word wrap

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 DSLDataFormat DSL を使用することもできます。

オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。

プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。

14.4. コンポーネントオプション

Azure Storage Queue Service コンポーネントは、以下に示す 15 のオプションをサポートしています。

Expand
名前説明デフォルトタイプ

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 へのキューサービス操作のヒント。

列挙値:

  • listQueues
  • createQueue
  • deleteQueue
  • clearQueue
  • sendMessage
  • deleteMessage
  • receiveMessages
  • peekMessages
  • updateMessage
 

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
Copy to Clipboard Toggle word wrap

パスおよびクエリーパラメーターを使用します。

14.5.1. パスパラメーター (2 パラメーター)

Expand
名前説明デフォルトタイプ

accountName (共通)

Azure キューサービスでの認証に使用される Azure アカウント名。

 

String

queueName (共通)

キューリソース名。

 

String

14.5.2. クエリーパラメーター (31 パラメーター)

Expand
名前説明デフォルトタイプ

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 がエクスチェンジを作成する際に交換パターンを設定します。

列挙値:

  • InOnly
  • InOut
  • InOptionalOut
 

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 へのキューサービス操作のヒント。

列挙値:

  • listQueues
  • createQueue
  • deleteQueue
  • clearQueue
  • sendMessage
  • deleteMessage
  • receiveMessages
  • peekMessages
  • updateMessage
 

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
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • OFF

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
  • SECONDS
  • 時間

MILLISECONDS

TimeUnit

useFixedDelay (scheduler)

固定遅延または固定レートを使用するかどうかを制御します。詳細は、JDK の ScheduledExecutorService を参照してください。

true

boolean

accessKey (security)

azure キューサービスでの認証に使用される、関連付けられた azure アカウント名のアクセスキー。

 

String

認証情報 (セキュリティー)

StorageSharedKeyCredential を挿入して Azure クライアントを作成できます。これには重要な認証情報が保持されます。

 

StorageSharedKeyCredential

必須情報オプション

このコンポーネントを使用するには、必要な Azure 認証情報を提供するための 3 つのオプションがあります。

  • Azure アカウントの accountNameaccessKey を指定します。これが最も簡単な開始方法です。accessKey は、Azure portal から生成できます。
  • 認証情報 オプションに提供できる StorageSharedKeyCredential インスタンスを提供します。
  • serviceClient に提供できる QueueServiceClient インスタンスを提供します。注: 特定のクライアントを作成する必要はありません (例: QueueClient)。QueueServiceClient は、下位レベルのクライアントを取得するために使用できる上位レベルを表します。

14.6. 用途

たとえば、storageAccount ストレージアカウントのキュー messageQueue からメッセージコンテンツを取得するには、次のスニペットを使用します。

from("azure-storage-queue://storageAccount/messageQueue?accessKey=yourAccessKey").
to("file://queuedirectory");
Copy to Clipboard Toggle word wrap

14.6.1. コンポーネント producer によって評価されるメッセージヘッダー

Expand
ヘッダー変数名タイプ操作説明

CamelAzureStorageQueueSegmentOptions

QueueConstants.QUEUES_SEGMENT_OPTIONS

QueuesSegmentOptions

listQueues

キューを一覧表示するためのオプション

CamelAzureStorageQueueTimeout

QueueConstants.TIMEOUT

期間

すべて

それを超えると \{@link RuntimeException} が発生する任意のタイムアウト値。

CamelAzureStorageQueueMetadata

QueueConstants.METADATA

Map<String,String>

createQueue

キューに関連付けるメタデータ

CamelAzureStorageQueueTimeToLive

QueueConstants.TIME_TO_LIVE

期間

sendMessage

メッセージがキュー内で存続する時間。設定されていない場合、値はデフォルトで 7 日になります。-1 が渡されると、メッセージは期限切れになりません。存続時間は -1 または任意の正の数でなければなりません。

CamelAzureStorageQueueVisibilityTimeout

QueueConstants.VISIBILITY_TIMEOUT

期間

sendMessage, receiveMessages, updateMessage

メッセージがキューに表示されないタイムアウト期間。設定されていない場合、値はデフォルトで 0 になり、メッセージはすぐに表示されます。タイムアウトは 0 秒から 7 日の間にする必要があります。

CamelAzureStorageQueueCreateQueue

QueueConstants.CREATE_QUEUE

boolean

sendMessage

true に設定すると、メッセージを送信するときにキューが自動的に作成されます。

CamelAzureStorageQueuePopReceipt

QueueConstants.POP_RECEIPT

String

deleteMessage, updateMessage

メッセージを削除または更新するために一致する必要がある一意の識別子。

CamelAzureStorageQueueMessageId

QueueConstants.MESSAGE_ID

String

deleteMessage, updateMessage

削除または更新するメッセージの ID。

CamelAzureStorageQueueMaxMessages

QueueConstants.MAX_MESSAGES

Integer

receiveMessagespeekMessages

取得するメッセージの最大数。要求された数よりもキューに存在するメッセージが少ない場合は、すべてのメッセージが返されます。空のままにすると、1 つのメッセージのみが取得されます。許可される範囲は 1 から 32 のメッセージです。

CamelAzureStorageQueueOperation

QueueConstants.QUEUE_OPERATION

QueueOperationDefinition

すべて

実行する producer 操作を指定します。producer 操作に関連するこのページのドキュメントを参照してください。

CamelAzureStorageQueueName

QueueConstants.QUEUE_NAME

String

すべて

キュー名をオーバーライドします。

14.6.2. コンポーネントの producer または consumer によって設定されるメッセージヘッダー

Expand
ヘッダー変数名タイプ説明

CamelAzureStorageQueueMessageId

QueueConstants.MESSAGE_ID

String

キューに送信されるメッセージの ID。

CamelAzureStorageQueueInsertionTime

QueueConstants.INSERTION_TIME

OffsetDateTime

メッセージがキューに挿入された時刻。

CamelAzureStorageQueueExpirationTime

QueueConstants.EXPIRATION_TIME

OffsetDateTime

メッセージが期限切れになり、自動的に削除される時間。

CamelAzureStorageQueuePopReceipt

QueueConstants.POP_RECEIPT

String

この値は、メッセージを削除/更新するために必要です。この popreceipt を使用して削除に失敗した場合、メッセージは別のクライアントによってキューから取り出されています。

CamelAzureStorageQueueTimeNextVisible

QueueConstants.TIME_NEXT_VISIBLE

OffsetDateTime

メッセージが再びキューに表示される時間。

CamelAzureStorageQueueDequeueCount

QueueConstants.DEQUEUE_COUNT

long

メッセージがデキューされた回数。

CamelAzureStorageQueueRawHttpHeaders

QueueConstants.RAW_HTTP_HEADERS

HttpHeaders

ユーザーが使用できる解析されていない httpHeaders を返します。

14.6.3. 高度な Azure ストレージキューの設定

Camel アプリケーションがファイアウォールの背後で実行されている場合、または QueueServiceClient インスタンス設定をより詳細に制御する必要がある場合は、独自のインスタンスを作成できます。

StorageSharedKeyCredential credential = new StorageSharedKeyCredential("yourAccountName", "yourAccessKey");
String uri = String.format("https://%s.queue.core.windows.net", "yourAccountName");

QueueServiceClient client = new QueueServiceClientBuilder()
                          .endpoint(uri)
                          .credential(credential)
                          .buildClient();
// This is camel context
context.getRegistry().bind("client", client);
Copy to Clipboard Toggle word wrap

次に、Camel azure-storage-queue コンポーネント設定でこのインスタンスを参照します。

from("azure-storage-queue://cameldev/queue1?serviceClient=#client")
.to("file://outputFolder?fileName=output.txt&fileExist=Append");
Copy to Clipboard Toggle word wrap

14.6.4. レジストリー内の QueueServiceClient クライアントの自動検出

このコンポーネントは、レジストリー内の QueueServiceClient Bean の存在を検出できます。そのタイプの唯一のインスタンスである場合、それはクライアントとして使用され、上記の例のように uri パラメーターとして定義する必要はありません。これは、エンドポイントのよりスマートな設定に非常に役立つ場合があります。

14.6.5. Azure Storage Queue Producer の操作

Camel Azure Storage Queue コンポーネントは、producer 側で幅広い操作を提供します。

サービスレベルの操作

これらの操作には、accountName必要 です。

Expand
操作説明

listQueues

指定されたマーカーから開始して、フィルターを通過するストレージアカウント内のキューを一覧表示します。

キューレベルでの操作

これらの操作には、accountNamequeueName必要です

Expand
操作説明

createQueue

新しいキューを作成します。

deleteQueue

キューを完全に削除します。

clearQueue

キュー内のすべてのメッセージを削除します..

sendMessage

デフォルトのプロデューサ操作 指定された存続時間とメッセージがキューに表示されないタイムアウト期間を指定してメッセージを送信します。メッセージテキストは、Exchange メッセージ本文から評価されます。デフォルトでは、キューが存在しない場合、最初に空のキューが作成されます。これを無効にする場合は、config createQueue またはヘッダー CamelAzureStorageQueueCreateQueuefalse に設定します。

deleteMessage

指定されたメッセージをキューから削除します。

receiveMessages

キューからメッセージを最大数まで取得し、タイムアウト期間中は他の操作から非表示にします。ただし、信頼性の理由から、キューからメッセージをデキューしません。

peekMessages

キューの先頭からメッセージの最大数までメッセージをピークします。

updateMessage

キュー内の特定のメッセージを新しいメッセージで更新し、表示タイムアウトをリセットします。メッセージテキストは、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");
Copy to Clipboard Toggle word wrap

14.6.7. producer 操作の例

  • listQueues:
from("direct:start")
    .process(exchange -> {
      // set the header you want the producer to evaluate, refer to the previous
      // section to learn about the headers that can be set
      // e.g, to only returns list of queues with 'awesome' prefix:
      exchange.getIn().setHeader(QueueConstants.QUEUES_SEGMENT_OPTIONS, new QueuesSegmentOptions().setPrefix("awesome"));
     })
    .to("azure-storage-queue://cameldev?serviceClient=#client&operation=listQueues")
    .log("${body}")
    .to("mock:result");
Copy to Clipboard Toggle word wrap
  • createQueue:
from("direct:start")
    .process(exchange -> {
      // set the header you want the producer to evaluate, refer to the previous
      // section to learn about the headers that can be set
      // e.g:
      exchange.getIn().setHeader(QueueConstants.QUEUE_NAME, "overrideName");
     })
    .to("azure-storage-queue://cameldev/test?serviceClient=#client&operation=createQueue");
Copy to Clipboard Toggle word wrap
  • deleteQueue:
from("direct:start")
    .process(exchange -> {
      // set the header you want the producer to evaluate, refer to the previous
      // section to learn about the headers that can be set
      // e.g:
      exchange.getIn().setHeader(QueueConstants.QUEUE_NAME, "overrideName");
     })
    .to("azure-storage-queue://cameldev/test?serviceClient=#client&operation=deleteQueue");
Copy to Clipboard Toggle word wrap
  • clearQueue:
from("direct:start")
    .process(exchange -> {
      // set the header you want the producer to evaluate, refer to the previous
      // section to learn about the headers that can be set
      // e.g:
      exchange.getIn().setHeader(QueueConstants.QUEUE_NAME, "overrideName");
     })
    .to("azure-storage-queue://cameldev/test?serviceClient=#client&operation=clearQueue");
Copy to Clipboard Toggle word wrap
  • sendMessage:
from("direct:start")
    .process(exchange -> {
      // set the header you want the producer to evaluate, refer to the previous
      // section to learn about the headers that can be set
      // e.g:
      exchange.getIn().setBody("message to send");
      // we set a visibility of 1min
      exchange.getIn().setHeader(QueueConstants.VISIBILITY_TIMEOUT, Duration.ofMinutes(1));
     })
    .to("azure-storage-queue://cameldev/test?serviceClient=#client");
Copy to Clipboard Toggle word wrap
  • deleteMessage:
from("direct:start")
    .process(exchange -> {
      // set the header you want the producer to evaluate, refer to the previous
      // section to learn about the headers that can be set
      // e.g:
      // Mandatory header:
      exchange.getIn().setHeader(QueueConstants.MESSAGE_ID, "1");
      // Mandatory header:
      exchange.getIn().setHeader(QueueConstants.POP_RECEIPT, "PAAAAHEEERXXX-1");
     })
    .to("azure-storage-queue://cameldev/test?serviceClient=#client&operation=deleteMessage");
Copy to Clipboard Toggle word wrap
  • receiveMessages:
from("direct:start")
    .to("azure-storage-queue://cameldev/test?serviceClient=#client&operation=receiveMessages")
    .process(exchange -> {
        final List<QueueMessageItem> messageItems = exchange.getMessage().getBody(List.class);
        messageItems.forEach(messageItem -> System.out.println(messageItem.getMessageText()));
    })
   .to("mock:result");
Copy to Clipboard Toggle word wrap
  • peekMessages:
from("direct:start")
    .to("azure-storage-queue://cameldev/test?serviceClient=#client&operation=peekMessages")
    .process(exchange -> {
        final List<PeekedMessageItem> messageItems = exchange.getMessage().getBody(List.class);
        messageItems.forEach(messageItem -> System.out.println(messageItem.getMessageText()));
    })
   .to("mock:result");
Copy to Clipboard Toggle word wrap
  • updateMessage:
from("direct:start")
   .process(exchange -> {
       // set the header you want the producer to evaluate, refer to the previous
       // section to learn about the headers that can be set
       // e.g:
       exchange.getIn().setBody("new message text");
       // Mandatory header:
       exchange.getIn().setHeader(QueueConstants.MESSAGE_ID, "1");
       // Mandatory header:
       exchange.getIn().setHeader(QueueConstants.POP_RECEIPT, "PAAAAHEEERXXX-1");
       // Mandatory header:
       exchange.getIn().setHeader(QueueConstants.VISIBILITY_TIMEOUT, Duration.ofMinutes(1));
    })
    .to("azure-storage-queue://cameldev/test?serviceClient=#client&operation=updateMessage");
Copy to Clipboard Toggle word wrap

14.6.8. 開発ノート (重要)

このコンポーネントで開発する場合、統合テストを実行するために Azure accessKey を取得する必要があります。モック単体テストに加えて、マイナーバージョンのアップグレードでも Azure クライアントが問題を起こす可能性があるため、変更を加えたり、クライアントのアップグレードごとに統合テストを実行したりする必要があります。統合テストを実行するには、このコンポーネントディレクトリーで次の maven コマンドを実行します。

mvn verify -PfullTests -DaccountName=myacc -DaccessKey=mykey
Copy to Clipboard Toggle word wrap

ここで、accountName は Azure アカウント名で、accessKey は Azure portal から生成されるアクセスキーです。

14.7. Spring Boot 自動設定

コンポーネントは、以下に記載される 16 のオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

15.2. URI 形式

bean:beanName[?options]
Copy to Clipboard Toggle word wrap

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 DSLDataFormat DSL を使用することもできます。

オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。

プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。

15.4. コンポーネントオプション

Bean コンポーネントは、以下に示す 4 つのオプションをサポートします。

Expand
名前説明デフォルトタイプ

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 レジストリーに委譲され、設定に応じてシングルトンまたはプロトタイプスコープのいずれかとして機能します。したがって、いつプロトタイプを使用するかは委譲されたレジストリーにより異なります。

列挙値:

  • シングルトン
  • Request
  • プロトタイプ

シングルトン

BeanScope

autowiredEnabled (上級)

自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。

true

boolean

15.5. エンドポイントオプション

Bean エンドポイントは、URI 構文を使用して設定されます。

bean:beanName
Copy to Clipboard Toggle word wrap

パスおよびクエリーパラメーターを使用します。

15.5.1. パスパラメーター(1 パラメーター)

Expand
名前説明デフォルトタイプ

beanName (共通)

必須: 呼び出す Bean の名前を設定します。

 

String

15.5.2. クエリーパラメーター (5 パラメーター)

Expand
名前説明デフォルトタイプ

cache (共通)

非推奨 代わりにスコープオプションを使用してください。

 

Boolean

method (共通)

Bean で呼び出すメソッドの名前を設定します。

 

String

scope (共通)

Bean のスコープ。シングルトンスコープ (デフォルト) を使用する場合、Bean は 1 回のみ作成または検索され、エンドポイントの有効期間に再利用されます。同時スレッドが同時に Bean を呼び出す場合、Bean はスレッドセーフである必要があります。リクエストスコープを使用する場合、Bean はリクエストごとに 1 回作成またはルックアップされます (交換)。リクエストの処理中に Bean に状態を保存する場合や、リクエストの処理中に同じ Bean インスタンスを複数回呼び出す場合に使用できます。インスタンスは同じリクエストからのみ呼び出されるため、Bean はスレッドセーフである必要はありません。プロトタイプコープを使用すると、呼び出しごとに Bean がルックアップまたは作成されます。ただしルックアップの場合、これは Spring や CDI (使用されている場合) などの Bean レジストリーに委譲され、設定に応じてシングルトンまたはプロトタイプスコープのいずれかとして機能します。したがって、いつプロトタイプを使用するかは委譲されたレジストリーにより異なります。

列挙値:

  • シングルトン
  • Request
  • プロトタイプ

シングルトン

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: エンドポイントを入力として使用することを検討してください。

ProxyHelpercreateProxy() メソッドを使用して、BeanExchange を生成して任意のエンドポイントに送信するプロキシーを作成できます。

XML DSL を使用した同じルート:

<route>
   <from uri="direct:hello"/>
   <to uri="bean:bye"/>
</route>
Copy to Clipboard Toggle word wrap

15.7. エンドポイントとしての Bean

Camel は、エンドポイントとしての Bean の呼び出しもサポートします。エクスチェンジが myBean にルーティングされると、Camel は Bean バインディングを使用して Bean を呼び出します。Bean のソースは plain POJO です。

Camel は Bean バインディングを使用して sayHello メソッドを呼び出し、エクスチェンジの In ボディを String タイプに変換し、メソッドの出力をエクスチェンジの Out ボディに保存します。

15.8. Java DSL Bean 構文

Java DSL には、コンポーネントのシンタックスシュガーが付属しています。Bean を明示的にエンドポイント (つまり to ("bean:beanName")) として指定する代わりに、次の構文を使用できます。

// Send message to the bean endpoint
// and invoke method resolved using Bean Binding.
from("direct:start").bean("beanName");

// Send message to the bean endpoint
// and invoke given method.
from("direct:start").bean("beanName", "methodName");
Copy to Clipboard Toggle word wrap

Bean への参照の名前を渡す代わりに (Camel がレジストリーでそれを検索できるようにするため)、Bean 自体を指定できます。

// Send message to the given bean instance.
from("direct:start").bean(new ExampleBean());

// Explicit selection of bean method to be invoked.
from("direct:start").bean(new ExampleBean(), "methodName");

// Camel will create the instance of bean and cache it for you.
from("direct:start").bean(ExampleBean.class);
Copy to Clipboard Toggle word wrap

15.9. Bean バインディング

呼び出される Bean メソッドの選択方法 (method パラメーターで明示的に指定されていない場合) と、メッセージからパラメーター値が構築される方法は、Camel 内のさまざまな Bean 統合メカニズム全体で使用される Bean バインディングメカニズムによりすべて定義されます。

15.10. Spring Boot 自動設定

このコンポーネントは、以下に示す 13 のオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

16.2. URI 形式

bean-validator:label[?options]
Copy to Clipboard Toggle word wrap

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 DSLDataFormat DSL を使用することもできます。

オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。

プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。

16.4. コンポーネントオプション

Bean バリデーターコンポーネントは、以下に示す 8 つのオプションをサポートします。

Expand
名前説明デフォルトタイプ

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
Copy to Clipboard Toggle word wrap

パスおよびクエリーパラメーターを使用します。

16.5.1. パスパラメーター(1 パラメーター)

Expand
名前説明デフォルトタイプ

label (producer)

必須 ラベルは、エンドポイントを記述する任意のテキスト値です。

 

String

16.5.2. クエリーパラメーター (8 パラメーター)

Expand
名前説明デフォルトタイプ

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");
Copy to Clipboard Toggle word wrap

<bean id="myValidationProviderResolver" class="org.apache.camel.component.bean.validator.HibernateValidationProviderResolver"/>
Copy to Clipboard Toggle word wrap

カスタムの ValidationProviderResolver が定義されておらず、バリデーターコンポーネントが OSGi 環境にデプロイされている場合、HibernateValidationProviderResolver は自動的に使用されます。

16.7. 例

以下を持つ java Bean があると仮定します。アノテーション:

Car.java

public class Car {

    @NotNull
    private String manufacturer;

    @NotNull
    @Size(min = 5, max = 14, groups = OptionalChecks.class)
    private String licensePlate;

    // getter and setter
}
Copy to Clipboard Toggle word wrap

カスタムバリデーショングループのインターフェイス定義:

OptionalChecks.java

public interface OptionalChecks {
}
Copy to Clipboard Toggle word wrap

以下の Camel ルート。manufacturer および licensePlate 属性の @NotNull 制約のみが検証されます (Camel はデフォルトのグループ javax.validation.groups.Default を使用します)。

from("direct:start")
.to("bean-validator://x")
.to("mock:end")
Copy to Clipboard Toggle word wrap

OptionalChecks グループからの制約を確認する場合は、以下のようなルートを定義する必要があります。

from("direct:start")
.to("bean-validator://x?group=OptionalChecks")
.to("mock:end")
Copy to Clipboard Toggle word wrap

両方のグループからの制約を確認する場合は、最初に新しいインターフェイスを定義する必要があります。

AllChecks.java

@GroupSequence({Default.class, OptionalChecks.class})
public interface AllChecks {
}
Copy to Clipboard Toggle word wrap

ルート定義は以下のようになります。

from("direct:start")
.to("bean-validator://x?group=AllChecks")
.to("mock:end")
Copy to Clipboard Toggle word wrap

また、独自のメッセージインターポレーター、通過可能なリゾルバー、および制約バリデーターファクトリーを提供する必要がある場合は、次のようなルートを記述する必要があります。

<bean id="myMessageInterpolator" class="my.ConstraintValidatorFactory" />
<bean id="myTraversableResolver" class="my.TraversableResolver" />
<bean id="myConstraintValidatorFactory" class="my.ConstraintValidatorFactory" />
Copy to Clipboard Toggle word wrap
from("direct:start")
.to("bean-validator://x?group=AllChecks&messageInterpolator=#myMessageInterpolator
&traversableResolver=#myTraversableResolver&constraintValidatorFactory=#myConstraintValidatorFactory")
.to("mock:end")
Copy to Clipboard Toggle word wrap

また、制約を Java アノテーションではなく、XML として記述することも可能です。この場合、次のようなファイル META-INF/validation.xml を提供する必要があります。

validation.xml

<validation-config
    xmlns="http://jboss.org/xml/ns/javax/validation/configuration"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration">

    <default-provider>org.hibernate.validator.HibernateValidator</default-provider>
    <message-interpolator>org.hibernate.validator.engine.ResourceBundleMessageInterpolator</message-interpolator>
    <traversable-resolver>org.hibernate.validator.engine.resolver.DefaultTraversableResolver</traversable-resolver>
    <constraint-validator-factory>org.hibernate.validator.engine.ConstraintValidatorFactoryImpl</constraint-validator-factory>
    <constraint-mapping>/constraints-car.xml</constraint-mapping>

</validation-config>
Copy to Clipboard Toggle word wrap

constraints-car.xml ファイル

constraints-car.xml

<constraint-mappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.0.xsd"
    xmlns="http://jboss.org/xml/ns/javax/validation/mapping">

    <default-package>org.apache.camel.component.bean.validator</default-package>

    <bean class="CarWithoutAnnotations" ignore-annotations="true">
        <field name="manufacturer">
            <constraint annotation="javax.validation.constraints.NotNull" />
        </field>

        <field name="licensePlate">
            <constraint annotation="javax.validation.constraints.NotNull" />

            <constraint annotation="javax.validation.constraints.Size">
                <groups>
                    <value>org.apache.camel.component.bean.validator.OptionalChecks</value>
                </groups>
                <element name="min">5</element>
                <element name="max">14</element>
            </constraint>
        </field>
    </bean>
</constraint-mappings>
Copy to Clipboard Toggle word wrap

OrderedChecks のサンプルルート定義の XML 構文を次に示します。

ボディーには検証するクラスのインスタンスを含める必要があることに注意してください。

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">

    <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
        <route>
            <from uri="direct:start"/>
            <to uri="bean-validator://x?group=org.apache.camel.component.bean.validator.OrderedChecks"/>
        </route>
    </camelContext>
</beans>
Copy to Clipboard Toggle word wrap

16.8. Spring Boot 自動設定

このコンポーネントは、以下に示す 9 のオプションをサポートします。

Expand
名前説明デフォルトタイプ

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 数値の場合、精度と小数点またはグループ区切り記号も定義できます。

Expand
タイプフォーマットの種類パターン例リンク

日付

DateFormat

dd-MM-yyyy

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/text/SimpleDateFormat.html

Decimal*

DecimalFormat

##.###.###

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>
Copy to Clipboard Toggle word wrap

17.2. オプション

Bindy データ形式は、以下に示す 5 つのオプションをサポートしています。

Expand
名前デフォルトJava タイプ説明

type

 

Enum

必須: Csv、Fixed、KeyValue のいずれを使用できます。

列挙値:

  • Csv
  • Fixed
  • KeyValue

classType

 

String

使用するモデルクラスの名前。

locale

 

String

米国の us など、使用するデフォルトのロケールを設定します。JVM プラットフォームのデフォルトロケールを使用するには、default という名前を使用します。

unwrapSingleInstance

 

Boolean

アンマーシャリング時に、java.util.List にラップする代わりに、単一のインスタンスをアンラップして返す必要があります。

allowEmptyStream

 

Boolean

アンマーシャルプロセスで空のストリームを許可するかどうか。true の場合、レコードのないボディが提供されたときに例外は出力されません。

17.3. アノテーション

作成されたアノテーションにより、モデルのさまざまな概念を次のように POJO にマップできます。

  • レコードのタイプ (CSV、キーと値のペア (FIX メッセージなど)、固定長など)、
  • リンク (別のオブジェクトにあるオブジェクトをリンクする)、
  • DataField とそのプロパティー (int、type、…)、
  • KeyValuePairField (FIX 財務メッセージにあるようなキー = 値形式の場合)、
  • セクション (ヘッダー、本文、およびフッターセクションを識別する)、
  • OneToMany,
  • BindyConverter,
  • FormatFactories

このセクションでは、上記について説明します。

17.3.1. 1.CsvRecord

CsvRecord アノテーションは、モデルのルートクラスを識別するために使用されます。レコード = CSV ファイルの 1 行を表し、複数の子モデルクラスにリンクできます。

Expand
アノテーション名レコードの種類レベル

CsvRecord

CSV

クラス

Expand
パラメーター名タイプ必須/任意デフォルト値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
Copy to Clipboard Toggle word wrap
@CsvRecord( separator = "," )
public Class Order {

}
Copy to Clipboard Toggle word wrap

ケース 2: separator = ';'

前のケースと比較して、ここでのセパレーターは , の代わり ; を使用しています。

10; J; Pauline; M; XD12345678; Fortis Dynamic 15/15; 2500; USD; 08-01-2009
Copy to Clipboard Toggle word wrap
@CsvRecord( separator = ";" )
public Class Order {

}
Copy to Clipboard Toggle word wrap

ケース 3: separator = '|'

前のケースと比較して、ここでのセパレーターは ; の代わり | を使用しています。

10| J| Pauline| M| XD12345678| Fortis Dynamic 15/15| 2500| USD| 08-01-2009
Copy to Clipboard Toggle word wrap
@CsvRecord( separator = "\\|" )
public Class Order {

}
Copy to Clipboard Toggle word wrap

ケース 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"
Copy to Clipboard Toggle word wrap
@CsvRecord( separator = "\",\"" )
public Class Order {

}
Copy to Clipboard Toggle word wrap

Bindy は、レコードが一重引用符または二重引用符で囲まれているかどうかを自動的に検出し、CSV からオブジェクトへのアンマーシャリング時にそれらの引用符を自動的に削除します。したがって、セパレーターに引用符を 含めず に、単に以下を実行するだけです。

"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15","2500","USD","08-01-2009"
Copy to Clipboard Toggle word wrap
@CsvRecord( separator = "," )
public Class Order {

}
Copy to Clipboard Toggle word wrap

Object から CSV にマーシャリングして引用符を使用する場合は、以下に示すように@CsvRecordquote 属性を使用して、使用する引用符を指定する必要があることに注意してください。

@CsvRecord( separator = ",", quote = "\"" )
public Class Order {

}
Copy to Clipboard Toggle word wrap

ケース 5: separator & skipFirstLine

この機能は、クライアントがファイルの最初の行にデータフィールドの名前を入れる場合に役立ちます。

order id, client id, first name, last name, isin code, instrument name, quantity, currency, date
Copy to Clipboard Toggle word wrap

解析プロセス中にこの最初の行をスキップする必要があることを bindy に通知するには、次の属性を使用します。

@CsvRecord(separator = ",", skipFirstLine = true)
public Class Order {

}
Copy to Clipboard Toggle word wrap

ケース 6: generateHeaderColumns

生成された CSV の最初の行に追加するには、次のようにアノテーションで属性 generateHeaderColumns を true に設定する必要があります。

@CsvRecord( generateHeaderColumns = true )
public Class Order {

}
Copy to Clipboard Toggle word wrap

その結果、アンマーシャリングプロセス中の 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
Copy to Clipboard Toggle word wrap

ケース 7: carriage return

camel-bindy が実行されるプラットフォームが Windows ではなく、Macintosh または Unix である場合には、次のように crlf プロパティーを変更できます。WINDOWS、UNIX、または MAC の 3 つの値を使用できます。

@CsvRecord(separator = ",", crlf="MAC")
public Class Order {

}
Copy to Clipboard Toggle word wrap

さらに、何らかの理由で別の行末文字を追加する必要がある場合は、crlf パラメーターを使用して指定できます。次の例では、コンマとそれに続く改行文字で行を終了できます。

@CsvRecord(separator = ",", crlf=",\n")
public Class Order {

}
Copy to Clipboard Toggle word wrap

ケース 8: isOrdered

モデルから CSV レコードを作成する際に従う順序が、解析時に使用される順序と異なる場合があります。次に、この場合、属性 isOrdered = true を使用して、DataField アノテーションの属性 position と組み合わせて指定できます。

@CsvRecord(isOrdered = true)
public Class Order {

   @DataField(pos = 1, position = 11)
   private int orderNr;

   @DataField(pos = 2, position = 10)
   private String clientNr;

}
Copy to Clipboard Toggle word wrap
注記

pos はファイルストリームの解析に、position は CSV の生成に使用されます。

17.3.3. 3.DataField

DataField アノテーションは、フィールドのプロパティーを定義します。各データフィールドは、レコード内の位置、タイプ (string、int、date など)、およびパターン (任意) によって識別されます。

Expand
アノテーション名レコードの種類レベル

DataField

all

プロパティー

Expand
パラメーター名タイプ必須/任意デフォルト値Info

pos

int

 

入力レコード内のデータの位置。1 から開始する必要があります (必須)。位置パラメーターを参照してください。

align

String

 

R

テキストを右または左に揃えます。値 <tt>R</tt> または <tt>L</tt> を使用します。

clip

boolean

 

false

固定長の使用時に許容される長さを超える場合は、フィールド内のデータを切り取ることを示します。

columnName

String

  

ヘッダー列の名前 (オプション)。プロパティーの名前をデフォルトとして使用します。CsvRecordgenerateHeaderColumns = true の場合にのみ適用可能

decimalSeparator

String

  

BigDecimal 数値で使用する小数点区切り記号

defaultValue

String

  

値が設定されていない場合のフィールドのデフォルト値

delimiter

String

  

フィールドが可変長の場合に使用するオプションの区切り文字

groupingSeparator

String

  

123,456.789 などのグループ化された数値にフォーマット/解析する場合に、BigDecimal 数値と併用するグループ化セパレーター。

impliedDecimalSeparator

boolean

 

false

指定された位置に暗黙の小数点があるかどうかを示します

長さ

int

 

0

レコードが固定長に設定されている場合のデータブロックの長さ (文字数)

lengthPos

int

 

0

このフィールドで必要とされる固定長を定義するレコードのデータフィールドを識別します

メソッド

String

  

このようなカスタマイズを DataField に適用するために呼び出すメソッド名。これは、データフィールド自体のメソッドである必要があります。そうでない場合には、クラスのメソッドの静的な完全修飾名を指定する必要があります。(例: org.apache.camel.dataformat.bindy.csv.BindySimpleCsvFunctionWithExternalMethodTest.replaceToBar の単体テストを参照)

name

String

  

フィールドの名前 (オプション)

paddingChar

char

  

レコードが固定長に設定されている場合に埋め込む文字

pattern

String

  

Java フォーマッター (例: SimpleDateFormat) がデータの変換に使用するパターン (オプション)。パターンを使用する場合は、バインドデータ形式にロケールを設定することを推奨します。us などの既知のロケールに設定するか、default を使用してプラットフォームのデフォルトロケールを使用します。

position

int

 

0

生成された出力メッセージ内のフィールドの位置 (1 から開始する必要があります)。生成された CSV 内のフィールドの位置 (出力メッセージ) が、入力位置 (pos) と比較して異なる必要がある場合に使用します。pos パラメーターを参照してください。

精度

int

 

0

作成される \{@link java.math.BigDecimal} 数値の精度

必須

boolean

 

false

フィールドが必須かどうかを示します

rounding

String

 

CEILING

BigDecimal の丸め/スケーリングに使用される丸めモード 値: UP、DOWN、CEILING、FLOOR、HALF_UP、HALF_DOWN、HALF_EVEN、UNNECESSARY (例: Number = 123456.789, Precision = 2, Rounding = CEILING Result : 123456.79)

timezone

String

  

使用するタイムゾーン。

trim

boolean

 

false

値をトリミングする必要があるかどうかを示します

ケース 1: pos

このパラメーター/属性は、CSV レコード内のフィールドの位置を表します。

Position

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 5)
    private String isinCode;

}
Copy to Clipboard Toggle word wrap

この例でわかるように、位置は 1 から始まりますが、クラス Order では続きは 5 になります。2 から 4 までの数字はクラス Client で定義されています (以下を参照)。

位置は別のモデルクラスで継続する

public class Client {

    @DataField(pos = 2)
    private String clientNr;

    @DataField(pos = 3)
    private String firstName;

    @DataField(pos = 4)
    private String lastName;
}
Copy to Clipboard Toggle word wrap

ケース 2: pattern

パターンを使用すると、データの形式を強化または検証できます

Pattern

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 5)
    private String isinCode;

    @DataField(name = "Name", pos = 6)
    private String instrumentName;

    @DataField(pos = 7, precision = 2)
    private BigDecimal amount;

    @DataField(pos = 8)
    private String currency;

    // pattern used during parsing or when the date is created
    @DataField(pos = 9, pattern = "dd-MM-yyyy")
    private Date orderDate;
}
Copy to Clipboard Toggle word wrap

ケース 3: precision

精度は、数値の小数部分を定義する場合に役立ちます。

精度

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @Link
    private Client client;

    @DataField(pos = 5)
    private String isinCode;

    @DataField(name = "Name", pos = 6)
    private String instrumentName;

    @DataField(pos = 7, precision = 2)
    private BigDecimal amount;

    @DataField(pos = 8)
    private String currency;

    @DataField(pos = 9, pattern = "dd-MM-yyyy")
    private Date orderDate;
}
Copy to Clipboard Toggle word wrap

ケース 4: 出力で位置が異なる

position 属性は、生成された CSV レコードにフィールドを配置する方法を bindy に通知します。デフォルトでは、使用される位置は属性 pos で定義された位置に対応します。位置が異なる場合 (つまり、マーシャリングとアンマーシャリングを比較する非対称プロセスがあることを意味します)、position を使用してこれを指定できます。

以下に例を示します。

出力位置が異なる

@CsvRecord(separator = ",", isOrdered = true)
public class Order {

    // Positions of the fields start from 1 and not from 0

    @DataField(pos = 1, position = 11)
    private int orderNr;

    @DataField(pos = 2, position = 10)
    private String clientNr;

    @DataField(pos = 3, position = 9)
    private String firstName;

    @DataField(pos = 4, position = 8)
    private String lastName;

    @DataField(pos = 5, position = 7)
    private String instrumentCode;

    @DataField(pos = 6, position = 6)
    private String instrumentNumber;
}
Copy to Clipboard Toggle word wrap

アノテーション @DataField のこの属性は、アノテーション @CsvRecord の属性 isOrdered = true と組み合わせて使用する必要があります。

ケース 5: 必須

フィールドが必須の場合は、required 属性を true に設定して使用します。

必須

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 2, required = true)
    private String clientNr;

    @DataField(pos = 3, required = true)
    private String firstName;

    @DataField(pos = 4, required = true)
    private String lastName;
}
Copy to Clipboard Toggle word wrap

このフィールドがレコードに存在しない場合には、パーサーにより次の情報を含めてエラーが報告されます。

Some fields are missing (optional or mandatory), line :
Copy to Clipboard Toggle word wrap

ケース 6: trim

フィールドの先頭および/または末尾にスペースがあり、処理する前に削除する必要がある場合は、trim 属性を true に設定してください。

Trim

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1, trim = true)
    private int orderNr;

    @DataField(pos = 2, trim = true)
    private Integer clientNr;

    @DataField(pos = 3, required = true)
    private String firstName;

    @DataField(pos = 4)
    private String lastName;
}
Copy to Clipboard Toggle word wrap

ケース 7: defaultValue

フィールドが定義されていない場合は、defaultValue 属性で示される値が使用されます。

デフォルト値

@CsvRecord(separator = ",")
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 2)
    private Integer clientNr;

    @DataField(pos = 3, required = true)
    private String firstName;

    @DataField(pos = 4, defaultValue = "Barin")
    private String lastName;
}
Copy to Clipboard Toggle word wrap

ケース 8: columnName

@CsvRecord にアノテーション generateHeaderColumns = true がある場合にのみ、プロパティーの列名を指定します。

列名

@CsvRecord(separator = ",", generateHeaderColumns = true)
public class Order {

    @DataField(pos = 1)
    private int orderNr;

    @DataField(pos = 5, columnName = "ISIN")
    private String isinCode;

    @DataField(name = "Name", pos = 6)
    private String instrumentName;
}
Copy to Clipboard Toggle word wrap

この属性は、オプションのフィールドにのみ適用されます。

17.3.4. 4.FixedLengthRecord

FixedLengthRecord アノテーションは、モデルのルートクラスを識別するために使用されます。これは、レコード = 固定長 (文字数) でフォーマットされたデータを含むファイル/メッセージの行を表し、複数の子モデルクラスにリンクできます。フィールドのデータは右または左に位置合わせできるため、この形式は少し特殊です。

データのサイズがフィールドの長さを完全に満たしていない場合は、埋め込み文字を追加できます。

Expand
アノテーション名レコードの種類レベル

FixedLengthRecord

固定:

クラス

Expand
パラメーター名タイプ必須/任意デフォルト値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
Copy to Clipboard Toggle word wrap

Fixed-simple

@FixedLengthRecord(length=54, paddingChar=' ')
public static class Order {

    @DataField(pos = 1, length=2)
    private int orderNr;

    @DataField(pos = 3, length=2)
    private String clientNr;

    @DataField(pos = 5, length=7)
    private String firstName;

    @DataField(pos = 12, length=1, align="L")
    private String lastName;

    @DataField(pos = 13, length=4)
    private String instrumentCode;

    @DataField(pos = 17, length=10)
    private String instrumentNumber;

    @DataField(pos = 27, length=3)
    private String orderType;

    @DataField(pos = 30, length=5)
    private String instrumentType;

    @DataField(pos = 35, precision = 2, length=7)
    private BigDecimal amount;

    @DataField(pos = 42, length=3)
    private String currency;

    @DataField(pos = 45, length=10, pattern = "dd-MM-yyyy")
    private Date orderDate;
}
Copy to Clipboard Toggle word wrap

ケース 2: アラインメントとパディングのある固定長レコード

こちらの詳細な例は、フィールドの配置を定義する方法と、ここで ' ' であるパディング文字を割り当てる方法を示しています。

10A9 PaulineM ISINXD12345678BUYShare2500.45USD01-08-2009
Copy to Clipboard Toggle word wrap

Fixed-padding-align

@FixedLengthRecord(length=60, paddingChar=' ')
public static class Order {

    @DataField(pos = 1, length=2)
    private int orderNr;

    @DataField(pos = 3, length=2)
    private String clientNr;

    @DataField(pos = 5, length=9)
    private String firstName;

    @DataField(pos = 14, length=5, align="L")   // align text to the LEFT zone of the block
    private String lastName;

    @DataField(pos = 19, length=4)
    private String instrumentCode;

    @DataField(pos = 23, length=10)
    private String instrumentNumber;

    @DataField(pos = 33, length=3)
    private String orderType;

    @DataField(pos = 36, length=5)
    private String instrumentType;

    @DataField(pos = 41, precision = 2, length=7)
    private BigDecimal amount;

    @DataField(pos = 48, length=3)
    private String currency;

    @DataField(pos = 51, length=10, pattern = "dd-MM-yyyy")
    private Date orderDate;
}
Copy to Clipboard Toggle word wrap

ケース 3: フィールドパディング

' ' の代わりに '0' をパディングする数値形式があるため、レコードに定義されたデフォルトのパディングをフィールドに適用できない場合があります。この場合、モデルで @DataField の属性 paddingChar を使用して、この値を設定できます。

10A9 PaulineM ISINXD12345678BUYShare000002500.45USD01-08-2009
Copy to Clipboard Toggle word wrap

Fixed-padding-field

@FixedLengthRecord(length = 65, paddingChar = ' ')
public static class Order {

    @DataField(pos = 1, length = 2)
    private int orderNr;

    @DataField(pos = 3, length = 2)
    private String clientNr;

    @DataField(pos = 5, length = 9)
    private String firstName;

    @DataField(pos = 14, length = 5, align = "L")
    private String lastName;

    @DataField(pos = 19, length = 4)
    private String instrumentCode;

    @DataField(pos = 23, length = 10)
    private String instrumentNumber;

    @DataField(pos = 33, length = 3)
    private String orderType;

    @DataField(pos = 36, length = 5)
    private String instrumentType;

    @DataField(pos = 41, precision = 2, length = 12, paddingChar = '0')
    private BigDecimal amount;

    @DataField(pos = 53, length = 3)
    private String currency;

    @DataField(pos = 56, length = 10, pattern = "dd-MM-yyyy")
    private Date orderDate;
}
Copy to Clipboard Toggle word wrap

ケース 4: 区切り文字付きの固定長レコード

固定長レコードでは、レコード内のコンテンツが区切られている場合があります。次の例では、firstName フィールドと lastName フィールドが ^ 文字で区切られています。

10A9Pauline^M^ISINXD12345678BUYShare000002500.45USD01-08-2009
Copy to Clipboard Toggle word wrap

Fixed-delimited

@FixedLengthRecord
public static class Order {

    @DataField(pos = 1, length = 2)
    private int orderNr;

    @DataField(pos = 2, length = 2)
    private String clientNr;

    @DataField(pos = 3, delimiter = "^")
    private String firstName;

    @DataField(pos = 4, delimiter = "^")
    private String lastName;

    @DataField(pos = 5, length = 4)
    private String instrumentCode;

    @DataField(pos = 6, length = 10)
    private String instrumentNumber;

    @DataField(pos = 7, length = 3)
    private String orderType;

    @DataField(pos = 8, length = 5)
    private String instrumentType;

    @DataField(pos = 9, precision = 2, length = 12, paddingChar = '0')
    private BigDecimal amount;

    @DataField(pos = 10, length = 3)
    private String currency;

    @DataField(pos = 11, length = 10, pattern = "dd-MM-yyyy")
    private Date orderDate;
}
Copy to Clipboard Toggle word wrap

固定長レコードの pos 値は、オプションで、正確な列番号の代わりに序数の連続した値を使用して定義できます。

ケース 5: レコード定義フィールド長の固定長レコード

固定長レコードには、同じレコード内の別のフィールドで必要とされる長さを定義するフィールドが含まれる場合があります。次の例では、instrumentNumber フィールド値の長さは、レコード内の instrumentNumberLen フィールドの値によって定義されます。

10A9Pauline^M^ISIN10XD12345678BUYShare000002500.45USD01-08-2009
Copy to Clipboard Toggle word wrap

Fixed-delimited

@FixedLengthRecord
public static class Order {

    @DataField(pos = 1, length = 2)
    private int orderNr;

    @DataField(pos = 2, length = 2)
    private String clientNr;

    @DataField(pos = 3, delimiter = "^")
    private String firstName;

    @DataField(pos = 4, delimiter = "^")
    private String lastName;

    @DataField(pos = 5, length = 4)
    private String instrumentCode;

    @DataField(pos = 6, length = 2, align = "R", paddingChar = '0')
    private int instrumentNumberLen;

    @DataField(pos = 7, lengthPos=6)
    private String instrumentNumber;

    @DataField(pos = 8, length = 3)
    private String orderType;

    @DataField(pos = 9, length = 5)
    private String instrumentType;

    @DataField(pos = 10, precision = 2, length = 12, paddingChar = '0')
    private BigDecimal amount;

    @DataField(pos = 11, length = 3)
    private String currency;

    @DataField(pos = 12, length = 10, pattern = "dd-MM-yyyy")
    private Date orderDate;
}
Copy to Clipboard Toggle word wrap

ケース 6: ヘッダーとフッター付きの固定長レコード

Bindy は、モデルの一部として設定されている固定長のヘッダーおよびフッターレコードを検出します。ただし、アノテーション付きのクラスが、プライマリー @FixedLengthRecord クラスと同じパッケージに存在するか、設定されたスキャンパッケージの 1 つに含まれている必要があります。次のテキストは、ヘッダーレコードとフッターレコードで囲まれた 2 つの固定長レコードを示しています。

101-08-2009
10A9 PaulineM ISINXD12345678BUYShare000002500.45USD01-08-2009
10A9 RichN ISINXD12345678BUYShare000002700.45USD01-08-2009
9000000002
Copy to Clipboard Toggle word wrap

Fixed-header-and-footer-main-class

@FixedLengthRecord(header = OrderHeader.class, footer = OrderFooter.class)
public class Order {

    @DataField(pos = 1, length = 2)
    private int orderNr;

    @DataField(pos = 2, length = 2)
    private String clientNr;

    @DataField(pos = 3, length = 9)
    private String firstName;

    @DataField(pos = 4, length = 5, align = "L")
    private String lastName;

    @DataField(pos = 5, length = 4)
    private String instrumentCode;

    @DataField(pos = 6, length = 10)
    private String instrumentNumber;

    @DataField(pos = 7, length = 3)
    private String orderType;

    @DataField(pos = 8, length = 5)
    private String instrumentType;

    @DataField(pos = 9, precision = 2, length = 12, paddingChar = '0')
    private BigDecimal amount;

    @DataField(pos = 10, length = 3)
    private String currency;

    @DataField(pos = 11, length = 10, pattern = "dd-MM-yyyy")
    private Date orderDate;
}

@FixedLengthRecord
public  class OrderHeader {
    @DataField(pos = 1, length = 1)
    private int recordType = 1;

    @DataField(pos = 2, length = 10, pattern = "dd-MM-yyyy")
    private Date recordDate;
}

@FixedLengthRecord
public class OrderFooter {

    @DataField(pos = 1, length = 1)
    private int recordType = 9;

    @DataField(pos = 2, length = 9, align = "R", paddingChar = '0')
    private int numberOfRecordsInTheFile;
}
Copy to Clipboard Toggle word wrap

ケース 7: 固定長レコードの解析時にコンテンツをスキップする

ターゲットユースケースに必要以上の情報を含む、固定長レコードを提供するシステムと統合するのが一般的です。この状況では、不要なフィールドの宣言と解析をスキップすると便利です。これに対応するために、次に宣言されたフィールドの pos 値が最後に解析されたフィールドのカーソル位置を超えている場合には、Bindy により、レコード内で次にマップされたフィールドに移動されます。対象のフィールドに (順序値ではなく) 絶対位置を使用すると、Bindy は 2 つのフィールド間のコンテンツをスキップします。

同様に、先のフィールドに対象となるコンテンツがない場合があります。この場合には、@FixedLengthRecord 宣言で ignoreTrailingChars プロパティーを設定して、最後にマップされたフィールド以降のすべての解析をスキップするように Bindy に指示できます。

@FixedLengthRecord(ignoreTrailingChars = true)
public static class Order {

    @DataField(pos = 1, length = 2)
    private int orderNr;

    @DataField(pos = 3, length = 2)
    private String clientNr;

    // any characters that appear beyond the last mapped field will be ignored

}
Copy to Clipboard Toggle word wrap

17.3.5. 5.メッセージ

Message アノテーションは、キーと値のペアフィールドを含むモデルのクラスを識別するために使用されます。この種の形式は、主に Financial Exchange Protocol Messages (FIX) で使用されます。いずれの場合も、このアノテーションは、データがキーによって識別される他の形式に使用できます。キーペアの値は、区切り記号で互いに区切られます。区切り文字には、タブ区切り記号 (Unicode 表現: \u0009) または見出しの開始 (Unicode 表現: \u0001) などの特殊文字を使用できます。

注記

FIX メッセージを操作するには、モデルに、Order クラスである可能性があるルートメッセージクラスにリンクされた Header クラスと Trailer クラスが含まれている必要があります。これは必須ではありませんが、camel-bindy を、quickFix プロジェクトに基づく修正ゲートウェイである camel-fix と組み合わせて使用する場合に非常に役立ちます。

Expand
アノテーション名レコードの種類レベル

メッセージ

キーと値のペア。

Class

Expand
パラメーター名タイプ必須/任意デフォルト値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 ...
Copy to Clipboard Toggle word wrap

およびアノテーションの使用方法:

FIX - メッセージ

@Message(keyValuePairSeparator = "=", pairSeparator = "\u0001", type="FIX", version="4.1")
public class Order {

}
Copy to Clipboard Toggle word wrap

テストケースを見る

タブなどの 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 は、タグ (= キー) とそれに関連付けられた値、タイプ (文字列、整数、日付など)、オプションのパターン、およびフィールドが必須かどうかによって識別されます。

Expand
アノテーション名レコードの種類レベル

KeyValuePairField

キーと値のペア - FIX

プロパティー

Expand
パラメーター名タイプ必須/任意デフォルト値Info

tag

int

 

メッセージ内のフィールドを識別するタグ (必須) - 一意である必要があります

impliedDecimalSeparator

boolean

 

false

<b>Camel 2.11:</b> 指定された位置に暗黙の小数点があるかどうかを示します

name

String

  

フィールドの名前 (オプション)

pattern

String

  

フォーマッターがデータの変換に使用するパターン (オプション)

position

int

 

0

生成されたメッセージ内のフィールドの位置 - FIX メッセージ内のキー/タグの位置が異なる必要がある場合に使用する必要があります

精度

int

 

0

作成する BigDecimal 数値の精度

必須

boolean

 

false

フィールドが必須かどうかを示します

timezone

String

  

使用するタイムゾーン。

ケース 1: tag

このパラメーターは、メッセージ内のフィールドのキーを表します。

FIX メッセージ - タグ

@Message(keyValuePairSeparator = "=", pairSeparator = "\u0001", type="FIX", version="4.1")
public class Order {

    @Link Header header;

    @Link Trailer trailer;

    @KeyValuePairField(tag = 1) // Client reference
    private String Account;

    @KeyValuePairField(tag = 11) // Order reference
    private String ClOrdId;

    @KeyValuePairField(tag = 22) // Fund ID type (Sedol, ISIN, ...)
    private String IDSource;

    @KeyValuePairField(tag = 48) // Fund code
    private String SecurityId;

    @KeyValuePairField(tag = 54) // Movement type ( 1 = Buy, 2 = sell)
    private String Side;

    @KeyValuePairField(tag = 58) // Free text
    private String Text;
}
Copy to Clipboard Toggle word wrap

ケース 2: 出力での別の位置

FIX メッセージに入れるタグ/キーを事前定義された順序に従ってソートする必要がある場合は、アノテーション @KeyValuePairField の属性 position を使用します。

FIX メッセージ - タグ - 並べ替え

@Message(keyValuePairSeparator = "=", pairSeparator = "\\u0001", type = "FIX", version = "4.1", isOrdered = true)
public class Order {

    @Link Header header;

    @Link Trailer trailer;

    @KeyValuePairField(tag = 1, position = 1) // Client reference
    private String account;

    @KeyValuePairField(tag = 11, position = 3) // Order reference
    private String clOrdId;
}
Copy to Clipboard Toggle word wrap

17.3.7. 7.セクション

固定長レコードの FIX メッセージでは、情報の表現にさまざまなセクション (ヘッダー、ボディ、およびセクション) があるのが一般的です。アノテーション @Section の目的は、モデルのどのクラスがヘッダー (= セクション 1)、ボディ (= セクション 2)、およびフッター (= セクション 3) を表しているかを bindy に通知することです。

このアノテーションには、1 つの属性/パラメーターのみが存在します。

Expand
アノテーション名レコードの種類レベル

セクション

FIX

Class

Expand
パラメーター名タイプ必須/任意デフォルト値Info

number

int

 

セクション番号

ケース 1: セクション

ヘッダーセクションの定義:

FIX メッセージ - セクション - ヘッダー

@Section(number = 1)
public class Header {

    @KeyValuePairField(tag = 8, position = 1) // Message Header
    private String beginString;

    @KeyValuePairField(tag = 9, position = 2) // Checksum
    private int bodyLength;
}
Copy to Clipboard Toggle word wrap

本文セクションの定義:

FIX メッセージ - セクション - 本文

@Section(number = 2)
@Message(keyValuePairSeparator = "=", pairSeparator = "\\u0001", type = "FIX", version = "4.1", isOrdered = true)
public class Order {

    @Link Header header;

    @Link Trailer trailer;

    @KeyValuePairField(tag = 1, position = 1) // Client reference
    private String account;

    @KeyValuePairField(tag = 11, position = 3) // Order reference
    private String clOrdId;
Copy to Clipboard Toggle word wrap

フッターセクションの定義:

FIX メッセージ - セクション - フッター

@Section(number = 3)
public class Trailer {

    @KeyValuePairField(tag = 10, position = 1)
    // CheckSum
    private int checkSum;

    public int getCheckSum() {
        return checkSum;
    }
Copy to Clipboard Toggle word wrap

17.3.8. 8.OneToMany

アノテーション @OneToMany の目的は、POJO クラスで定義された List<?> フィールドを操作できるようにすること、または反復グループを含むレコードから操作できるようにすることです。

注記

OneToMany の制限事項
bindy の 1 対多では、複数レベルの階層で繰り返しが定義されている場合に処理できない点に注意してください。

OneToMany の関係は、次の場合にのみ機能します。

  • 反復グループ (= タグ/キーのグループ) を含む FIX メッセージの読み取り
  • 反復データを含む CSV の生成
Expand
アノテーション名レコードの種類レベル

OneToMany

all

プロパティー

Expand
パラメーター名タイプ必須/任意デフォルト値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
Copy to Clipboard Toggle word wrap
注記

反復データは書籍のタイトルとその発行日に関するものですが、姓名と年齢は一般的であり、これをモデル化するために使用されるクラスです。Author クラスには、書籍リストが含まれています。

反復データを含む CSV を生成する

@CsvRecord(separator=",")
public class Author {

    @DataField(pos = 1)
    private String firstName;

    @DataField(pos = 2)
    private String lastName;

    @OneToMany
    private List<Book> books;

    @DataField(pos = 5)
    private String Age;
}

public class Book {

    @DataField(pos = 3)
    private String title;

    @DataField(pos = 4)
    private String year;
}
Copy to Clipboard Toggle word wrap

ケース 2: タグ/キーのグループを含む FIX メッセージの読み取り

モデルで処理するメッセージは次のとおりです。

8=FIX 4.19=2034=135=049=INVMGR56=BRKR
1=BE.CHM.00111=CHM0001-0158=this is a camel - bindy test
22=448=BE000124567854=1
22=548=BE000987654354=2
22=648=BE000999999954=3
10=220
Copy to Clipboard Toggle word wrap

タグ 22、48、および 54 が繰り返されます。

およびコード:

タグ/キーのグループを含む FIX メッセージの読み取り

public class Order {

    @Link Header header;

    @Link Trailer trailer;

    @KeyValuePairField(tag = 1) // Client reference
    private String account;

    @KeyValuePairField(tag = 11) // Order reference
    private String clOrdId;

    @KeyValuePairField(tag = 58) // Free text
    private String text;

    @OneToMany(mappedTo = "org.apache.camel.dataformat.bindy.model.fix.complex.onetomany.Security")
    List<Security> securities;
}

public class Security {

    @KeyValuePairField(tag = 22) // Fund ID type (Sedol, ISIN, ...)
    private String idSource;

    @KeyValuePairField(tag = 48) // Fund code
    private String securityCode;

    @KeyValuePairField(tag = 54) // Movement type ( 1 = Buy, 2 = sell)
    private String side;
}
Copy to Clipboard Toggle word wrap

17.3.9. 9.BindyConverter

アノテーション @BindyConverter の目的は、フィールドレベルで使用されるコンバーターを定義することです。提供されたクラスは、Format インターフェイスを実装する必要があります。

@FixedLengthRecord(length = 10, paddingChar = ' ')
public static class DataModel {
    @DataField(pos =  1, length = 10, trim = true)
    @BindyConverter(CustomConverter.class)
    public String field1;
}

public static class CustomConverter implements Format<String> {
    @Override
    public String format(String object) throws Exception {
        return (new StringBuilder(object)).reverse().toString();
    }

    @Override
    public String parse(String string) throws Exception {
        return (new StringBuilder(string)).reverse().toString();
    }
}
Copy to Clipboard Toggle word wrap

17.3.10. 10.FormatFactories

アノテーション @FormatFactories の目的は、一連のコンバーターをレコードレベルで定義することです。提供されるクラスは、FormatFactoryInterface インターフェイスを実装する必要があります。

@CsvRecord(separator = ",")
@FormatFactories({OrderNumberFormatFactory.class})
public static class Order {

    @DataField(pos = 1)
    private OrderNumber orderNr;

    @DataField(pos = 2)
    private String firstName;
}

public static class OrderNumber {
    private int orderNr;

    public static OrderNumber ofString(String orderNumber) {
        OrderNumber result = new OrderNumber();
        result.orderNr = Integer.valueOf(orderNumber);
        return result;
    }
}

public static class OrderNumberFormatFactory extends AbstractFormatFactory {

    {
        supportedClasses.add(OrderNumber.class);
    }

    @Override
    public Format<?> build(FormattingOptions formattingOptions) {
        return new Format<OrderNumber>() {
            @Override
            public String format(OrderNumber object) throws Exception {
                return String.valueOf(object.orderNr);
            }

            @Override
            public OrderNumber parse(String string) throws Exception {
                return OrderNumber.ofString(string);
            }
        };
    }
}
Copy to Clipboard Toggle word wrap

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);
Copy to Clipboard Toggle word wrap

17.5.1. ロケールの設定

Bindy は、次のようなデータ形式でのロケールの設定をサポートしています。

BindyCsvDataFormat bindy = new BindyCsvDataFormat(com.acme.model.MyModel.class);

bindy.setLocale("us");
Copy to Clipboard Toggle word wrap

または、プラットフォームのデフォルトロケールを使用するには、ロケール名として default を使用します。

BindyCsvDataFormat bindy = new BindyCsvDataFormat(com.acme.model.MyModel.class);

bindy.setLocale("default");
Copy to Clipboard Toggle word wrap

17.5.2. アンマーシャリング

from("file://inbox")
  .unmarshal(bindy)
  .to("direct:handleOrders");
Copy to Clipboard Toggle word wrap

または、Spring XML ファイルなどのレジストリーで定義できるデータ形式への名前付き参照を使用できます。

from("file://inbox")
  .unmarshal("myBindyDataFormat")
  .to("direct:handleOrders");
Copy to Clipboard Toggle word wrap

Camel ルートは、受信トレイディレクトリー内のファイルをピックアップし、CSV レコードをモデルオブジェクトのコレクションにアンマーシャリングして、handleOrders によって参照されるルートにコレクション
を送信します。

返されるコレクションは、List of Map オブジェクト です。リスト内の各 Map には、CSV の各行からマーシャリングされたモデルオブジェクトが含まれています。理由は、各行が複数のオブジェクトに対応している可能性 があるためです。1 行にオブジェクト 1 つだけが返されることを想定している場合には、混乱を招く可能性があります。

各オブジェクトは、そのクラス名を使用して取得できます。

List<Map<String, Object>> unmarshaledModels = (List<Map<String, Object>>) exchange.getIn().getBody();

int modelCount = 0;
for (Map<String, Object> model : unmarshaledModels) {
  for (String className : model.keySet()) {
     Object obj = model.get(className);
     LOG.info("Count : " + modelCount + ", " + obj.toString());
  }
 modelCount++;
}

LOG.info("Total CSV records received by the csv bean : " + modelCount);
Copy to Clipboard Toggle word wrap

ルート内で処理するためにこのマップから単一の Order オブジェクトを抽出すると仮定する場合に、次のようにスプリッターとプロセッサーの組み合わせを使用できます。

from("file://inbox")
    .unmarshal(bindy)
    .split(body())
        .process(new Processor() {
            public void process(Exchange exchange) throws Exception {
                Message in = exchange.getIn();
                Map<String, Object> modelMap = (Map<String, Object>) in.getBody();
                in.setBody(modelMap.get(Order.class.getCanonicalName()));
            }
        })
        .to("direct:handleSingleOrder")
    .end();
Copy to Clipboard Toggle word wrap

Bindy は CHARSET_NAME プロパティーまたは CHARSET_NAME ヘッダーを Exchange インターフェイスで定義されているように使用して、アンマーシャリングのために受信した入力ストリームの文字セット変換を行うことに注意してください。一部のプロデューサ (file-endpoint など) では、文字セットを定義できます。文字セット変換は、このプロデューサによってすでに実行されている可能性があります。アンマーシャルに送信する前に、エクスチェンジからこのプロパティーまたはヘッダーを削除する必要がある場合があります。削除しないと、変換が 2 回行われ、想定外の結果が生じる可能性があります。

from("file://inbox?charset=Cp922")
  .removeProperty(Exchange.CHARSET_NAME)
  .unmarshal("myBindyDataFormat")
  .to("direct:handleOrders");
Copy to Clipboard Toggle word wrap

17.5.3. マーシャリング

モデルオブジェクトのコレクションから CSV レコードを生成するには、次のルートを作成します。

from("direct:handleOrders")
   .marshal(bindy)
   .to("file://outbox")
Copy to Clipboard Toggle word wrap

17.6. Spring XML の使用

これにより、お気に入りの DSL 言語として Spring を使用して、非常に簡単に camel-bindy に使用するルートを宣言できます。次の例は、最初のルートがファイルからレコードを取得し、コンテンツをアンマーシャリングしてモデルにバインドする 2 つのルートを示しています。結果は pojo に送信され (特別なことは何も行われません)、キューに入れられます。

2 番目のルートは、キューから pojo を抽出し、コンテンツをマーシャリングして、CSV レコードを含むファイルを生成します。

Spring DSL

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://camel.apache.org/schema/spring
       http://camel.apache.org/schema/spring/camel-spring.xsd">

    <!-- Queuing engine - ActiveMq - work locally in mode virtual memory -->
    <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
        <property name="brokerURL" value="vm://localhost:61616"/>
    </bean>

    <camelContext xmlns="http://camel.apache.org/schema/spring">
        <dataFormats>
          <bindy id="bindyDataformat" type="Csv" classType="org.apache.camel.bindy.model.Order"/>
        </dataFormats>

        <route>
            <from uri="file://src/data/csv/?noop=true" />
            <unmarshal ref="bindyDataformat" />
            <to uri="bean:csv" />
            <to uri="activemq:queue:in" />
        </route>

        <route>
            <from uri="activemq:queue:in" />
            <marshal ref="bindyDataformat" />
            <to uri="file://src/data/csv/out/" />
        </route>
    </camelContext>
</beans>
Copy to Clipboard Toggle word wrap

注記

モデルクラスが serializable を実装していることを確認してください。実装されていない場合には、キューマネージャーでエラーが発生します。

17.7. 依存関係

camel ルートで Bindy を使用するには、このデータ形式を実装する camel-bindy に依存関係を追加する必要があります。

Maven を使用する場合は、pom.xml に以下を追加するだけで、バージョン番号を最新かつ最高のリリースに置き換えます (最新バージョンのダウンロードページを参照してください)。

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-bindy</artifactId>
  <version>{CamelSBVersion}</version>
</dependency>
Copy to Clipboard Toggle word wrap

17.8. Spring Boot 自動設定

コンポーネントは、以下に記載される 18 のオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

18.2. URI 形式

browse:someName[?options]
Copy to Clipboard Toggle word wrap

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 DSLDataFormat DSL を使用することもできます。

オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。

プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。

18.4. コンポーネントオプション

Browse コンポーネントは、以下に示す 3 つのオプションをサポートしています。

Expand
名前説明デフォルトタイプ

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
Copy to Clipboard Toggle word wrap

パスおよびクエリーパラメーターを使用します。

18.5.1. パスパラメーター(1 パラメーター)

Expand
名前説明デフォルトタイプ

name (共通)

必須 エンドポイントを一意に識別する任意の文字列の名前。

 

String

18.5.2. クエリーパラメーター (4 パラメーター)

Expand
名前説明デフォルトタイプ

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 がエクスチェンジを作成する際に交換パターンを設定します。

列挙値:

  • InOnly
  • InOut
  • InOptionalOut
 

ExchangePattern

lazyStartProducer (producer)

最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。

false

boolean

18.6. 例

以下のルートでは、通過する Exchange を参照できるように、browse: コンポーネントを挿入します。

from("activemq:order.in").to("browse:orderReceived").to("bean:processOrder");
Copy to Clipboard Toggle word wrap

受信した交換を Java コード内から検査できるようになりました。

private CamelContext context;

public void inspectReceivedOrders() {
    BrowsableEndpoint browse = context.getEndpoint("browse:orderReceived", BrowsableEndpoint.class);
    List<Exchange> exchanges = browse.getExchanges();

    // then we can inspect the list of received exchanges from Java
    for (Exchange exchange : exchanges) {
        String payload = exchange.getIn().getBody();
        // do something with payload
    }
}
Copy to Clipboard Toggle word wrap

18.7. Spring Boot 自動設定

コンポーネントは、以下に記載される 4 つのオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

19.2. オプションの設定

Camel コンポーネントは 2 つのレベルで設定されます。

  • コンポーネントレベル
  • エンドポイントレベル

19.2.1. コンポーネントレベルのオプション

コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。

通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。

コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。

19.2.2. エンドポイントレベルのオプション

エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。

エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSLDataFormat DSL を使用することもできます。

オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。

プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。

19.3. コンポーネントオプション

Cassandra CQL コンポーネントは、以下に示す 3 つのオプションをサポートしています。

Expand
名前説明デフォルトタイプ

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
Copy to Clipboard Toggle word wrap

パスおよびクエリーパラメーターを使用します。

19.4.1. パスパラメーター (4 パラメーター)

Expand
名前説明デフォルトタイプ

beanRef (共通)

beanRef は bean:id を使用して定義されます。

 

String

hosts (共通)

ホスト名 Cassandra サーバー複数のホストはコンマで区切ることができます。

 

String

port (共通)

Cassandra サーバーのポート番号

 

Integer

keyspace (共通)

使用するキースペース

 

String

19.4.2. クエリーパラメーター (30 パラメーター)

Expand
名前説明デフォルトタイプ

clusterName (共通)

クラスター名

 

String

consistencyLevel (共通)

使用する一貫性レベル。

列挙値:

  • 任意
  • ONE
  • TWO
  • THREE
  • QUORUM
  • ALL
  • LOCAL_ONE
  • LOCAL_QUORUM
  • EACH_QUORUM
  • SERIAL
  • LOCAL_SERIAL
 

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 がエクスチェンジを作成する際に交換パターンを設定します。

列挙値:

  • InOnly
  • InOut
  • InOptionalOut
 

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
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • OFF

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
  • SECONDS
  • 時間

MILLISECONDS

TimeUnit

useFixedDelay (scheduler)

固定遅延または固定レートを使用するかどうかを制御します。詳細は、JDK の ScheduledExecutorService を参照してください。

true

boolean

19.5. エンドポイント接続の構文

エンドポイントは、Cassandra 接続を開始するか、既存のものを使用できます。

Expand
URI説明

cql:localhost/keyspace

単一ホスト、デフォルトポート、通常はテスト用

cql:host1,host2/keyspace

マルチホスト、デフォルトポート

cql:host1,host2:9042/keyspace

マルチホスト、カスタムポート

cql:host1,host2

デフォルトのポートとキースペース

cql:bean:sessionRef

提供されたセッション参照

cql:bean:clusterRef/keyspace

提供されたクラスター参照

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> (resultSetConversionStrategyALL または LIMIT_0-9+ の場合)
  • resultSetConversionStrategyONE の場合h Single` Row`
  • その他 (resultSetConversionStrategyResultSetConversionStrategy のカスタム実装である場合)

19.7. リポジトリー

Cassandra を使用して、べき等および集約 EIP のメッセージキーまたはメッセージを格納できます。

Cassandra は、まだユースケースをキューに入れるための最適なツールではない可能性があります。Cassandra anti-patterns queues and queue like datasets を参照してください。これらのテーブルに LeveledCompaction と小さな GC 猶予設定を使用して、廃棄された行をすばやく削除できるようにすることを推奨します。

19.8. 冪等リポジトリー

NamedCassandraIdempotentRepository は、メッセージキーを次のように Cassandra テーブルに格納します。

CAMEL_IDEMPOTENT.cql

CREATE TABLE CAMEL_IDEMPOTENT (
  NAME varchar,   -- Repository name
  KEY varchar,    -- Message key
  PRIMARY KEY (NAME, KEY)
) WITH compaction = {'class':'LeveledCompactionStrategy'}
  AND gc_grace_seconds = 86400;
Copy to Clipboard Toggle word wrap

このリポジトリーの実装では、軽量のトランザクション (Compare and Set とも呼ばれます) を使用し、Cassandra 2.0.7+ が必要です。

または、CassandraIdempotentRepository には NAME 列がなく、別のデータモデルを使用するように拡張できます。

Expand
オプションデフォルト説明

table

CAMEL_IDEMPOTENT

テーブル名

pkColumns

NAME,` KEY`

プライマリーキー列

name

 

リポジトリー名、NAME 列に使用される値

ttl

 

重要な生存期間

writeConsistencyLevel

 

キーの挿入/削除に使用される一貫性レベル: ANYONETWOQUORUMLOCAL_QUORUM

readConsistencyLevel

 

キーの読み取り/チェックに使用される一貫性レベル: ONETWOQUORUMLOCAL_QUORUM

19.9. 集計リポジトリー

NamedCassandraAggregationRepository は、次のように Cassandra テーブルに相関キーによる交換を格納します。

CAMEL_AGGREGATION.cql

CREATE TABLE CAMEL_AGGREGATION (
  NAME varchar,        -- Repository name
  KEY varchar,         -- Correlation id
  EXCHANGE_ID varchar, -- Exchange id
  EXCHANGE blob,       -- Serialized exchange
  PRIMARY KEY (NAME, KEY)
) WITH compaction = {'class':'LeveledCompactionStrategy'}
  AND gc_grace_seconds = 86400;
Copy to Clipboard Toggle word wrap

または、CassandraAggregationRepository には NAME 列がなく、別のデータモデルを使用するように拡張できます。

Expand
オプションデフォルト説明

table

CAMEL_AGGREGATION

テーブル名

pkColumns

NAME,KEY

プライマリーキー列

exchangeIdColumn

EXCHANGE_ID

交換 ID 列

exchangeColumn

EXCHANGE

交換内容欄

name

 

リポジトリー名、NAME 列に使用される値

ttl

 

生存時間の交換

writeConsistencyLevel

 

交換の挿入/削除に使用される一貫性レベル: ANYONETWOQUORUMLOCAL_QUORUM

readConsistencyLevel

 

交換の読み取り/チェックに使用される整合性レベル: ONETWOQUORUMLOCAL_QUORUM

19.10. 例

テーブルに何かを挿入するには、次のコードを使用できます。

String CQL = "insert into camel_user(login, first_name, last_name) values (?, ?, ?)";
from("direct:input")
    .to("cql://localhost/camel_ks?cql=" + CQL);
Copy to Clipboard Toggle word wrap

この時点で、リストを本文として使用してデータを挿入できるはずです

Arrays.asList("davsclaus", "Claus", "Ibsen")
Copy to Clipboard Toggle word wrap

テーブルの更新またはクエリーにも同じアプローチを使用できます。

19.11. Spring Boot 自動設定

コンポーネントは、以下に記載される 4 つのオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

20.2. Constant オプション

Constant 言語は、以下に示す 2 つのオプションをサポートしています。

Expand
名前デフォルトJava タイプ説明

resultType

 

String

定数型のクラス名を設定します。

trim

 

Boolean

値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。

20.3. 例

setHeader EIP は、次のような定数式を利用できます。

<route>
  <from uri="seda:a"/>
  <setHeader name="theHeader">
    <constant>the value</constant>
  </setHeader>
  <to uri="mock:b"/>
</route>
Copy to Clipboard Toggle word wrap

この場合、seda:a エンドポイントからのメッセージには、キー theHeader を含むヘッダーが含まれ、その値が the value (文字列型) として設定されます。

Java DSL を使用した同じ例:

from("seda:a")
  .setHeader("theHeader", constant("the value"))
  .to("mock:b");
Copy to Clipboard Toggle word wrap

20.3.1. 値の型の指定

オプション resultType を使用して、値が 文字列 値として指定されている場合に、値のタイプを指定できます。これは、XML または YAML DSL を使用する場合に発生します。

たとえば、int 型のヘッダーを設定するには、次のようにします。

<route>
  <from uri="seda:a"/>
  <setHeader name="zipCode">
    <constant resultType="int">90210</constant>
  </setHeader>
  <to uri="mock:b"/>
</route>
Copy to Clipboard Toggle word wrap

20.4. 外部リソースからの定数のロード

constant を外部化して、"classpath:""file:"、または "http:" などのリソースから Camel に読み込むことができます。
これは、"resource:scheme:location" の構文を使用して行われます。たとえば、クラスパス上のファイルを参照するには、以下を実行します。

.setHeader("myHeader").constant("resource:classpath:constant.txt")
Copy to Clipboard Toggle word wrap

20.5. 依存関係

Constant 言語は camel-core の一部です。

20.6. Spring Boot 自動設定

コンポーネントは、以下に記載される 147 のオプションをサポートします。

Expand
名前説明デフォルトタイプ

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]
Copy to Clipboard Toggle word wrap

command には、使用するコマンドのタイプを識別するための任意の文字列を指定できます。

21.1. コマンド

Expand
コマンド説明

route

routeIdaction パラメーターを使用してルートを制御します。

言語

メッセージ本文の評価に使用するを指定できます。評価の結果があれば、その結果がメッセージ本文に入れられます。

21.2. 依存関係

Red Hat build of Camel Spring Boot で controlbus を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。

<dependency>
  <groupId>org.apache.camel.springboot</groupId>
  <artifactId>camel-controlbus-starter</artifactId>
</dependency>
Copy to Clipboard Toggle word wrap

21.3. オプションの設定

Camel コンポーネントは 2 つのレベルで設定されます。

  • コンポーネントレベル
  • エンドポイントレベル

21.3.1. コンポーネントレベルのオプション

コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。

通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。

コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。

21.3.2. エンドポイントレベルのオプション

エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。

エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSLDataFormat DSL を使用することもできます。

オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。

プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。

21.4. コンポーネントオプション

コントロールバスコンポーネントは、以下に示す 2 つのオプションをサポートします。

Expand
名前説明デフォルトタイプ

lazyStartProducer (producer)

最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。

false

boolean

autowiredEnabled (上級)

自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。

true

boolean

21.5. エンドポイントオプション

Control Bus エンドポイントは、URI 構文を使用して設定されます。

controlbus:command:language
Copy to Clipboard Toggle word wrap

パスおよびクエリーパラメーターを使用します。

21.5.1. パスパラメーター (2 パラメーター)

Expand
名前説明デフォルトタイプ

command (producer)

必要な コマンドは、ルートまたは言語のいずれかです。

列挙値:

  • route
  • 言語
 

String

language (producer)

メッセージ本文の評価に使用する言語の名前を指定できます。評価の結果があれば、その結果がメッセージ本文に入れられます。

列挙値:

  • bean
  • constant
  • el
  • exchangeProperty
  • file
  • groovy
  • header
  • jsonpath
  • mvel
  • ognl
  • ref
  • simple
  • spel
  • sql
  • terser
  • tokenize
  • xpath
  • xquery
  • xtokenize
 

言語

21.5.1.1. クエリーパラメーター (6 パラメーター)
Expand
名前説明デフォルトタイプ

action (producer)

開始、停止、またはステータスのいずれかのアクションを示す。ルートを開始または停止するか、ルートのステータスをメッセージ本文の出力として取得します。Camel 2.11.1 以降では、サスペンドとレジュームを使用して、ルートをサスペンドまたはレジュームできます。また、Camel 2.11.1 以降では、stats を使用して、パフォーマンスの統計を XML 形式で取得できます。routeId オプションを使用して、パフォーマンス統計を取得するルートを定義できます。routeId が定義されていない場合は、CamelContext 全体の統計を取得します。再起動アクションはルートを再起動します。

列挙値:

  • start
  • stop
  • suspend
  • 再開
  • restart
  • status
  • stats
 

String

async (producer)

コントロールバスタスクを非同期で実行するかどうか。重要: このオプションを有効にすると、タスクの結果は Exchange に設定されません。これは、タスクを同期的に実行する場合にのみ可能です。

false

boolean

lazyStartProducer (producer)

最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。

false

boolean

loggingLevel (producer)

タスクが完了したとき、またはタスクの処理中に例外が発生した場合にログに使用されるログレベル。

列挙値:

  • TRACE
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • OFF

INFO

LoggingLevel

restartDelay (producer)

ルートを再起動するときに使用するミリ単位の遅延。

1000

int

routeId (producer)

ID でルートを指定します。特別なキーワード current は、現在のルートを示します。

 

String

21.6. ルートコマンドの使用

route コマンドを使用すると、特定のルートで一般的なタスクを非常に簡単に実行できます。たとえば、ルートを開始するには、このエンドポイントに空のメッセージを送信できます。

template.sendBody("controlbus:route?routeId=foo&action=start", null);
Copy to Clipboard Toggle word wrap

ルートのステータスを取得するには、次のようにします。

String status = template.requestBody("controlbus:route?routeId=foo&action=status", null, String.class);
Copy to Clipboard Toggle word wrap

21.7. パフォーマンス統計の取得

これには、JMX を有効にする必要があります (デフォルトで)。そうすると、ルートごと、または CamelContext のパフォーマンス統計を取得できます。たとえば、foo という名前のルートの統計を取得するには、次のようにします。

String xml = template.requestBody("controlbus:route?routeId=foo&action=stats", null, String.class);
Copy to Clipboard Toggle word wrap

返される統計は XML 形式です。ManagedRouteMBeandumpRouteStatsAsXml 操作を使用して JMX から取得できるデータと同じです。

CamelContext 全体の統計を取得するには、以下に示すように routeId パラメーターを省略します。

String xml = template.requestBody("controlbus:route?action=stats", null, String.class);
Copy to Clipboard Toggle word wrap

21.8. シンプルな言語を使用する

コントロールバスで Simple 言語を使用できます。たとえば、特定のルートを停止するには、以下を含むメッセージを "controlbus:language:simple" エンドポイントに送信できます。

template.sendBody("controlbus:language:simple", "${camelContext.getRouteController().stopRoute('myRoute')}");
Copy to Clipboard Toggle word wrap

これは無効な操作であるため、結果は返されません。ただし、ルートステータスが必要な場合は、次のことができます。

String status = template.requestBody("controlbus:language:simple", "${camelContext.getRouteStatus('myRoute')}", String.class);
Copy to Clipboard Toggle word wrap

route コマンドを使用してルートのライフサイクルを制御する方が簡単です。language コマンドを使用すると Groovy などのより強力な言語スクリプトを実行したり、Simple 言語を拡張したりできます。

たとえば、Camel 自体をシャットダウンするには、次のようにします。

template.sendBody("controlbus:language:simple?async=true", "${camelContext.stop()}");
Copy to Clipboard Toggle word wrap

async=true を使用して Camel を非同期的に停止します。そうしないと、制御バスコンポーネントに送信したメッセージを処理中に Camel を停止しようとすることになります。

注記

Groovy などの他の言語も使用できます。

21.9. Spring Boot 自動設定

コンポーネントは、以下に記載される 3 つのオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

特定の実装をプラグインするには、追加のライブラリーが必要になる場合があります。

22.2. オプションの設定

Camel コンポーネントは 2 つのレベルで設定されます。

  • コンポーネントレベル
  • エンドポイントレベル

22.2.1. コンポーネントレベルのオプション

コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。

通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。

コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。

22.2.2. エンドポイントレベルのオプション

エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。

エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSLDataFormat DSL を使用することもできます。

オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。

プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。

22.3. コンポーネントオプション

Cron コンポーネントは、以下に示す 3 つのオプションをサポートします。

Expand
名前説明デフォルトタイプ

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
Copy to Clipboard Toggle word wrap

パスおよびクエリーパラメーターを使用します。

22.4.1. パスパラメーター(1 パラメーター)

Expand
名前説明デフォルトタイプ

name (consumer)

必須 cron トリガーの名前。

 

String

22.4.2. クエリーパラメーター (4 パラメーター)

Expand
名前説明デフォルトタイプ

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 がエクスチェンジを作成する際に交換パターンを設定します。

列挙値:

  • InOnly
  • InOut
  • InOptionalOut
 

ExchangePattern

22.5. 用途

次の例のように、コンポーネントを使用して、指定した時間にイベントをトリガーできます。

from("cron:tab?schedule=0/1+*+*+*+*+?")
.setBody().constant("event")
.log("${body}");
Copy to Clipboard Toggle word wrap

スケジュール式 0/3+10+*+? は、0/3 10 * * * ? とも書けます。毎時 10 分だけ 3 秒ごとにイベントをトリガーします。

スケジュール式の各部の意味 (順番):

  • 秒 (オプション)
  • Day of month
  • Day of week
  • 年 (オプション)

スケジュール式は、5 ~ 7 個のパーツで作成できます。式が 6 つの部分で設定されている場合、最初の項目は秒の部分です (年は欠落していると見なされます)。

スケジュール式のその他の有効な例は次のとおりです。

  • 0/2 * * * ?(5 部、2 分ごとのイベント)
  • 0 0/2 * * * MON-FRI 2030 (7 部、2030 年のみ 2 分ごとのイベント)

ルートは、XML DSL を使用して記述することもできます。

<route>
    <from uri="cron:tab?schedule=0/1+*+*+*+*+?"/>
    <setBody>
      <constant>event</constant>
    </setBody>
    <to uri="log:info"/>
</route>
Copy to Clipboard Toggle word wrap

22.6. Spring Boot 自動設定

コンポーネントは、以下に記載される 4 つのオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

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]
Copy to Clipboard Toggle word wrap
  • 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 DSLDataFormat DSL を使用することもできます。

Property Placeholders を使用して、URL、ポート番号、機密情報、その他の設定をハードコーディングしないためのオプションを設定します。つまり、プレースホルダーを使用すると、コードから設定を外部化でき、柔軟性および再利用性が向上します。

以下の 2 つのセクションでは、最初にコンポーネント、次にエンドポイントのすべてのオプションを一覧表示します。

23.5. コンポーネントオプション

Crypto (JCE) コンポーネントは、以下に示す 21 のオプションをサポートします。

Expand
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
Copy to Clipboard Toggle word wrap

パスとクエリーのパラメーターは次のとおりです。

23.6.1. パスパラメーター (2 パラメーター)

Expand
名前説明デフォルトタイプ

cryptoOperation (producer)

必須 エンドポイント URI の暗号スキームの後に指定された暗号操作を設定します。たとえば、crypto:sign 操作として署名を設定します。

列挙値:

* sign

* verify

 

CryptoOperation

name (producer)

必須 この操作の論理名。

 

文字列

23.6.2. クエリーパラメーター(19 パラメーター)

Expand
名前説明デフォルトタイプ

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 つのメッセージヘッダーをサポートします。

Expand
Name説明デフォルトタイプ

[CamelSignaturePrivateKey (producer)

定数: SIGNATURE_PRIVATE_KEY

メッセージの署名に使用する PrivateKey。

 

PrivateKey

[CamelSignaturePublicKeyOrCert (producer)

定数: SIGNATURE_PUBLIC_KEY_OR_CERT

署名の検証に使用する証明書または PublicKey。

 

証明書または PublicKey

CamelSignatureKeyStoreAlias (producer)

定数: KEYSTORE_ALIAS

エクスチェンジの署名と検証に使用される鍵と証明書を、KeyStore に照会する際に使用するエイリアス。

 

文字列

CamelSignatureKeyStorePassword (producer)

定数: KEYSTORE_PASSWORD

KeyStore でエイリアス化された PrivateKey にアクセスする際に使用するパスワード。

 

char[]

23.8. 使用

23.8.1. Raw keys

エクスチェンジの署名および検証方法として最も基本的なのは、次のように KeyPair を使用する方法です。

KeyPair keyPair = KeyGenerator.getInstance("RSA").generateKeyPair();

from("direct:sign")
    .setHeader(DigitalSignatureConstants.SIGNATURE_PRIVATE_KEY, constant(keys.getPrivate()))
    .to("crypto:sign:message")
    .to("direct:verify");

from("direct:verify")
    .setHeader(DigitalSignatureConstants.SIGNATURE_PUBLIC_KEY_OR_CERT, constant(keys.getPublic()))
    .to("crypto:verify:check");
Copy to Clipboard Toggle word wrap

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
Copy to Clipboard Toggle word wrap

次のルートは、最初に 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}");
Copy to Clipboard Toggle word wrap

次のコードは、上記の keytool コマンドを使用して作成されたキーストアをロードし、上記のルートで使用するために myKeystore という名前でレジストリーにバインドしてロードする方法を示しています。この例では、Camel 3 で導入された @Configuration および @BindToRegistry のアノテーションを使用して KeyStore をインスタンス化し、myKeyStore という名前で登録します。

@Configuration
public class KeystoreConfig {

    @BindToRegistry
    public KeyStore myKeystore() throws Exception {
        KeyStore store = KeyStore.getInstance("JKS");
        try (FileInputStream fis = new FileInputStream("keystore.jks")) {
            store.load(fis, "letmein".toCharArray());
        }
        return store;
    }
}
Copy to Clipboard Toggle word wrap

再び 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");
Copy to Clipboard Toggle word wrap

===bufferSize の変更

バッファーのサイズを更新する必要がある場合。

23.8.5. キーを動的に提供します。

受信者リストまたは同様の EIP を使用する場合、エクスチェンジの受信者は動的に変化する可能性があります。すべての受信者に同じキーを使用することは、実現可能でも望ましくもない場合があります。署名キーを交換ごとに動的に指定できると便利です。エクスチェンジは、署名する前に、ターゲット受信者のキーで動的に強化できます。これを容易にするために、署名メカニズムでは、以下のメッセージヘッダーを介して鍵を動的に提供できます。

  • DigitalSignatureConstants.SIGNATURE_PRIVATE_KEY, "CamelSignaturePrivateKey"
  • DigitalSignatureConstants.SIGNATURE_PUBLIC_KEY_OR_CERT, "CamelSignaturePublicKeyOrCert"

キーストアエイリアスを動的に指定することを推奨します。この場合も、エイリアスはメッセージヘッダーで指定できます。

  • DigitalSignatureConstants.KEYSTORE_ALIAS, "CamelSignatureKeyStoreAlias"

ヘッダーは次のように設定されます。

Exchange unsigned = getMandatoryEndpoint("direct:alias-sign").createExchange();
unsigned.getIn().setBody(payload);
unsigned.getIn().setHeader(DigitalSignatureConstants.KEYSTORE_ALIAS, "bob");
unsigned.getIn().setHeader(DigitalSignatureConstants.KEYSTORE_PASSWORD, "letmein".toCharArray());
template.send("direct:alias-sign", unsigned);
Exchange signed = getMandatoryEndpoint("direct:alias-sign").createExchange();
signed.getIn().copyFrom(unsigned.getMessage());
signed.getIn().setHeader(DigitalSignatureConstants.KEYSTORE_ALIAS, "bob");
template.send("direct:alias-verify", signed);
Copy to Clipboard Toggle word wrap

23.9. Spring Boot 自動設定

このコンポーネントは、以下に示す 47 個のオプションをサポートします。

Expand
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>
Copy to Clipboard Toggle word wrap

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 言語には、CollectionMap、または配列型を操作する一般的なユースケースをサポートするための追加関数がいくつか含まれています。次の関数 bodyAsIndexheaderAsIndex、および exchangePropertyAsIndex は、これらのユースケースに入力されたとおりに使用されます。

Expand
機能タイプ説明

bodyAsIndex(type, index)

タイプ

既存の CollectionMap または配列から本体を収集し (インデックスによるルックアップ)、その本体をそのクラス名によって決定される特定の型に変換するために使用されます。変換された本文は null にすることができます。

mandatoryBodyAsIndex(type, index)

タイプ

既存の CollectionMap または配列から本体を収集し (インデックスによるルックアップ)、その本体をそのクラス名によって決定される特定の型に変換するために使用されます。本文は null は指定できません。

headerAsIndex(key, type, index)

タイプ

既存の CollectionMap または配列からヘッダーを収集し (インデックスによるルックアップ)、ヘッダー値をクラス名によって決定される特定の型に変換するために使用します。変換されたヘッダーでは null を指定できます。

mandatoryHeaderAsIndex(key, type, index)

タイプ

既存の CollectionMap または配列からヘッダーを収集し (インデックスによるルックアップ)、ヘッダー値をクラス名によって決定される特定の型に変換するために使用します。ヘッダーには null を指定できません。

exchangePropertyAsIndex(key, type, index)

タイプ

既存の CollectionMap または配列から交換プロパティーを収集し (インデックスによるルックアップ)、その交換プロパティーをそのクラス名によって決定される特定の型に変換するために使用します。変換された exchange プロパティーには null を指定できます。

mandatoryExchangePropertyAsIndex(key, type, index)

タイプ

既存の CollectionMap または配列から交換プロパティーを収集し (インデックスによるルックアップ)、その交換プロパティーをそのクラス名によって決定される特定の型に変換するために使用します。exchange プロパティーが null でないことが期待されます。

たとえば、次の Simple 式があるとします。

Hello $\{body[0].name}
Copy to Clipboard Toggle word wrap

このスクリプトには型情報がありません。Simple 言語は、メッセージボディーをイントロスペクトし、コレクションベースの場合は最初の要素を検索し、reflection を介して getName という名前のメソッドを呼び出すことにより、実行時にこの名前を解決します。

csimple (コンパイル済み) では、これをプリコンパイルする必要があるため、エンドユーザーは bodyAsIndex 関数で型情報を提供する必要があります。

Hello $\{bodyAsIndex(com.foo.MyUser, 0).name}
Copy to Clipboard Toggle word wrap

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 ファイルに追加する必要があります。

<plugins>
    <!-- generate source code for csimple languages -->
    <plugin>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-csimple-maven-plugin</artifactId>
        <version>${camel.version}</version>
        <executions>
            <execution>
                <id>generate</id>
                <goals>
                    <goal>generate</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    <!-- include source code generated to maven sources paths -->
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>3.1.0</version>
        <executions>
            <execution>
                <phase>generate-sources</phase>
                <goals>
                    <goal>add-source</goal>
                    <goal>add-resource</goal>
                </goals>
                <configuration>
                    <sources>
                        <source>src/generated/java</source>
                    </sources>
                    <resources>
                        <resource>
                            <directory>src/generated/resources</directory>
                        </resource>
                    </resources>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>
Copy to Clipboard Toggle word wrap

そして、build-helper-maven-plugin Maven プラグインを追加して、src/generated を Java コンパイラーのソースフォルダーのリストに追加して、生成されたソースコードがコンパイルされ、アプリケーション JAR ファイルに含まれるようにする必要があります。

Maven プラグインを使用する Camel Examplescamel-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>
Copy to Clipboard Toggle word wrap

pom.xml ファイルに Maven プラグインを追加する必要はありません。

jOOR コンパイラーを使用する Camel Examplescamel-example-csimple-joor の例を参照してください。

24.4. CSimple 言語オプション

CSimple 言語は、次に示す 2 つのオプションをサポートしています。

Expand
名前デフォルトJava タイプ説明

resultType

 

String

結果の型 (出力からの型) のクラス名を設定します。

trim

 

Boolean

値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。

24.5. 制限事項

現在、csimple 言語は以下をサポート していません

  • ネストされた関数 (別名、関数内の関数)
  • null セーフな 演算子 (?)。

たとえば、次のスクリプトはコンパイルできません。

  Hello ${bean:greeter(${body}, ${header.counter})}
Copy to Clipboard Toggle word wrap
  ${bodyAs(MyUser)?.address?.zip} > 10000
Copy to Clipboard Toggle word wrap

24.6. 自動インポート

csimple 言語は、以下から自動的にインポートされます。

import java.util.*;
import java.util.concurrent.*;
import java.util.stream.*;
import org.apache.camel.*;
import org.apache.camel.util.*;
Copy to Clipboard Toggle word wrap

24.7. 設定ファイル

ルートクラスパスからロードされる camel-csimple.properties ファイルで csimple 言語を設定できます。

たとえば、camel-csimple.properties ファイルに追加のインポートを追加するには、次を追加します。

import com.foo.MyUser;
import com.bar.*;
import static com.foo.MyHelper.*;
Copy to Clipboard Toggle word wrap

また、コード内で省略形の置換として使用されるエイリアス (key=value) を追加することもできます。

echo()=${bodyAs(String)} ${bodyAs(String)}
Copy to Clipboard Toggle word wrap

次のような csimple 言語スクリプトで echo() を使用できます。

from("direct:hello")
    .transform(csimple("Hello echo()"))
    .log("You said ${body}");
Copy to Clipboard Toggle word wrap

echo() エイリアスはその値に置き換えられ、スクリプトは次のようになります。

    .transform(csimple("Hello ${bodyAs(String)} ${bodyAs(String)}"))
Copy to Clipboard Toggle word wrap

24.8. 関連項目

csimple には Simple 言語と同じ関数セットがあるため、Simple 言語を参照してください。

24.9. Spring Boot 自動設定

コンポーネントは、以下に記載される 147 のオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

25.2. URI 形式

このエンドポイントには、cxfEndpointsomeAddress の 2 つの URI 形式があります。

cxf:bean:cxfEndpoint[?options]
Copy to Clipboard Toggle word wrap

cxfEndpoint は、Spring Bean レジストリー内の Bean を参照する Bean ID を表します。この URI 形式では、ほとんどのエンドポイントの詳細が Bean 定義で指定されます。

cxf://someAddress[?options]
Copy to Clipboard Toggle word wrap

someAddress は、CXF エンドポイントのアドレスを指定します。この URI 形式では、ほとんどのエンドポイントの詳細がオプションを使用して指定されます。

上記のどちらのスタイルでも、次のように URI にオプションを追加できます。

cxf:bean:cxfEndpoint?wsdlURL=wsdl/hello_world.wsdl&dataFormat=PAYLOAD
Copy to Clipboard Toggle word wrap

25.3. オプションの設定

Camel コンポーネントは 2 つのレベルで設定されます。

  • コンポーネントレベル
  • エンドポイントレベル

25.3.1. コンポーネントレベルのオプション

コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。

通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。

コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。

25.3.2. エンドポイントレベルのオプション

エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。

エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSLDataFormat DSL を使用することもできます。

オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。

プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。

25.4. コンポーネントオプション

CXF コンポーネントは、以下に示す 6 つのオプションをサポートしています。

Expand
名前説明デフォルトタイプ

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
Copy to Clipboard Toggle word wrap

パスおよびクエリーパラメーターを使用します。

25.5.1. パスパラメーター (2 パラメーター)

Expand
名前説明デフォルトタイプ

beanId (共通)

既存の設定済み CxfEndpoint を検索するには。bean: を接頭辞として使用する必要があります。

 

String

住所 (サービス)

サービス公開アドレス。

 

String

25.5.2. クエリーパラメーター (35 パラメーター)

Expand
名前説明デフォルトタイプ

dataFormat (共通)

CXF エンドポイントでサポートされるデータタイプメッセージ。

列挙値:

  • PAYLOAD
  • RAW
  • MESSAGE
  • CXF_MESSAGE
  • POJO

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 がエクスチェンジを作成する際に交換パターンを設定します。

列挙値:

  • InOnly
  • InOut
  • InOptionalOut
 

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

serviceNameportNameQNames であるため、これらを指定する場合は、上記の例に示すように {namespace} を前に付けてください。

25.5.3. データ形式の説明

Apache Camel では、Camel CXF コンポーネントがルートを Web サービスと統合するための鍵となります。Camel CXF コンポーネントを使用して、次のいずれかの方法で使用できる CXF エンドポイントを作成できます。

  • consumer — (ルートの開始時) は、ルートと統合される Web サービスインスタンスを表します。ルートに挿入されるペイロードのタイプは、エンドポイントの dataFormat オプションの値によって異なります。
  • producer — (ルートの他のポイントで) WS クライアントプロキシーを表し、現在の交換オブジェクトをリモート Web サービスでの操作呼び出しに変換します。現在の交換の形式は、エンドポイントの dataFormat 設定と一致する必要があります。
Expand
DataFormat説明

POJO

POJO (Plain old Java objects) は、ターゲットサーバーで呼び出されるメソッドへの Java パラメーターです。プロトコル JAX-WS ハンドラーと論理 JAX-WS ハンドラーの両方がサポートされています。

PAYLOAD

PAYLOAD は、CXF エンドポイントのメッセージ設定が適用された後のメッセージペイロード (soap:body の内容) です。Protocol JAX-WS ハンドラーのみがサポートされています。論理 JAX-WS ハンドラーはサポートされていません。

RAW

RAW モードは、トランスポート層から受信した生のメッセージストリームを提供します。ストリームに触れたり変更したりすることはできません。この種の DataFormat を使用している場合、CXF インターセプターの一部が削除されるため、camel-cxf consumer の後に SOAP ヘッダーが表示されません。JAX-WS ハンドラーはサポートされていません。

CXF_MESSAGE

CXF_MESSAGE を使用すると、トランスポート層からのメッセージを生の SOAP メッセージに変換することで、CXF インターセプターの全機能を呼び出すことができます。

交換プロパティー CamelCXFDataFormat を取得することで、交換のデータ形式モードを判別できます。交換キー定数は org.apache.camel.component.cxf.common.message.CxfConstants.DATA_FORMAT_PROPERTY で定義されています。

25.5.4. CXF の LoggingOutInterceptor を RAW モードで有効にする方法

CXF の LoggingOutInterceptor は、ロギングシステム (Java Util Logging) に送信されるアウトバウンドメッセージを出力します。LoggingOutInterceptorPRE_STREAM フェーズにあるため (ただし、PRE_STREAM フェーズは RAW モードでは削除されます)、WRITE フェーズ中に実行されるように LoggingOutInterceptor を設定する必要があります。以下に例を示します。

@Bean
public CxfEndpoint serviceEndpoint(LoggingOutInterceptor loggingOutInterceptor) {
    CxfSpringEndpoint cxfEndpoint = new CxfSpringEndpoint();
    cxfEndpoint.setAddress("http://localhost:" + port
                            + "/services" + SERVICE_ADDRESS);
    cxfEndpoint.setServiceClass(org.apache.camel.component.cxf.HelloService.class);
    Map<String, Object> properties = new HashMap<String, Object>();
    properties.put("dataFormat", "RAW");
    cxfEndpoint.setProperties(properties);
    cxfEndpoint.getOutInterceptors().add(loggingOutInterceptor);
    return cxfEndpoint;
}


@Bean
public LoggingOutInterceptor loggingOutInterceptor() {
    LoggingOutInterceptor logger = new LoggingOutInterceptor("write");
    return logger;
}
Copy to Clipboard Toggle word wrap

25.5.5. RelayHeaders オプションの説明

JAXWS WSDL ファーストの開発者の観点から見ると、帯域内 ヘッダーと 帯域外 ヘッダーがあります。

インバンド ヘッダーは、SOAP ヘッダーなどのエンドポイントの WSDL バインディングコントラクトの一部として明示的に定義されるヘッダーです。

アウトオブバンド ヘッダーは、ネットワーク経由でシリアル化されるヘッダーですが、明示的に WSDL バインディングコントラクトの一部ではありません。

ヘッダーの中継/フィルタリングは双方向です。

ルートに CXF エンドポイントがあり、開発者が SOAP ヘッダーなどのオンザワイヤヘッダーをルートに沿ってリレーして、たとえば別の JAXWS エンドポイントで消費する必要がある場合、relayHeaderstrue に設定する必要があります。デフォルト値。

25.5.6. POJO モードでのみ使用可能

relayHeaders=true は、ヘッダーをリレーする意図を表します。特定のヘッダーが中継されるかどうかの実際の決定は、MessageHeadersRelay インターフェイスを実装するプラグ可能なインスタンスに委譲されます。MessageHeadersRelay の具体的な実装を調べて、ヘッダーを中継する必要があるかどうかを判断します。既知の SOAP 名前空間にバインドする SoapMessageHeadersRelay の実装がすでにあります。現在、帯域外ヘッダーのみがフィルタリングされ、relayHeaders=true の場合、帯域内ヘッダーは常に中継されます。ネームスペースがランタイムに不明なヘッダーがワイヤ上にある場合、フォールバック DefaultMessageHeadersRelay が使用されます。これにより、すべてのヘッダーの中継が単純に許可されます。

RelayHeaders=false 設定は、帯域内および帯域外のすべてのヘッダーをドロップする必要があることを指定します。

独自の MessageHeadersRelay 実装をプラグインして、リレーのリストをオーバーライドまたは追加することができます。プリロードされたリレーインスタンスをオーバーライドするには、MessageHeadersRelay 実装がオーバーライドしようとしている名前空間と同じ名前空間を提供していることを確認してください。また、オーバーライドするリレーは、オーバーライドしようとしているすべての名前空間にサービスを提供する必要があることに注意してください。そうしないと、インスタンスマッピングをリレーする名前空間にあいまいさが生じるため、ルートの起動時に実行時例外が出力されます。

<cxf:cxfEndpoint ...>
   <cxf:properties>
     <entry key="org.apache.camel.cxf.message.headers.relays">
       <list>
         <ref bean="customHeadersRelay"/>
       </list>
     </entry>
   </cxf:properties>
 </cxf:cxfEndpoint>
 <bean id="customHeadersRelay" class="org.apache.camel.component.cxf.soap.headers.CustomHeadersRelay"/>
Copy to Clipboard Toggle word wrap

ここでヘッダーをリレー/ドロップする方法を示すテストを見てください。

https://github.com/apache/camel/blob/main/components/camel-cxf/camel-cxf-spring-soap/src/test/java/org/apache/camel/component/cxf/soap/headers/CxfMessageHeadersRelayTest.java

  • POJO および PAYLOAD モードがサポートされています。POJO モードでは、CXF によってインバンドヘッダーが処理され、ヘッダーリストから削除されているため、フィルタリングに使用できるのはアウトオブバンドメッセージヘッダーのみです。インバンドヘッダーは、POJO モードで MessageContentList に組み込まれます。camel-cxf コンポーネントは、インバンドヘッダーを MessageContentList から削除しようとします。インバンドヘッダーのフィルタリングが必要な場合は、PAYLOAD モードを使用するか、(非常に簡単な) CXF インターセプター/JAXWS ハンドラーを CXF エンドポイントにプラグインしてください。
  • メッセージヘッダーリレーメカニズムは CxfHeaderFilterStrategy にマージされました。relayHeaders オプション、そのセマンティクス、およびデフォルト値は同じままですが、CxfHeaderFilterStrategy のプロパティーです。以下はその設定例です。
@Bean
public HeaderFilterStrategy dropAllMessageHeadersStrategy() {
    CxfHeaderFilterStrategy headerFilterStrategy = new CxfHeaderFilterStrategy();
    headerFilterStrategy.setRelayHeaders(false);
    return headerFilterStrategy;
}
Copy to Clipboard Toggle word wrap

その後、エンドポイントは CxfHeaderFilterStrategy を参照できます。

@Bean
public CxfEndpoint routerNoRelayEndpoint(HeaderFilterStrategy dropAllMessageHeadersStrategy) {
    CxfSpringEndpoint cxfEndpoint = new CxfSpringEndpoint();
    cxfEndpoint.setServiceClass(org.apache.camel.component.cxf.soap.headers.HeaderTester.class);
    cxfEndpoint.setAddress("/CxfMessageHeadersRelayTest/HeaderService/routerNoRelayEndpoint");
    cxfEndpoint.setWsdlURL("soap_header.wsdl");
    cxfEndpoint.setEndpointNameAsQName(
        QName.valueOf("{http://apache.org/camel/component/cxf/soap/headers}SoapPortNoRelay"));
    cxfEndpoint.setServiceNameAsQName(SERVICENAME);
    Map<String, Object> properties = new HashMap<String, Object>();
    properties.put("dataFormat", "PAYLOAD");
    cxfEndpoint.setProperties(properties);
    cxfEndpoint.setHeaderFilterStrategy(dropAllMessageHeadersStrategy);
    return cxfEndpoint;
}

@Bean
public CxfEndpoint serviceNoRelayEndpoint(HeaderFilterStrategy dropAllMessageHeadersStrategy) {
    CxfSpringEndpoint cxfEndpoint = new CxfSpringEndpoint();
    cxfEndpoint.setServiceClass(org.apache.camel.component.cxf.soap.headers.HeaderTester.class);
    cxfEndpoint.setAddress("http://localhost:" + port + "/services/CxfMessageHeadersRelayTest/HeaderService/routerNoRelayEndpointBackend");
    cxfEndpoint.setWsdlURL("soap_header.wsdl");
    cxfEndpoint.setEndpointNameAsQName(
        QName.valueOf("{http://apache.org/camel/component/cxf/soap/headers}SoapPortNoRelay"));
    cxfEndpoint.setServiceNameAsQName(SERVICENAME);
    Map<String, Object> properties = new HashMap<String, Object>();
    properties.put("dataFormat", "PAYLOAD");
    cxfEndpoint.setProperties(properties);
    cxfEndpoint.setHeaderFilterStrategy(dropAllMessageHeadersStrategy);
    return cxfEndpoint;
}
Copy to Clipboard Toggle word wrap

次に、ルートを次のように設定します。

rom("cxf:bean:routerNoRelayEndpoint")
    .to("cxf:bean:serviceNoRelayEndpoint");
Copy to Clipboard Toggle word wrap
  • MessageHeadersRelay インターフェイスがわずかに変更され、名前が MessageHeaderFilter に変更されました。CxfHeaderFilterStrategy のプロパティーです。ユーザー定義のメッセージヘッダーフィルターを設定する例を次に示します。
@Bean
public HeaderFilterStrategy customMessageFilterStrategy() {
    CxfHeaderFilterStrategy headerFilterStrategy = new CxfHeaderFilterStrategy();
    List<MessageHeaderFilter> headerFilterList = new ArrayList<MessageHeaderFilter>();
    headerFilterList.add(new SoapMessageHeaderFilter());
    headerFilterList.add(new CustomHeaderFilter());
    headerFilterStrategy.setMessageHeaderFilters(headerFilterList);
    return headerFilterStrategy;
}
Copy to Clipboard Toggle word wrap
  • relayHeaders に加えて、次のプロパティーを CxfHeaderFilterStrategy で設定できます。
Expand
名前必須説明

relayHeaders

いいえ

すべてのメッセージヘッダーは、メッセージヘッダーフィルターによって処理されます タイプ: booleanデフォルト: true

relayAllMessageHeaders

いいえ

すべてのメッセージヘッダーが伝達されます (メッセージヘッダーフィルターによる処理なし) タイプ: booleanデフォルト: false

allowFilterNamespaceClash

いいえ

アクティベーション名前空間で 2 つのフィルターが重複する場合、プロパティーはその処理方法を制御します。値が true の場合、最後のものが優先されます。値が false の場合、例外が出力されます Type : boolean Default : false

25.6. Spring で CXF エンドポイントを設定する

以下に示す Spring 設定ファイルを使用して CXF エンドポイントを設定できます。また、エンドポイントを camelContext タグに埋め込むこともできます。サービスエンドポイントを呼び出すときに、operationName ヘッダーと operationNamespace ヘッダーを設定して、呼び出す操作を明示的に指定できます。

<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:cxf="http://camel.apache.org/schema/cxf/jaxws"
        xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://camel.apache.org/schema/cxf/jaxws http://camel.apache.org/schema/cxf/jaxws/camel-cxf.xsd
        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
     <cxf:cxfEndpoint id="routerEndpoint" address="http://localhost:9003/CamelContext/RouterPort"
            serviceClass="org.apache.hello_world_soap_http.GreeterImpl"/>
     <cxf:cxfEndpoint id="serviceEndpoint" address="http://localhost:9000/SoapContext/SoapPort"
            wsdlURL="testutils/hello_world.wsdl"
            serviceClass="org.apache.hello_world_soap_http.Greeter"
            endpointName="s:SoapPort"
            serviceName="s:SOAPService"
        xmlns:s="http://apache.org/hello_world_soap_http" />
     <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
       <route>
         <from uri="cxf:bean:routerEndpoint" />
         <to uri="cxf:bean:serviceEndpoint" />
       </route>
    </camelContext>
  </beans>
Copy to Clipboard Toggle word wrap

ルート Bean 要素で指定された JAX-WS schemaLocation 属性を必ず含めてください。これにより、CXF はファイルを検証できるようになります。これは必須です。<cxf:cxfEndpoint/> タグの末尾にある名前空間の宣言にも注意してください。結合された {namespace}localName 構文は現在、このタグの属性値に対してサポートされていないため、これらの宣言が必要です。

cxf:cxfEndpoint 要素は、多くの追加属性をサポートしています。

Expand
名前

PortName

このサービスが実装しているエンドポイント名で、wsdl:port@name にマップされます。ns:PORT_NAME の形式で、ns はこのスコープで有効な名前空間接頭辞です。

serviceName

このサービスが実装しているサービス名で、wsdl:service@name にマップされます。ns:SERVICE_NAME の形式で、ns はこのスコープで有効な名前空間接頭辞です。

wsdlURL

WSDL のロケーション。クラスパス、ファイルシステム、またはリモートでホストできます。

bindingId

使用するサービスモデルの bindingId

address

サービス公開アドレス。

bus

JAX-WS エンドポイントで使用されるバス名。

serviceClass

JSR181 アノテーションを持つかどうかにかかわらず、SEI (Service Endpoint Interface) クラスのクラス名。

また、多くの子要素もサポートしています。

Expand
名前

cxf:inInterceptors

このエンドポイントの着信インターセプター。<bean> または <ref> のリスト。

cxf:inFaultInterceptors

このエンドポイントの着信障害インターセプター。<bean> または <ref> のリスト。

cxf:outInterceptors

このエンドポイントの発信インターセプター。<bean> または <ref> のリスト。

cxf:outFaultInterceptors

このエンドポイントの送信障害インターセプター。<bean> または <ref> のリスト。

cxf:properties

JAX-WS エンドポイントに提供する必要があるプロパティーマップ。以下を参照してください。

cxf:handlers

JAX-WS エンドポイントに提供する必要がある JAX-WS ハンドラーリスト。以下を参照してください。

cxf:dataBinding

エンドポイントで使用する DataBinding を指定できます。これは、Spring <bean class="MyDataBinding"/> 構文を使用して提供できます。

cxf:binding

このエンドポイントが使用する BindingFactory を指定できます。これは、Spring <bean class="MyBindingFactory"/> 構文を使用して提供できます。

cxf:features

このエンドポイントのインターセプターを保持する機能。Bean または参照のリスト

cxf:schemaLocations

エンドポイントが使用するスキーマの場所。schemaLocations のリスト

cxf:serviceFactory

このエンドポイントが使用するサービスファクトリー。これは、Spring <bean class="MyServiceFactory"/> 構文を使用して提供できます

CXF JAX-WS 設定ページ で、インターセプター、プロパティー、およびハンドラーを提供する方法を示すより高度な例を見つけることができます。

注記

cxf:properties を使用して、Spring 設定ファイルから camel-cxf エンドポイントの dataFormat および setDefaultBus プロパティーを設定できます。

<cxf:cxfEndpoint id="testEndpoint" address="http://localhost:9000/router"
     serviceClass="org.apache.camel.component.cxf.HelloService"
     endpointName="s:PortName"
     serviceName="s:ServiceName"
     xmlns:s="http://www.example.com/test">
     <cxf:properties>
       <entry key="dataFormat" value="RAW"/>
       <entry key="setDefaultBus" value="true"/>
     </cxf:properties>
   </cxf:cxfEndpoint>
Copy to Clipboard Toggle word wrap
注記

SpringBoot では、Spring XML ファイルを使用して camel-cxf を設定し、次の例のようなコードを使用して XML 設定 Bean を作成できます。

@ImportResource({
		"classpath:spring-configuration.xml"
})
Copy to Clipboard Toggle word wrap

ただし、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 [...]
Copy to Clipboard Toggle word wrap

この問題を解決するには、以下の WriteXmlDeclarationInterceptor のように、StaxOutInterceptor に XML 開始ドキュメントを書き込むように指示します。

public class WriteXmlDeclarationInterceptor extends AbstractPhaseInterceptor<SoapMessage> {
    public WriteXmlDeclarationInterceptor() {
        super(Phase.PRE_STREAM);
        addBefore(StaxOutInterceptor.class.getName());
    }

    public void handleMessage(SoapMessage message) throws Fault {
        message.put("org.apache.cxf.stax.force-start-document", Boolean.TRUE);
    }

}
Copy to Clipboard Toggle word wrap

別の方法として、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);
Copy to Clipboard Toggle word wrap

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()));
Copy to Clipboard Toggle word wrap

25.10. POJO データ形式の camel-cxf エンドポイントからのメッセージを使用する方法

camel-cxf エンドポイントconsumer POJO データ形式は CXF インボーカー に基づいているため、メッセージヘッダーには CxfConstants.OPERATION_NAME という名前のプロパティーがあり、メッセージ本文は SEI メソッドパラメーターのリストです。

PersonProcessor のサンプルコードを考えてみましょう。

public class PersonProcessor implements Processor {

    private static final Logger LOG = LoggerFactory.getLogger(PersonProcessor.class);

    @Override
    @SuppressWarnings("unchecked")
    public void process(Exchange exchange) throws Exception {
        LOG.info("processing exchange in camel");

        BindingOperationInfo boi = (BindingOperationInfo) exchange.getProperty(BindingOperationInfo.class.getName());
        if (boi != null) {
            LOG.info("boi.isUnwrapped" + boi.isUnwrapped());
        }
        // Get the parameters list which element is the holder.
        MessageContentsList msgList = (MessageContentsList) exchange.getIn().getBody();
        Holder<String> personId = (Holder<String>) msgList.get(0);
        Holder<String> ssn = (Holder<String>) msgList.get(1);
        Holder<String> name = (Holder<String>) msgList.get(2);

        if (personId.value == null || personId.value.length() == 0) {
            LOG.info("person id 123, so throwing exception");
            // Try to throw out the soap fault message
            org.apache.camel.wsdl_first.types.UnknownPersonFault personFault
                    = new org.apache.camel.wsdl_first.types.UnknownPersonFault();
            personFault.setPersonId("");
            org.apache.camel.wsdl_first.UnknownPersonFault fault
                    = new org.apache.camel.wsdl_first.UnknownPersonFault("Get the null value of person name", personFault);
            exchange.getMessage().setBody(fault);
            return;
        }

        name.value = "Bonjour";
        ssn.value = "123";
        LOG.info("setting Bonjour as the response");
        // Set the response message, first element is the return value of the operation,
        // the others are the holders of method parameters
        exchange.getMessage().setBody(new Object[] { null, personId, ssn, name });
    }

}
Copy to Clipboard Toggle word wrap

25.11. POJO データ形式で camel-cxf エンドポイントのメッセージを準備する方法

camel-cxf エンドポイント producer は、CXF client API に基づいています。まず、メッセージヘッダーでオペレーション名を指定し、次にメソッドパラメーターをリストに追加し、このパラメーターリストでメッセージを初期化する必要があります。応答メッセージの本文は messageContentsList であり、そのリストから結果を取得できます。

メッセージヘッダーで操作名を指定しない場合、CxfProducerCxfEndpoint から defaultOperationName を使用しようとします。CxfEndpointdefaultOperationName が設定されていない場合、操作リストから最初の operationName を取得します。

メッセージ本文からオブジェクト配列を取得する場合は、CxfProducerRouterTest.testInvokingSimpleServerWithParams に示すように、message.getBody (Object.class) を使用して本文を取得できます。

Exchange senderExchange = new DefaultExchange(context, ExchangePattern.InOut);
final List<String> params = new ArrayList<>();
// Prepare the request message for the camel-cxf procedure
params.add(TEST_MESSAGE);
senderExchange.getIn().setBody(params);
senderExchange.getIn().setHeader(CxfConstants.OPERATION_NAME, ECHO_OPERATION);

Exchange exchange = template.send("direct:EndpointA", senderExchange);

org.apache.camel.Message out = exchange.getMessage();
// The response message's body is an MessageContentsList which first element is the return value of the operation,
// If there are some holder parameters, the holder parameter will be filled in the reset of List.
// The result will be extract from the MessageContentsList with the String class type
MessageContentsList result = (MessageContentsList) out.getBody();
LOG.info("Received output text: " + result.get(0));
Map<String, Object> responseContext = CastUtils.cast((Map<?, ?>) out.getHeader(Client.RESPONSE_CONTEXT));
assertNotNull(responseContext);
assertEquals("UTF-8", responseContext.get(org.apache.cxf.message.Message.ENCODING),
        "We should get the response context here");
assertEquals("echo " + TEST_MESSAGE, result.get(0), "Reply body on Camel is wrong");
Copy to Clipboard Toggle word wrap

25.12. PAYLOAD データ形式の camel-cxf エンドポイントのメッセージを処理する方法

PAYLOAD は、SOAP エンベロープからのペイロードをネイティブ CxfPayload として処理することを意味します。Message.getBody ()org.apache.camel.component.cxf.CxfPayload オブジェクトを、SOAP メッセージヘッダーと SOAP 本文のゲッターと共に返します。

CxfConsumerPayloadTest を参照してください:

protected RouteBuilder createRouteBuilder() {
    return new RouteBuilder() {
        public void configure() {
            from(simpleEndpointURI + "&dataFormat=PAYLOAD").to("log:info").process(new Processor() {
                @SuppressWarnings("unchecked")
                public void process(final Exchange exchange) throws Exception {
                    CxfPayload<SoapHeader> requestPayload = exchange.getIn().getBody(CxfPayload.class);
                    List<Source> inElements = requestPayload.getBodySources();
                    List<Source> outElements = new ArrayList<>();
                    // You can use a customer toStringConverter to turn a CxfPayLoad message into String as you want
                    String request = exchange.getIn().getBody(String.class);
                    XmlConverter converter = new XmlConverter();
                    String documentString = ECHO_RESPONSE;

                    Element in = new XmlConverter().toDOMElement(inElements.get(0));
                    // Just check the element namespace
                    if (!in.getNamespaceURI().equals(ELEMENT_NAMESPACE)) {
                        throw new IllegalArgumentException("Wrong element namespace");
                    }
                    if (in.getLocalName().equals("echoBoolean")) {
                        documentString = ECHO_BOOLEAN_RESPONSE;
                        checkRequest("ECHO_BOOLEAN_REQUEST", request);
                    } else {
                        documentString = ECHO_RESPONSE;
                        checkRequest("ECHO_REQUEST", request);
                    }
                    Document outDocument = converter.toDOMDocument(documentString, exchange);
                    outElements.add(new DOMSource(outDocument.getDocumentElement()));
                    // set the payload header with null
                    CxfPayload<SoapHeader> responsePayload = new CxfPayload<>(null, outElements, null);
                    exchange.getMessage().setBody(responsePayload);
                }
            });
        }
    };
}
Copy to Clipboard Toggle word wrap

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());
Copy to Clipboard Toggle word wrap

Bean routerRelayEndpointWithInsertion および serviceRelayEndpointWithInsertion は次のように定義されます。

@Bean
public CxfEndpoint routerRelayEndpointWithInsertion() {
    CxfSpringEndpoint cxfEndpoint = new CxfSpringEndpoint();
    cxfEndpoint.setServiceClass(org.apache.camel.component.cxf.soap.headers.HeaderTester.class);
    cxfEndpoint.setAddress("/CxfMessageHeadersRelayTest/HeaderService/routerRelayEndpointWithInsertion");
    cxfEndpoint.setWsdlURL("soap_header.wsdl");
    cxfEndpoint.setEndpointNameAsQName(
        QName.valueOf("{http://apache.org/camel/component/cxf/soap/headers}SoapPortRelayWithInsertion"));
    cxfEndpoint.setServiceNameAsQName(SERVICENAME);
    cxfEndpoint.getFeatures().add(new LoggingFeature());
    return cxfEndpoint;
}

@Bean
public CxfEndpoint serviceRelayEndpointWithInsertion() {
    CxfSpringEndpoint cxfEndpoint = new CxfSpringEndpoint();
    cxfEndpoint.setServiceClass(org.apache.camel.component.cxf.soap.headers.HeaderTester.class);
    cxfEndpoint.setAddress("http://localhost:" + port + "/services/CxfMessageHeadersRelayTest/HeaderService/routerRelayEndpointWithInsertionBackend");
    cxfEndpoint.setWsdlURL("soap_header.wsdl");
    cxfEndpoint.setEndpointNameAsQName(
        QName.valueOf("{http://apache.org/camel/component/cxf/soap/headers}SoapPortRelayWithInsertion"));
    cxfEndpoint.setServiceNameAsQName(SERVICENAME);
    cxfEndpoint.getFeatures().add(new LoggingFeature());
    return cxfEndpoint;
}
Copy to Clipboard Toggle word wrap

SOAP ヘッダーは、Camel メッセージヘッダーとの間で伝達されます。Camel メッセージヘッダー名は、CXF (org.apache.cxf.headers.Header.HEADER_LIST) で定義されている定数である "org.apache.cxf.headers.Header.list" です。ヘッダー値は、CXF SoapHeader オブジェクト (org.apache.cxf.binding.soap.SoapHeader) のリストです。次のスニペットは、InsertResponseOutHeaderProcessor (応答メッセージに新しい SOAP ヘッダーを挿入する) です。InsertResponseOutHeaderProcessor と InsertRequestOutHeaderProcessor の両方で SOAP ヘッダーにアクセスする方法は、実際には同じです。2 つのプロセッサーの唯一の違いは、挿入される SOAP ヘッダーの方向を設定することです。

InsertResponseOutHeaderProcessor の例は CxfMessageHeadersRelayTest にあります。

public static class InsertResponseOutHeaderProcessor implements Processor {

    public void process(Exchange exchange) throws Exception {
        List<SoapHeader> soapHeaders = CastUtils.cast((List<?>)exchange.getIn().getHeader(Header.HEADER_LIST));

        // Insert a new header
        String xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?><outofbandHeader "
            + "xmlns=\"http://cxf.apache.org/outofband/Header\" hdrAttribute=\"testHdrAttribute\" "
            + "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" soap:mustUnderstand=\"1\">"
            + "<name>New_testOobHeader</name><value>New_testOobHeaderValue</value></outofbandHeader>";
        SoapHeader newHeader = new SoapHeader(soapHeaders.get(0).getName(),
                       DOMUtils.readXml(new StringReader(xml)).getDocumentElement());
        // make sure direction is OUT since it is a response message.
        newHeader.setDirection(Direction.DIRECTION_OUT);
        //newHeader.setMustUnderstand(false);
        soapHeaders.add(newHeader);

    }

}
Copy to Clipboard Toggle word wrap

25.14. PAYLOAD モードで SOAP ヘッダーを取得および設定する方法

PAYLOAD モードで CxfPayload オブジェクトとして SOAP メッセージにアクセスする方法については、PAYLOAD データ形式で camel-cxf エンドポイントのメッセージを処理する方法 セクションですでに説明しました。

CxfPayload オブジェクトを取得したら、DOM 要素 (SOAP ヘッダー) のリストを返す CxfPayload.getHeaders () メソッドを呼び出すことができます。

例については、CxfPayLoadSoapHeaderTest を参照してください。

from(getRouterEndpointURI()).process(new Processor() {
    @SuppressWarnings("unchecked")
    public void process(Exchange exchange) throws Exception {
        CxfPayload<SoapHeader> payload = exchange.getIn().getBody(CxfPayload.class);
        List<Source> elements = payload.getBodySources();
        assertNotNull(elements, "We should get the elements here");
        assertEquals(1, elements.size(), "Get the wrong elements size");

        Element el = new XmlConverter().toDOMElement(elements.get(0));
        elements.set(0, new DOMSource(el));
        assertEquals("http://camel.apache.org/pizza/types",
                el.getNamespaceURI(), "Get the wrong namespace URI");

        List<SoapHeader> headers = payload.getHeaders();
        assertNotNull(headers, "We should get the headers here");
        assertEquals(1, headers.size(), "Get the wrong headers size");
        assertEquals("http://camel.apache.org/pizza/types",
                ((Element) (headers.get(0).getObject())).getNamespaceURI(), "Get the wrong namespace URI");
        // alternatively you can also get the SOAP header via the camel header:
        headers = exchange.getIn().getHeader(Header.HEADER_LIST, List.class);
        assertNotNull(headers, "We should get the headers here");
        assertEquals(1, headers.size(), "Get the wrong headers size");
        assertEquals("http://camel.apache.org/pizza/types",
                ((Element) (headers.get(0).getObject())).getNamespaceURI(), "Get the wrong namespace URI");

    }

})
.to(getServiceEndpointURI());
Copy to Clipboard Toggle word wrap

サブチャプター 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 を使用できます。POJOPAYLOAD、および 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);
Copy to Clipboard Toggle word wrap

あとは好きなように投げてください

from(routerEndpointURI).setFaultBody(constant(SOAP_FAULT));
Copy to Clipboard Toggle word wrap

CXF エンドポイントが MESSAGE データ形式で動作している場合、CxfMessageStreamExceptionTest で示されているように、メッセージ本文に SOAP Fault メッセージを設定し、メッセージヘッダーに応答コードを設定できます。

from(routerEndpointURI).process(new Processor() {

    public void process(Exchange exchange) throws Exception {
        Message out = exchange.getOut();
        // Set the message body with the
        out.setBody(this.getClass().getResourceAsStream("SoapFaultMessage.xml"));
        // Set the response code here
        out.setHeader(org.apache.cxf.message.Message.RESPONSE_CODE, new Integer(500));
    }

});
Copy to Clipboard Toggle word wrap

POJO データ形式を使用する場合も同様です。out body に SOAPFault を設定できます。

25.17. camel-cxf エンドポイントのリクエストとレスポンスのコンテキストを伝播する方法

CXF クライアント API は、要求と応答のコンテキストで操作を呼び出す方法を提供します。camel-cxf エンドポイント producer を使用して外部 Web サービスを呼び出す場合は、次のコードを使用して、要求コンテキストを設定し、応答コンテキストを取得できます。

        CxfExchange exchange = (CxfExchange)template.send(getJaxwsEndpointUri(), new Processor() {
             public void process(final Exchange exchange) {
                 final List<String> params = new ArrayList<String>();
                 params.add(TEST_MESSAGE);
                 // Set the request context to the inMessage
                 Map<String, Object> requestContext = new HashMap<String, Object>();
                 requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, JAXWS_SERVER_ADDRESS);
                 exchange.getIn().setBody(params);
                 exchange.getIn().setHeader(Client.REQUEST_CONTEXT , requestContext);
                 exchange.getIn().setHeader(CxfConstants.OPERATION_NAME, GREET_ME_OPERATION);
             }
         });
         org.apache.camel.Message out = exchange.getOut();
         // The output is an object array, the first element of the array is the return value
         Object\[\] output = out.getBody(Object\[\].class);
         LOG.info("Received output text: " + output\[0\]);
         // Get the response context form outMessage
         Map<String, Object> responseContext = CastUtils.cast((Map)out.getHeader(Client.RESPONSE_CONTEXT));
         assertNotNull(responseContext);
         assertEquals("Get the wrong wsdl operation name", "{http://apache.org/hello_world_soap_http}greetMe",
                      responseContext.get("javax.xml.ws.wsdl.operation").toString());
Copy to Clipboard Toggle word wrap

25.18. アタッチメントサポート

POJO モード: SOAP with Attachment と MTOM の両方がサポートされています (MTOM を有効にするためのペイロードモードの例を参照してください)。ただし、SOAP with Attachment はテストされていません。添付ファイルは POJO にマーシャリングおよびアンマーシャリングされるため、通常、ユーザーは添付ファイル自体を処理する必要はありません。MTOM が有効になっていない場合、添付ファイルは Camel メッセージの添付ファイルに伝達されます。そのため、Camel Message API で添付ファイルを取得することができます。

DataHandler Message.getAttachment(String id)
Copy to Clipboard Toggle word wrap

ペイロードモード: MTOM はコンポーネントによってサポートされます。添付ファイルは、上記の Camel Message API によって取得できます。SOAP with Attachment (SwA) がサポートされており、添付ファイルを取得できます。SwA がデフォルトです (CXF エンドポイントプロパティー mtom-enabled を false に設定するのと同じです)。

MTOM を有効にするには、CXF エンドポイントプロパティー "mtom-enabled" を true に設定します。

@Bean
public CxfEndpoint routerEndpoint() {
    CxfSpringEndpoint cxfEndpoint = new CxfSpringEndpoint();
    cxfEndpoint.setServiceNameAsQName(SERVICE_QNAME);
    cxfEndpoint.setEndpointNameAsQName(PORT_QNAME);
    cxfEndpoint.setAddress("/" + getClass().getSimpleName()+ "/jaxws-mtom/hello");
    cxfEndpoint.setWsdlURL("mtom.wsdl");
    Map<String, Object> properties = new HashMap<String, Object>();
    properties.put("dataFormat", "PAYLOAD");
    properties.put("mtom-enabled", true);
    cxfEndpoint.setProperties(properties);
    return cxfEndpoint;
}
Copy to Clipboard Toggle word wrap

ペイロードモードで CXF エンドポイントに送信する添付ファイル付きの Camel メッセージを生成できます。

Exchange exchange = context.createProducerTemplate().send("direct:testEndpoint", new Processor() {

    public void process(Exchange exchange) throws Exception {
        exchange.setPattern(ExchangePattern.InOut);
        List<Source> elements = new ArrayList<Source>();
        elements.add(new DOMSource(DOMUtils.readXml(new StringReader(MtomTestHelper.REQ_MESSAGE)).getDocumentElement()));
        CxfPayload<SoapHeader> body = new CxfPayload<SoapHeader>(new ArrayList<SoapHeader>(),
            elements, null);
        exchange.getIn().setBody(body);
        exchange.getIn().addAttachment(MtomTestHelper.REQ_PHOTO_CID,
            new DataHandler(new ByteArrayDataSource(MtomTestHelper.REQ_PHOTO_DATA, "application/octet-stream")));

        exchange.getIn().addAttachment(MtomTestHelper.REQ_IMAGE_CID,
            new DataHandler(new ByteArrayDataSource(MtomTestHelper.requestJpeg, "image/jpeg")));

    }

});

// process response

CxfPayload<SoapHeader> out = exchange.getOut().getBody(CxfPayload.class);
Assert.assertEquals(1, out.getBody().size());

Map<String, String> ns = new HashMap<String, String>();
ns.put("ns", MtomTestHelper.SERVICE_TYPES_NS);
ns.put("xop", MtomTestHelper.XOP_NS);

XPathUtils xu = new XPathUtils(ns);
Element oute = new XmlConverter().toDOMElement(out.getBody().get(0));
Element ele = (Element)xu.getValue("//ns:DetailResponse/ns:photo/xop:Include", oute,
                                   XPathConstants.NODE);
String photoId = ele.getAttribute("href").substring(4); // skip "cid:"

ele = (Element)xu.getValue("//ns:DetailResponse/ns:image/xop:Include", oute,
                                   XPathConstants.NODE);
String imageId = ele.getAttribute("href").substring(4); // skip "cid:"

DataHandler dr = exchange.getOut().getAttachment(photoId);
Assert.assertEquals("application/octet-stream", dr.getContentType());
MtomTestHelper.assertEquals(MtomTestHelper.RESP_PHOTO_DATA, IOUtils.readBytesFromStream(dr.getInputStream()));

dr = exchange.getOut().getAttachment(imageId);
Assert.assertEquals("image/jpeg", dr.getContentType());

BufferedImage image = ImageIO.read(dr.getInputStream());
Assert.assertEquals(560, image.getWidth());
Assert.assertEquals(300, image.getHeight());
Copy to Clipboard Toggle word wrap

ペイロードモードで CXF エンドポイントから受信した Camel メッセージを使用することもできます。CxfMtomConsumerPayloadModeTest は、これがどのように機能するかを示しています。

public static class MyProcessor implements Processor {

    @SuppressWarnings("unchecked")
    public void process(Exchange exchange) throws Exception {
        CxfPayload<SoapHeader> in = exchange.getIn().getBody(CxfPayload.class);

        // verify request
        Assert.assertEquals(1, in.getBody().size());

        Map<String, String> ns = new HashMap<String, String>();
        ns.put("ns", MtomTestHelper.SERVICE_TYPES_NS);
        ns.put("xop", MtomTestHelper.XOP_NS);

        XPathUtils xu = new XPathUtils(ns);
        Element body = new XmlConverter().toDOMElement(in.getBody().get(0));
        Element ele = (Element)xu.getValue("//ns:Detail/ns:photo/xop:Include", body,
                                           XPathConstants.NODE);
        String photoId = ele.getAttribute("href").substring(4); // skip "cid:"
        Assert.assertEquals(MtomTestHelper.REQ_PHOTO_CID, photoId);

        ele = (Element)xu.getValue("//ns:Detail/ns:image/xop:Include", body,
                                           XPathConstants.NODE);
        String imageId = ele.getAttribute("href").substring(4); // skip "cid:"
        Assert.assertEquals(MtomTestHelper.REQ_IMAGE_CID, imageId);

        DataHandler dr = exchange.getIn().getAttachment(photoId);
        Assert.assertEquals("application/octet-stream", dr.getContentType());
        MtomTestHelper.assertEquals(MtomTestHelper.REQ_PHOTO_DATA, IOUtils.readBytesFromStream(dr.getInputStream()));

        dr = exchange.getIn().getAttachment(imageId);
        Assert.assertEquals("image/jpeg", dr.getContentType());
        MtomTestHelper.assertEquals(MtomTestHelper.requestJpeg, IOUtils.readBytesFromStream(dr.getInputStream()));

        // create response
        List<Source> elements = new ArrayList<Source>();
        elements.add(new DOMSource(DOMUtils.readXml(new StringReader(MtomTestHelper.RESP_MESSAGE)).getDocumentElement()));
        CxfPayload<SoapHeader> sbody = new CxfPayload<SoapHeader>(new ArrayList<SoapHeader>(),
            elements, null);
        exchange.getOut().setBody(sbody);
        exchange.getOut().addAttachment(MtomTestHelper.RESP_PHOTO_CID,
            new DataHandler(new ByteArrayDataSource(MtomTestHelper.RESP_PHOTO_DATA, "application/octet-stream")));

        exchange.getOut().addAttachment(MtomTestHelper.RESP_IMAGE_CID,
            new DataHandler(new ByteArrayDataSource(MtomTestHelper.responseJpeg, "image/jpeg")));

    }
}
Copy to Clipboard Toggle word wrap

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>
Copy to Clipboard Toggle word wrap

デフォルトの CXF ディスパッチクライアントは、特定の SOAPAction ヘッダーを送信しないことに注意してください。したがって、ターゲットサービスが特定の SOAPAction 値を必要とする場合、キー SOAPAction (大文字と小文字を区別しない) を使用して Camel ヘッダーで提供されます。

25.21. Spring Boot 自動設定

このコンポーネントは、以下に示す 13 のオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

26.2. URI 形式

dataformat:name:(marshal|unmarshal)[?options]
Copy to Clipboard Toggle word wrap

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 DSLDataFormat DSL を使用することもできます。

オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。

プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。

26.4. コンポーネントオプション

データ形式コンポーネントは、以下に示す 2 つのオプションをサポートしています。

Expand
名前説明デフォルトタイプ

lazyStartProducer (producer)

最初のメッセージで producer をレイジーに起動すべきかどうか。レイジーに起動することで、起動時に producer が失敗し、それによりルートが失敗する可能性がある状況で、CamelContext およびルートの起動を許可します。レイジーな起動を延期すると、Camel のルーティングエラーハンドラー経由でメッセージのルーティング中に起動の失敗を処理できます。最初のメッセージが処理されるときに、producer の作成および起動に若干時間がかかり、合計処理時間が長くなる可能性があることに注意してください。

false

boolean

autowiredEnabled (上級)

自動ワイヤリングが有効になっているかどうか。これは、コンポーネントで設定される一致するタイプのインスタンスが 1 つあるかどうかを検出するためにレジストリーを検索することで、自動ワイアリングオプションに使用されます (オプションは自動ワイアとマーク付けされる必要があります)。これは、JDBC データソース、JMS 接続ファクトリー、AWS クライアントなどの自動設定に使用できます。

true

boolean

26.5. エンドポイントオプション

Data Format エンドポイントは、URI 構文を使用して設定されます。

dataformat:name:operation
Copy to Clipboard Toggle word wrap

パスおよびクエリーパラメーターを使用します。

26.5.1. パスパラメーター (2 パラメーター)

Expand
名前説明デフォルトタイプ

name (producer)

必須 データ形式の名前。

 

String

operation (producer)

マーシャリングまたはアンマーシャリングのいずれかを使用するために 必要な 操作。

列挙値:

  • marshal
  • unmarshal
 

String

26.5.2. クエリーパラメーター (1 パラメーター)

Expand
名前説明デフォルトタイプ

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");
Copy to Clipboard Toggle word wrap

XML DSL では、次のようにします。

<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="activemq:My.Queue"/>
    <to uri="dataformat:jaxb:unmarshal?contextPath=com.acme.model"/>
    <to uri="mqseries:Another.Queue"/>
  </route>
</camelContext>
Copy to Clipboard Toggle word wrap

26.7. Spring Boot 自動設定

コンポーネントは、以下に記載される 3 つのオプションをサポートします。

Expand
名前説明デフォルトタイプ

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 の両方がサポート対象

分散処理と非同期処理のテストは、非常に難しいことで知られています。MockTest、および 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>
Copy to Clipboard Toggle word wrap

27.2. URI 形式

dataset:name[?options]
Copy to Clipboard Toggle word wrap

name は、レジストリーで DataSet インスタンス を検索するために使用されます

Camel には、独自の DataSet を実装するためのベースとして使用できる org.apache.camel.component.dataset.DataSetorg.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 DSLDataFormat DSL を使用することもできます。

オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。

プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。

27.4. コンポーネントオプション

Dataset コンポーネントは、以下に示す 5 つのオプションをサポートしています。

Expand
名前説明デフォルトタイプ

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
Copy to Clipboard Toggle word wrap

パスおよびクエリーパラメーターを使用します。

27.5.1. パスパラメーター(1 パラメーター)

Expand
名前説明デフォルトタイプ

name (共通)

レジストリーで検索する DataSet の 必須 の名前。

 

DataSet

27.5.2. クエリーパラメーター (21 パラメーター)

Expand
名前説明デフォルトタイプ

dataSetIndex (共通)

CamelDataSetIndex ヘッダーの動作を制御します。consumer の場合: - off = ヘッダーは設定されません - strict/lenient = ヘッダーは設定されます producer の場合: - off = ヘッダー値は検証されず、存在しない場合は設定されません = strict =ヘッダー値が存在する必要があり、検証されます = lenient = ヘッダー値が存在する場合は検証され、存在しない場合は設定されます。

列挙値:

  • strict
  • lenient
  • off

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 がエクスチェンジを作成する際に交換パターンを設定します。

列挙値:

  • InOnly
  • InOut
  • InOptionalOut
 

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>
Copy to Clipboard Toggle word wrap

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");
Copy to Clipboard Toggle word wrap

上記は、レジストリーを調べて、メッセージの作成に使用される foo DataSet インスタンスを見つけます。

次に、以下で説明するように SimpleDataSet を使用して DataSet 実装を作成し、データセットの大きさやメッセージの外観などを設定します。

27.8. DataSetSupport (抽象クラス)

DataSetSupport 抽象クラスは、新しい DataSet の出発点として最適であり、派生クラスにいくつかの便利な機能を提供します。

27.8.1. DataSetSupport のプロパティー

Expand
プロパティータイプデフォルト説明

defaultHeaders

Map<String,Object>

null

デフォルトのメッセージ本文を指定します。SimpleDataSet の場合、これは一定のペイロードです。ただし、メッセージごとにカスタムペイロードを作成する場合は、DataSetSupport の独自の派生を作成します。

outputTransformer

org.apache.camel.Processor

null

 

size

long

10

送信/消費するメッセージの数を指定します。

reportCount

long

-1

進行状況を報告する前に受信するメッセージの数を指定します。大規模な負荷テストの進行状況を表示するのに役立ちます。< 0 の場合は size/5、0 の場合は size、それ以外の場合は reportCount 値に設定されます。

27.9. SimpleDataSet

SimpleDataSetDataSetSupport を拡張し、デフォルトの本文を追加します。

27.9.1. SimpleDataSet の追加プロパティー

Expand
プロパティータイプデフォルト説明

defaultBody

Object

<hello>world!</hello>

デフォルトのメッセージ本文を指定します。デフォルトでは、SimpleDataSet は交換ごとに同じ一定のペイロードを生成します。交換ごとにペイロードをカスタマイズする場合は、キャメル プロセッサー を作成し、outputTransformer プロパティーを設定して、それを使用するように SimpleDataSet を設定します。

27.10. ListDataSet

List`DataSet` は DataSetSupport を拡張し、デフォルトボディのリストを追加します。

27.10.1. ListDataSet の追加プロパティー

Expand
プロパティータイプデフォルト説明

defaultBodies

List<Object>

empty LinkedList<Object>

デフォルトのメッセージ本文を指定します。デフォルトでは、ListDataSetCamelDataSetIndex を使用して defaultBodies のリストから定数ペイロードを選択します。ペイロードをカスタマイズする場合は、キャメル プロセッサー を作成し、outputTransformer プロパティーを設定して、それを使用するように ListDataSet を設定します。

size

long

defaultBodies リストのサイズ

送信/消費するメッセージの数を指定します。この値は、defaultBodies リストのサイズとは異なる場合があります。値が defaultBodies リストのサイズより小さい場合、一部のリスト要素は使用されません。値が defaultBodies リストのサイズより大きい場合、交換のペイロードは CamelDataSetIndex の係数と defaultBodies リストのサイズを使用して選択されます (つまり、CamelDataSetIndex % defaultBodies.size ())。

27.11. FileDataSet

FileDataSetListDataSet を拡張し、ファイルから本文をロードするためのサポートを追加します。

27.11.1. FileDataSet の追加プロパティー

Expand
プロパティータイプデフォルト説明

sourceFile

File

null

ペイロードのソースファイルを指定します

delimiter

String

\z

ファイルを複数のペイロードに分割するために java.util.Scanner によって使用される区切り文字パターンを指定します。

27.12. Spring Boot 自動設定

コンポーネントは、以下に記載される 11 のオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

28.2. URI 形式

direct:someName[?options]
Copy to Clipboard Toggle word wrap

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 DSLDataFormat DSL を使用することもできます。

オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。

プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。

28.4. コンポーネントオプション

Direct コンポーネントは、以下に示す 5 つのオプションをサポートします。

Expand
名前説明デフォルトタイプ

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
Copy to Clipboard Toggle word wrap

パスおよびクエリーパラメーターを使用します。

28.5.1. パスパラメーター(1 パラメーター)

Expand
名前説明デフォルトタイプ

name (共通)

必須 direct エンドポイントの名前

 

String

28.5.2. クエリーパラメーター (8 パラメーター)

Expand
名前説明デフォルトタイプ

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 がエクスチェンジを作成する際に交換パターンを設定します。

列挙値:

  • InOnly
  • InOut
  • InOptionalOut
 

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 つのルートをリンクします。

from("activemq:queue:order.in")
    .to("bean:orderServer?method=validate")
    .to("direct:processOrder");

from("direct:processOrder")
    .to("bean:orderService?method=process")
    .to("activemq:queue:order.out");
Copy to Clipboard Toggle word wrap

Spring DSL を使用した例:

<route>
 <from uri="activemq:queue:order.in"/>
 <to uri="bean:orderService?method=validate"/>
 <to uri="direct:processOrder"/>
</route>

<route>
 <from uri="direct:processOrder"/>
 <to uri="bean:orderService?method=process"/>
 <to uri="activemq:queue:order.out"/>
</route>
Copy to Clipboard Toggle word wrap

SEDA コンポーネントの例も参照し、どのように併用できるか確認してください。

28.7. Spring Boot 自動設定

コンポーネントは、以下に示す 6 つのオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

29.2. URI 形式

elasticsearch://clusterName[?options]
Copy to Clipboard Toggle word wrap

29.3. オプションの設定

Camel コンポーネントは 2 つのレベルで設定されます。

  • コンポーネントレベル
  • エンドポイントレベル

29.3.1. コンポーネントレベルのオプション

コンポーネントレベル は最高レベルです。このレベルで定義した設定は、すべてのエンドポイントに継承されます。たとえば、コンポーネントにはセキュリティー設定、認証用の認証情報、ネットワーク接続の URL などが含まれます。

通常、コンポーネントには最も一般的なケースに合わせてデフォルトが事前に設定されているため、いくつかのコンポーネントオプションのみを設定するだけで済む場合もあれば、まったく設定する必要がない場合もあります。

コンポーネントは、Component DSL を使用して、設定ファイル (application.properties|yaml) で、または直接 Java コードで設定できます。

29.3.2. エンドポイントレベルのオプション

エンドポイントレベル には、エンドポイントに実行させる内容を設定するために使用できる多くのオプションがあります。オプションは、エンドポイントがコンシューマー (from) として使用されるか、プロデューサー (to) として使用されるか、その両方に使用されるかどうかに応じて分類されます。

エンドポイントは、path および query パラメーターとしてエンドポイント URI で直接設定できます。Java でエンドポイントとデータ形式を設定する タイプセーフ な方法として、Endpoint DSLDataFormat DSL を使用することもできます。

オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。

プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。

29.4. コンポーネントオプション

Elasticsearch コンポーネントは、以下にリストされている 14 個のオプションをサポートしています。

Expand
名前説明デフォルトタイプ

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
Copy to Clipboard Toggle word wrap

パスおよびクエリーパラメーターを使用します。

29.5.1. パスパラメーター(1 パラメーター)

Expand
名前説明デフォルトタイプ

clusterName (producer)

必須 クラスターの名前。

 

String

29.5.2. クエリーパラメーター(19 パラメーター)

Expand
名前説明デフォルトタイプ

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)

実行する操作。

列挙値:

  • Index
  • 更新
  • バルク
  • GetById
  • MultiGet
  • MultiSearch
  • Delete
  • DeleteIndex
  • Search
  • Exists
  • Ping
 

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 個のメッセージヘッダーをサポートします。

Expand
名前説明デフォルトタイプ

operation (producer)

定数: PARAM_OPERATION

実行する操作。

列挙値:

  • Index
  • 更新
  • バルク
  • GetById
  • MultiGet
  • MultiSearch
  • Delete
  • DeleteIndex
  • Search
  • Exists
  • Ping
 

ElasticsearchOperation

indexId (producer)

定数: PARAM_INDEX_ID

インデックス付けされたドキュメントの ID。

 

String

indexName (producer)

定数: PARAM_INDEX_NAME

動作させるインデックスの名前。

 

String

documentClass (producer)

定数: PARAM_DOCUMENT_CLASS

アンマーシャリングするドキュメントのクラスの完全修飾名。

ObjectNode

クラス

waitForActiveShards (producer)

定数: PARAM_WAIT_FOR_ACTIVE_SHARDS

インデックスの作成は、シャードの書き込み整合性数が使用可能になるまで待機します

 

Integer

scrollKeepAliveMs (producer)

定数: PARAM_SCROLL_KEEP_ALIVE_MS

応答の開始インデックス。

 

Integer

useScroll (producer)

定数: PARAM_SCROLL

スクロールの使用を有効にするには、true に設定します。

 

Boolean

size (producer)

定数: PARAM_SIZE

レスポンスのサイズ。

 

Integer

from (producer)

定数: PARAM_FROM

応答の開始インデックス。

 

Integer

29.7. メッセージ操作

現在、次の ElasticSearch 操作がサポートされています。操作のキーと次のいずれかに設定された値を使用して、エンドポイント URI オプションまたはエクスチェンジヘッダーを設定するだけです。一部の操作では、他のパラメーターまたはメッセージ本文を設定する必要もあります。

Expand
operationメッセージボディーdescription

Index

MapStringbyte[]ReaderInputStream または 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[]InputStreamStringReaderMap、または更新するドキュメントタイプのコンテンツ

コンテンツをインデックスに更新し、本文でコンテンツの 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);
Copy to Clipboard Toggle word wrap

Elasticsearch を使用した基本認証、または Elasticsearch クラスターの前でリバース HTTP プロキシーを使用する場合は、以下の例のようにコンポーネントで基本認証と SSL をセットアップするだけです。

ElasticsearchComponent elasticsearchComponent = new ElasticsearchComponent();
elasticsearchComponent.setHostAddresses("myelkhost:9200");
elasticsearchComponent.setUser("elkuser");
elasticsearchComponent.setPassword("secure!!");
elasticsearchComponent.setEnableSSL(true);
elasticsearchComponent.setCertificatePath(certPath);

camelContext.addComponent("elasticsearch", elasticsearchComponent);
Copy to Clipboard Toggle word wrap

29.9. インデックスの例

以下は単純な INDEX の例です

from("direct:index")
  .to("elasticsearch://elasticsearch?operation=Index&indexName=twitter");
Copy to Clipboard Toggle word wrap
<route>
    <from uri="direct:index"/>
    <to uri="elasticsearch://elasticsearch?operation=Index&amp;indexName=twitter"/>
</route>
Copy to Clipboard Toggle word wrap

この操作では、indexId ヘッダーを指定する必要があります。

クライアントは、Map を含む本文メッセージをルートに渡すだけで済みます。結果の本文には、作成された indexId が含まれます。

Map<String, String> map = new HashMap<String, String>();
map.put("content", "test");
String indexId = template.requestBody("direct:index", map, String.class);
Copy to Clipboard Toggle word wrap

29.10. 検索例

特定のフィールドと値を検索するには、検索操作を使用します。クエリーの JSON 文字列またはマップを渡します

from("direct:search")
  .to("elasticsearch://elasticsearch?operation=Search&indexName=twitter");
Copy to Clipboard Toggle word wrap
<route>
    <from uri="direct:search"/>
    <to uri="elasticsearch://elasticsearch?operation=Search&amp;indexName=twitter"/>
</route>
Copy to Clipboard Toggle word wrap
String query = "{\"query\":{\"match\":{\"doc.content\":\"new release of ApacheCamel\"}}}";
HitsMetadata<?> response = template.requestBody("direct:search", query, HitsMetadata.class);
Copy to Clipboard Toggle word wrap

マップを使用して特定のフィールドを検索します。

Map<String, Object> actualQuery = new HashMap<>();
actualQuery.put("doc.content", "new release of ApacheCamel");

Map<String, Object> match = new HashMap<>();
match.put("match", actualQuery);

Map<String, Object> query = new HashMap<>();
query.put("query", match);
HitsMetadata<?> response = template.requestBody("direct:search", query, HitsMetadata.class);
Copy to Clipboard Toggle word wrap

すべての結果を取得するには、Elasticsearch スクロール API を使用して検索します。

from("direct:search")
  .to("elasticsearch://elasticsearch?operation=Search&indexName=twitter&useScroll=true&scrollKeepAliveMs=30000");
Copy to Clipboard Toggle word wrap
<route>
    <from uri="direct:search"/>
    <to uri="elasticsearch://elasticsearch?operation=Search&amp;indexName=twitter&amp;useScroll=true&amp;scrollKeepAliveMs=30000"/>
</route>
Copy to Clipboard Toggle word wrap
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
}
Copy to Clipboard Toggle word wrap

以下も使用できます。

from("direct:search")
  .to("elasticsearch://elasticsearch?operation=Search&indexName=twitter&useScroll=true&scrollKeepAliveMs=30000")
  .split()
  .body()
  .streaming()
  .to("mock:output")
  .end();
Copy to Clipboard Toggle word wrap

29.11. マルチサーチの例

特定のフィールドと値に対する MultiSearching は、Operation 'MultiSearch' を使用します。MultiSearchRequest インスタンスを渡す

from("direct:multiSearch")
  .to("elasticsearch://elasticsearch?operation=MultiSearch");
Copy to Clipboard Toggle word wrap
<route>
    <from uri="direct:multiSearch"/>
    <to uri="elasticsearch://elasticsearch?operation=MultiSearch"/>
</route>
Copy to Clipboard Toggle word wrap

特定のフィールドでの MultiSearch

MsearchRequest.Builder builder = new MsearchRequest.Builder().index("twitter").searches(
        new RequestItem.Builder().header(new MultisearchHeader.Builder().build())
                .body(new MultisearchBody.Builder().query(b -> b.matchAll(x -> x)).build()).build(),
        new RequestItem.Builder().header(new MultisearchHeader.Builder().build())
                .body(new MultisearchBody.Builder().query(b -> b.matchAll(x -> x)).build()).build());
List<MultiSearchResponseItem<?>> response = template.requestBody("direct:multiSearch", builder, List.class);
Copy to Clipboard Toggle word wrap

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>
Copy to Clipboard Toggle word wrap

これが必要なのは、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!!
Copy to Clipboard Toggle word wrap

詳細は、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
Copy to Clipboard Toggle word wrap

29.14. Spring Boot 自動設定

コンポーネントは、以下に記載される 15 のオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

30.2. Exchange Property のオプション

ExchangeProperty 言語は、以下にリストされている 1 つのオプションをサポートしています。

Expand
名前デフォルトJava タイプ説明

trim

 

Boolean

値をトリミングして、先頭および末尾の空白と改行を削除するかどうか。

30.3. 例

recipientList EIP は、次のような exchangeProperty を利用できます。

<route>
  <from uri="direct:a" />
  <recipientList>
    <exchangeProperty>myProperty</exchangeProperty>
  </recipientList>
</route>
Copy to Clipboard Toggle word wrap

この場合、受信者のリストはプロパティ (myProperty) に含まれています。

Java DSL での同じ例:

from("direct:a").recipientList(exchangeProperty("myProperty"));
Copy to Clipboard Toggle word wrap

30.4. Spring Boot 自動設定

コンポーネントは、以下に記載される 147 のオプションをサポートします。

Expand
名前説明デフォルトタイプ

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>
Copy to Clipboard Toggle word wrap

31.2. URI 形式

FHIR コンポーネントは、次の URI 形式を使用します。

fhir://endpoint-prefix/endpoint?[options]
Copy to Clipboard Toggle word wrap

エンドポイント 接頭辞は次のいずれかです。

  • 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 DSLDataFormat DSL を使用することもできます。

オプションを設定するときは、URL、ポート番号、機密情報、およびその他の設定に プロパティープレースホルダー を使用します。

プレースホルダーを使用すると、コードから設定を外部化できるため、より柔軟で再利用可能なコードが得られます。

31.4. コンポーネントオプション

コンポーネントは、以下に記載される 27 のオプションをサポートします。

Expand
名前説明デフォルトタイプ

encoding (共通)

すべてのリクエストに使用するエンコーディング。

列挙値:

  • JSON
  • XML
 

String

fhirVersion (共通)

使用する FHIR バージョン。

列挙値:

  • DSTU2
  • DSTU2_HL7ORG
  • DSTU2_1
  • DSTU3
  • R4
  • R5

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 パラメーターを使用して、サーバーが応答を変更するように要求します。

列挙値:

  • カウント
  • TEXT
  • DATA
  • TRUE
  • FALSE
 

String

validationMode (上級)

Camel が FHIR Server の適合ステートメントをいつ検証する必要があるか。

列挙値:

  • NEVER
  • ONCE

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
Copy to Clipboard Toggle word wrap

パスおよびクエリーパラメーターを使用します。

31.5.1. パスパラメーター (2 パラメーター)

Expand
名前説明デフォルトタイプ

apiName (共通)

必須 実行する操作の種類

列挙値:

  • CAPABILITIES
  • CREATE
  • DELETE
  • HISTORY
  • LOAD_PAGE
  • META
  • OPERATION
  • PATCH
  • READ
  • SEARCH
  • TRANSACTION
  • UPDATE
  • VALIDATE
 

FhirApiName

methodName (共通)

必須: 選択した操作に使用するサブ操作

 

String

31.5.2. クエリーパラメーター (44 パラメーター)

Expand
名前説明デフォルトタイプ

encoding (共通)

すべてのリクエストに使用するエンコーディング。

列挙値:

  • JSON
  • XML
 

String

fhirVersion (共通)

使用する FHIR バージョン。

列挙値:

  • DSTU2
  • DSTU2_HL7ORG
  • DSTU2_1
  • DSTU3
  • R4
  • R5

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 がエクスチェンジを作成する際に交換パターンを設定します。

列挙値:

  • InOnly
  • InOut
  • InOptionalOut
 

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 パラメーターを使用して、サーバーが応答を変更するように要求します。

列挙値:

  • カウント
  • TEXT
  • DATA
  • TRUE
  • FALSE
 

String

validationMode (上級)

Camel が FHIR Server の適合ステートメントをいつ検証する必要があるか。

列挙値:

  • NEVER
  • ONCE

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
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • OFF

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
  • SECONDS
  • 時間

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
Copy to Clipboard Toggle word wrap

次の表に示すように、13 の API 名があります。

Expand
API 名タイプ説明

capabilities

両方

サーバーの機能ステートメントをフェッチする API

create

両方

サーバー上に新しいリソースインスタンスを作成する作成操作用の API

delete

両方

サーバーリソースで論理的な削除を実行する、削除操作用の API

history

両方

history メソッドの API

load-page

両方

Atom バンドル内の link type=next タグで指定されたリンクを使用して、ページセットからリソースの前/次のバンドルをロードする API

meta

両方

タグやその他のメタ要素をリソースから、またはサーバー全体で取得、追加、削除するために使用できるメタ操作用の API

operation

両方

拡張 FHIR 操作用の API

patch

両方

サーバーリソースで論理パッチを実行する、パッチ操作用の API

read

両方

読み取り操作の API メソッド

search

両方

特定の基準セットに一致するリソースを検索する API

transaction

両方

トランザクション (リソースの集まり) をサーバーに送信して単体で実行するための API

update

両方

サーバーリソースで論理的な削除を実行する、更新操作用の API

validate

両方

リソースを検証するための API

各 API については、以降のセクションで説明します。

31.6.1. API: 機能

producer と consumer の両方がサポート対象

機能 API は、次の構文で定義されます。

fhir:capabilities/methodName?[parameters]
Copy to Clipboard Toggle word wrap

以下の表にメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)

Expand
メソッド説明

ofType

指定されたモデルタイプを使用して適合ステートメントを取得します

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 メソッドには、次の表に示すパラメーターがあります。

Expand
パラメーター説明タイプ

extraParameters

渡すことができるパラメーターの完全なリストについては、ExtraParameters を参照してください。NULL の場合があります。

マップ

type

モデルタイプ

クラス

上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。

いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHereCamelFhir.myParameterNameHere ヘッダーをオーバーライドします。

31.6.2. API: 作成

producer と consumer の両方がサポート対象

作成 API は、構文で次のように定義されます。

fhir:create/methodName?[parameters]
Copy to Clipboard Toggle word wrap

以下の表に 1 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)

Expand
メソッド説明

resource

サーバー上に 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 メソッドには、次の表に示すパラメーターがあります。

Expand
パラメーター説明タイプ

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=myParameterNameHereCamelFhir.myParameterNameHere ヘッダーをオーバーライドします。

31.6.3. API: 削除

producer と consumer の両方がサポート対象

削除 API は、構文で次のように定義されます。

fhir:delete/methodName?[parameters]
Copy to Clipboard Toggle word wrap

以下の表に 3 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)

Expand
メソッド説明

resource

指定されたリソースを削除します

resourceById

リソースタイプ e でリソースを削除する

resourceConditionalByUrl

特定の検索 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 メソッドには、次の表に示すパラメーターがあります。

Expand
パラメーター説明タイプ

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 メソッドには、次の表に示すパラメーターがあります。

Expand
パラメーター説明タイプ

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 メソッドには、次の表に示すパラメーターがあります。

Expand
パラメーター説明タイプ

extraParameters

渡すことができるパラメーターの完全なリストについては、ExtraParameters を参照してください。NULL の場合があります。

マップ

url

使用する検索 URL。この URL の形式は、ResourceTypeParameters の形式にする必要があります。たとえば、Patientname=Smith&identifier=13.2.4.11.4%7C847366 です。

String

上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。

いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHereCamelFhir.myParameterNameHere ヘッダーをオーバーライドします。

31.6.4. API: 履歴

producer と consumer の両方がサポート対象

履歴 API は、次の構文で定義されます。

fhir:history/methodName?[parameters]
Copy to Clipboard Toggle word wrap

以下の表に 3 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)

Expand
メソッド説明

onInstance

サーバー上の特定のリソースのすべてのバージョンに対して (ID とタイプによって) 操作を実行します

onServer

サーバー上のすべてのタイプのすべてのリソースのすべてのバージョンで操作を実行します

onType

サーバー上の指定されたタイプのすべてのリソースのすべてのバージョンで操作を実行します

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 メソッドには、次の表に示すパラメーターがあります。

Expand
パラメーター説明タイプ

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 メソッドには、次の表に示すパラメーターがあります。

Expand
パラメーター説明タイプ

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 メソッドには、次の表に示すパラメーターがあります。

Expand
パラメーター説明タイプ

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=myParameterNameHereCamelFhir.myParameterNameHere ヘッダーをオーバーライドします。

31.6.5. API: ページの読み込み

producer と consumer の両方がサポート対象

ページ読み込み API は、次の構文で定義されます。

fhir:load-page/methodName?[parameters]
Copy to Clipboard Toggle word wrap

以下の表に 3 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)

Expand
メソッド説明

byUrl

指定された URL とバンドルタイプを使用して結果のページを読み込み、DSTU1 Atom バンドルを返します

next

バンドル内のリレーション next のリンクを使用して、結果の次のページを読み込みます

previous

バンドル内のリレーション 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 メソッドには、次の表に示すパラメーターがあります。

Expand
パラメーター説明タイプ

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 メソッドには、次の表に示すパラメーターがあります。

Expand
パラメーター説明タイプ

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 メソッドには、次の表に示すパラメーターがあります。

Expand
パラメーター説明タイプ

bundle

IBaseBundle

IBaseBundle

extraParameters

渡すことができるパラメーターの完全なリストについては、ExtraParameters を参照してください。NULL の場合があります。

マップ

上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。

いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHereCamelFhir.myParameterNameHere ヘッダーをオーバーライドします。

31.6.6. API: メタ

producer と consumer の両方がサポート対象

メタ API は、次の構文で定義されます。

fhir:meta/methodName?[parameters]
Copy to Clipboard Toggle word wrap

以下の表に 5 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)

Expand
メソッド説明

add

指定されたメタデータの要素を既存のセットに追加します (削除しないでください)。

delete

指定された ID から指定されたメタデータの要素を削除します

getFromResource

特定のリソースから現在のメタデータを取得する

getFromServer

サーバー全体から現在のメタデータを取得する

getFromType

特定のタイプから現在のメタデータをフェッチする

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 メソッドには、次の表に示すパラメーターがあります。

Expand
パラメーター説明タイプ

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 メソッドには、次の表に示すパラメーターがあります。

Expand
パラメーター説明タイプ

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 メソッドには、次の表に示すパラメーターがあります。

Expand
パラメーター説明タイプ

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 メソッドには、次の表に示すパラメーターがあります。

Expand
パラメーター説明タイプ

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 メソッドには、次の表に示すパラメーターがあります。

Expand
パラメーター説明タイプ

extraParameters

渡すことができるパラメーターの完全なリストについては、ExtraParameters を参照してください。NULL の場合があります。

マップ

metaType

IBaseMetaType クラス

クラス

resourceType

リソースの種類 (患者など)

String

上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。

いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHereCamelFhir.myParameterNameHere ヘッダーをオーバーライドします。

31.6.7. API: 操作

producer と consumer の両方がサポート対象

操作 API は、次の構文で定義されます。

fhir:operation/methodName?[parameters]
Copy to Clipboard Toggle word wrap

以下の表に 5 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)

Expand
メソッド説明

onInstance

サーバー上の特定のリソースのすべてのバージョンに対して (ID とタイプによって) 操作を実行します

onInstanceVersion

この操作は、リソースの特定のバージョンで動作します

onServer

サーバー上のすべてのタイプのすべてのリソースのすべてのバージョンで操作を実行します

onType

サーバー上の指定されたタイプのすべてのリソースのすべてのバージョンで操作を実行します

processMessage

この操作は、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 メソッドには、次の表に示すパラメーターがあります。

Expand
パラメーター説明タイプ

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 メソッドには、次の表に示すパラメーターがあります。

Expand
パラメーター説明タイプ

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 メソッドには、次の表に示すパラメーターがあります。

Expand
パラメーター説明タイプ

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 メソッドには、次の表に示すパラメーターがあります。

Expand
パラメーター説明タイプ

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 メソッドには、次の表に示すパラメーターがあります。

Expand
パラメーター説明タイプ

非同期

メッセージを非同期または同期のどちらで処理するか。デフォルトは同期です。

Boolean

extraParameters

渡すことができるパラメーターの完全なリストについては、ExtraParameters を参照してください。NULL の場合があります。

マップ

msgBundle

メッセージバンドルをメッセージングサーバーへの POST に設定します。

IBaseBundle

respondToUri

受信サーバーからの応答をこの URI に送信する必要があることを示すオプションのクエリーパラメーター。NULL の場合があります。

String

responseClass

応答クラス

クラス

上記のパラメーターに加えて、fhir API は任意の クエリーパラメーター も使用できます。

いずれのパラメーターも、エンドポイント URI で指定するか、メッセージヘッダーで動的に指定できます。メッセージヘッダー名は CamelFhir.parameter の形式である必要があります。inBody パラメーターはメッセージヘッダーをオーバーライドします。つまり、エンドポイントパラメーター inBody=myParameterNameHereCamelFhir.myParameterNameHere ヘッダーをオーバーライドします。

31.6.8. API: パッチ

producer と consumer の両方がサポート対象

パッチ API は、次の構文で定義されます。

fhir:patch/methodName?[parameters]
Copy to Clipboard Toggle word wrap

以下の表に 2 つのメソッドをリストし、その後に各メソッドの詳細な構文を示します。(API メソッドには、名前の代わりに構文で使用できる省略形の別名を付けることができます)

Expand
メソッド説明

patchById

指定されたリソース ID にパッチを適用します

patchByUrl

特定の検索 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 メソッドには、次の表に示すパラメーターがあります。

Expand
パラメーター説明タイプ

extraParameters

渡すことができるパラメーターの完全なリストについては、ExtraParameters を参照してください。NULL の場合があります。

マップ

id

パッチを適用するリソース ID

IIdType

patchBody

に準拠する XML または JSON でシリアル化されたパッチドキュメントの本文

String

preferReturn

リクエストに Prefer ヘッダーを追加します。これは、サーバーが結果の一部としてリソース本文を含めるか抑制することを要求します。リソースがサーバーによって返された場合、それは解析され、MethodOutcome#getResource () を介してクライアントにアクセス可能になります。

PreferReturnEnum

stringId

パッチを適用するリソース ID

String

31.6.8.2. メソッド patchByUrl