Camel Spring Boot の概要


Red Hat Integration 2022.Q3

Camel Spring Boot の概要

概要

このガイドでは、Camel Spring Boot を紹介し、Camel Spring Boot を使用してアプリケーションを作成およびデプロイするさまざまな方法について説明します。

はじめに

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

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

第1章 Camel Spring Boot の概要

このガイドでは、Camel Spring Boot を紹介し、Camel Spring Boot を使用してアプリケーションの構築を開始する方法を示します。

1.1. Camel Spring Boot スターター

Spring Boot の Camel サポートは、多くの Camel コンポーネント の Camel とスターターの自動設定を提供します。Camel コンテキストのオピニオン自動設定は、Spring コンテキストで使用できる Camel ルートを自動検出し、プロデューサーテンプレート、コンシューマーテンプレート、タイプコンバーターなどの主な Camel ユーティリティーを Bean として登録します。

注記

Maven archtype を使用して Camel for Spring Boot アプリケーションを生成する方法については 、Generating a Camel for Spring Boot application using Maven を 参照してください。

開始するには、Camel Spring Boot BOM を Maven pom.xml ファイルに追加する必要があります。

<dependencyManagement>

    <dependencies>
        <!-- Camel BOM -->
        <dependency>
            <groupId>org.apache.camel.springboot</groupId>
            <artifactId>camel-spring-boot-bom</artifactId>
            <version>3.14.2.redhat-00054</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <!-- ... other BOMs or dependencies ... -->
    </dependencies>

</dependencyManagement>
Copy to Clipboard

camel-spring-boot-bom は、Camel Spring Boot スターター JAR のリストを含む基本的な BOM です。

次に、Camel Spring Boot スターター を追加して Camel Context を起動します。

    <dependencies>
        <!-- Camel Starter -->
        <dependency>
            <groupId>org.apache.camel.springboot</groupId>
            <artifactId>camel-spring-boot-starter</artifactId>
        </dependency>
        <!-- ... other dependencies ... -->
    </dependencies>
Copy to Clipboard

Spring Boot アプリケーションに必要な コンポーネントスターター も追加する必要があります。次の例は、自動設定スターターActiveMQ コンポーネント に追加する方法を示しています。

    <dependencies>
        <!-- ... other dependencies ... -->
        <dependency>
            <groupId>org.apache.camel.springboot</groupId>
            <artifactId>camel-activemq-starter</artifactId>
        </dependency>
    </dependencies>
Copy to Clipboard

1.1.1. Camel Spring Boot BOM と Camel Spring Boot の依存関係 BOM

生成される精選された camel-spring-boot-dependencies BOM には、Spring Boot と Apache Camel の両方が競合を回避するために使用する調整された JAR が含まれています。この BOM は camel-spring-boot 自体をテストするために使用されます。

Spring Boot ユーザーは、管理対象の依存関係として Camel スターター JAR のみを持つ camel-spring-boot-bom を使用して、純粋な Camel 依存関係を使用することを選択できます。ただし、Spring Boot のサードパーティー JAR が特定の Camel コンポーネントと互換性がない場合、クラスパスの競合が発生する可能性があります。

1.1.2. Spring Boot 設定のサポート

スターター には、標準の application.properties または application.yml ファイルで設定できる設定パラメーターがリストされています。これらのパラメーターの形式は camel.component.[component-name].[parameter] です。たとえば、ActiveMQ ブローカーの URL を設定するには、次のように設定できます。

camel.component.activemq.broker-url=tcp://localhost:61616
Copy to Clipboard

1.1.3. Camel ルートの追加

Camel ルート は Spring アプリケーションコンテキストで検出されます。たとえば、org.springframework.stereotype.Component でアノテーションが付けられたルートがロードされ、Camel コンテキストに追加されて実行されます。

import org.apache.camel.builder.RouteBuilder;
import org.springframework.stereotype.Component;

@Component
public class MyRoute extends RouteBuilder {

    @Override
    public void configure() throws Exception {
        from("...")
            .to("...");
    }

}
Copy to Clipboard

1.2. Spring Boot

Spring Boot は Camel を自動的に設定します。Camel コンテキストのオピニオン自動設定は、Spring コンテキストで使用できる Camel ルートを自動検出し、プロデューサーテンプレート、コンシューマーテンプレート、タイプコンバーターなどの主な Camel ユーティリティーを Bean として登録します。

Maven ユーザーは、このコンポーネントを使用するために pom.xml に次の依存関係を追加する必要があります。

<dependency>
    <groupId>org.apache.camel.springboot</groupId>
    <artifactId>camel-spring-boot</artifactId>
    <version>3.14.2.redhat-00054</version> <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard

camel-spring-boot jar には spring.factories ファイルが付属しているため、その依存関係をクラスパスに追加するとすぐに、Spring Boot が自動的に Camel を自動設定します。

1.2.1. Camel Spring Boot スターター

Apache Camel には、スターターを使用して Spring Boot Starter アプリケーションを開発できる、Spring Boot スターターモジュールが含まれています。ソースコードにも サンプルアプリケーション があります。

スターターを使用するには、Spring Boot pom.xml ファイルに以下を追加します。

<dependency>
    <groupId>org.apache.camel.springboot</groupId>
    <artifactId>camel-spring-boot-bom</artifactId>
    <version>3.14.2.redhat-00054</version> <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard

次に、次のような Camel ルートでクラスを追加するだけです。

package com.example;

import org.apache.camel.builder.RouteBuilder;
import org.springframework.stereotype.Component;

@Component
public class MyRoute extends RouteBuilder {

    @Override
    public void configure() throws Exception {
        from("timer:foo").to("log:bar");
    }
}
Copy to Clipboard

その後、これらのルートは自動的に開始されます。

application.properties または application.yml ファイルで Camel アプリケーションをカスタマイズできます。

1.3. Spring Boot 自動設定

Spring Boot で spring -boot を使用する場合は、自動設定をサポートするために、次の Maven 依存関係を必ず使用してください。

<dependency>
  <groupId>org.apache.camel.springboot</groupId>
  <artifactId>camel-spring-boot-starter</artifactId>
  <version>3.14.2.redhat-00054</version> <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard

1.3.1. 自動設定された Camel コンテキスト

Camel 自動設定によって提供される最も重要な機能は、CamelContext インスタンスです。Camel 自動設定は、SpringCamelContext を作成し、そのコンテキストの適切な初期化とシャットダウンを処理します。作成された Camel コンテキストは、Spring アプリケーションコンテキストにも (camelContext Bean 名で) 登録されるため、他の Spring Bean と同じようにアクセスできます。

@Configuration
public class MyAppConfig {

  @Autowired
  CamelContext camelContext;

  @Bean
  MyService myService() {
    return new DefaultMyService(camelContext);
  }

}
Copy to Clipboard

1.3.2. Camel ルートの自動検出

Camel auto-configuration は、Spring コンテキストからすべての RouteBuilder インスタンスを収集し、提供された CamelContext に自動的に注入します。これは、Spring Boot スターターを使用して新しい Camel ルートを作成するのは、@Component アノテーション付きクラスをクラスパスに追加するのと同じくらい簡単であることを意味します。

@Component
public class MyRouter extends RouteBuilder {

  @Override
  public void configure() throws Exception {
    from("jms:invoices").to("file:/invoices");
  }

}
Copy to Clipboard

または、新しいルート RouteBuilder Bean を @Configuration クラスで作成します。

@Configuration
public class MyRouterConfiguration {

  @Bean
  RoutesBuilder myRouter() {
    return new RouteBuilder() {

      @Override
      public void configure() throws Exception {
        from("jms:invoices").to("file:/invoices");
      }

    };
  }

}
Copy to Clipboard

1.3.3. Camel プロパティー

Spring Boot の自動設定は、プロパティーのプレースホルダー、OS 環境変数、Camel プロパティーがサポートされるシステムプロパティーなどの Spring Boot 外部設定 に自動的に接続します。これは基本的に、application.properties ファイルで定義されたすべてのプロパティーを意味します。

route.from = jms:invoices
Copy to Clipboard

または、システムプロパティーを介して設定します。

java -Droute.to=jms:processed.invoices -jar mySpringApp.jar
Copy to Clipboard

Camel ルートのプレースホルダーとして使用できます。

@Component
public class MyRouter extends RouteBuilder {

  @Override
  public void configure() throws Exception {
    from("{{route.from}}").to("{{route.to}}");
  }

}
Copy to Clipboard

1.3.4. カスタムの Camel コンテキスト設定

Camel 自動設定によって作成された CamelContext Bean でいくつかの操作を実行する場合は、Spring コンテキストに CamelContextConfiguration インスタンスを登録します。

@Configuration
public class MyAppConfig {

  @Bean
  CamelContextConfiguration contextConfiguration() {
    return new CamelContextConfiguration() {
      @Override
      void beforeApplicationStart(CamelContext context) {
        // your custom configuration goes here
      }
    };
  }

}
Copy to Clipboard

メソッド beforeApplicationStart は Spring コンテキストが開始される直前に呼び出されるため、このコールバックに渡される CamelContext インスタンスは完全に自動設定されます。CamelContextConfiguration の複数のインスタンスを Spring コンテキストに追加すると、各インスタンスが実行されます。

1.3.5. 自動設定されたコンシューマーおよびプロデューサーのテンプレート

Camel auto configuration によって、事前設定された ConsumerTemplate および ProducerTemplate インスタンスが提供されます。それらを Spring-managed の Bean に簡単に注入できます。

@Component
public class InvoiceProcessor {

  @Autowired
  private ProducerTemplate producerTemplate;

  @Autowired
  private ConsumerTemplate consumerTemplate;

  public void processNextInvoice() {
    Invoice invoice = consumerTemplate.receiveBody("jms:invoices", Invoice.class);
    ...
    producerTemplate.sendBody("netty-http:http://invoicing.com/received/" + invoice.id());
  }

}
Copy to Clipboard

デフォルトでは、コンシューマーテンプレートとプロデューサーテンプレートのエンドポイントキャッシュサイズは 1000 に設定されています。これらの値は、次の Spring プロパティーを変更することで変更できます。

camel.springboot.consumer-template-cache-size = 100
camel.springboot.producer-template-cache-size = 200
Copy to Clipboard

1.3.6. 自動設定された TypeConverter

Camel auto configuration では、Spring コンテキストの typeConverter という名前の TypeConverter インスタンスが登録されます。

@Component
public class InvoiceProcessor {

  @Autowired
  private TypeConverter typeConverter;

  public long parseInvoiceValue(Invoice invoice) {
    String invoiceValue = invoice.grossValue();
    return typeConverter.convertTo(Long.class, invoiceValue);
  }

}
Copy to Clipboard
1.3.6.1. Spring タイプコンバージョン API ブリッジ

Spring には、強力な 型変換 API が付属しています。Spring API は Camel の 型コンバーター API と似ています。両方の API が非常に似ているため、Camel Spring Boot は、Spring 変換 API に委譲するブリッジコンバーター (SpringTypeConverter) を自動的に登録します。これは、すぐに使用できる Camel が Spring コンバーターを Camel コンバーターのように扱うことを意味します。このアプローチでは、Camel TypeConverter API 経由でアクセスする Camel コンバーターと Spring コンバーターの両方を使用できます。

@Component
public class InvoiceProcessor {

  @Autowired
  private TypeConverter typeConverter;

  public UUID parseInvoiceId(Invoice invoice) {
    // Using Spring's StringToUUIDConverter
    UUID id = invoice.typeConverter.convertTo(UUID.class, invoice.getId());
  }

}
Copy to Clipboard

Camel Spring Boot は、アプリケーションコンテキストで利用可能な Spring の ConversionService インスタンスに変換を委ねます。ConversionService インスタンスが利用できない場合は、Camel Spring Boot 自動設定によってインスタンスが作成されます。

1.3.7. アプリケーションの存続

この機能が有効になっている Camel アプリケーションは、JVM の終了を防止してアプリケーションを存続させることのみを目的として、起動時に新しいスレッドを起動します。つまり、Spring Boot で Camel アプリケーションを開始した後、アプリケーションは Ctrl+C シグナルを待機し、すぐには終了しません。

コントローラースレッドは、camel.springboot.main-run-controllertrue に設定してアクティブ化できます。

camel.springboot.main-run-controller = true
Copy to Clipboard

Web モジュールを使用するアプリケーション (例えば org.springframework.boot:spring-boot-web-starter モジュールをインポートするアプリケーション) は、他の非デーモンスレッドの存在によってアプリケーションが維持されるため、通常この機能を使用する必要はありません。

1.3.8. XML ルートの追加

デフォルトでは、Camel XML ルートをディレクトリー camel の下のクラスパスに配置できます。これは、camel-spring-boot が自動検出して含めます。ディレクトリー名を設定するか、設定オプションを使用してこれをオフにすることができます。

# turn off
camel.springboot.routes-include-pattern = false
# scan only in the com/foo/routes classpath
camel.springboot.routes-include-pattern = classpath:com/foo/routes/*.xml
Copy to Clipboard

XML ファイルは、次のような Camel XML ルート (<CamelContext>ではない) である必要があります。

<routes xmlns="http://camel.apache.org/schema/spring">
    <route id="test">
        <from uri="timer://trigger"/>
        <transform>
            <simple>ref:myBean</simple>
        </transform>
        <to uri="log:out"/>
    </route>
</routes>
Copy to Clipboard

1.3.9. JUnit 5 の方法をテストする

テストのために、Maven ユーザーは次の依存関係を pom.xml に追加する必要があります。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <version>2.7.1</version> <!-- Use the same version as your Spring Boot version -->
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-test-spring-junit5</artifactId>
    <version>3.14.2.redhat-00067</version> <!-- use the same version as your Camel core version -->
    <scope>test</scope>
</dependency>
Copy to Clipboard

Camel Spring Boot アプリケーションをテストするには、テストクラスに @CamelSpringBootTest のアノテーションを付けます。これにより、Camel の Spring Test サポートがアプリケーションにもたらされるため、Spring Boot テスト規則 を使用してテストを作成できます。

CamelContext または ProducerTemplate を取得するには、@Autowired を使用して、通常の Spring の方法でそれらをクラスに注入できます。

camel-test-spring-junit5 を使用して、テストを宣言的に設定することもできます。この例では、@MockEndpoints アノテーションを使用して、エンドポイントを自動モック化します。

@CamelSpringBootTest
@SpringBootApplication
@MockEndpoints("direct:end")
public class MyApplicationTest {

    @Autowired
    private ProducerTemplate template;

    @EndpointInject("mock:direct:end")
    private MockEndpoint mock;

    @Test
    public void testReceive() throws Exception {
        mock.expectedBodiesReceived("Hello");
        template.sendBody("direct:start", "Hello");
        mock.assertIsSatisfied();
    }

}
Copy to Clipboard

1.3.10. JUnit 4 方式のテスト (非推奨)

テストのために、Maven ユーザーは次の依存関係を pom.xml に追加する必要があります。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <version>2.7.1</version> <!-- Use the same version as your Spring Boot version -->
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-test-spring</artifactId>
    <version>3.14.2.redhat-00067</version> <!-- use the same version as your Camel core version -->
    <scope>test</scope>
</dependency>
Copy to Clipboard

Camel Spring Boot アプリケーションをテストするには、テストクラスに @RunWith(CamelSpringBootRunner.class). のアノテーションを付けます。これにより、Camel の Spring Test サポートがアプリケーションにもたらされるため、Spring Boot テスト規則 を使用してテストを作成できます。

CamelContext または ProducerTemplate を取得するには、@Autowired を使用して、通常の Spring の方法でそれらをクラスに注入できます。

camel-test-spring-junit5 を使用して、テストを宣言的に設定することもできます。次の例では、@MockEndpoints アノテーションを使用して、エンドポイントを自動モック化します。

@RunWith(CamelSpringBootRunner.class)
@SpringBootTest
@MockEndpoints("direct:end")
public class MyApplicationTest {

    @Autowired
    private ProducerTemplate template;

    @EndpointInject("mock:direct:end")
    MockEndpoint mock;

    @Test
    public void testReceive() throws Exception {
        mock.expectedBodiesReceived("Hello");
        template.sendBody("direct:start", "Hello");
        mock.assertIsSatisfied();
    }

}
Copy to Clipboard

1.4. コンポーネントスターター

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

注記

以下にリストされているアーティファクトの一部については、リファレンスドキュメントがまだ提供されていません。このドキュメントは、利用可能になり次第リリースされます。

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

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 キネシス

camel-aws2-kinesis-starter

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

AWS Lambda

camel-aws2-lambda-starter

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

AWS S3 ストレージサービス

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 Storage Blob Service

camel-azure-storage-blob-starter

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

Azure ストレージキューサービス

camel-azure-storage-queue-starter

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

Bean

camel-bean-starter

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

Bean バリデーター

camel-bean-validator-starter

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

参照

camel-browse-starter

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

Cassandra CQL

camel-cassandraql-starter

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

コントロールバス

camel-controlbus-starter

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

Cron

camel-cron-starter

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

データ形式

camel-dataformat-starter

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

Dataset

camel-dataset-starter

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

Direct

camel-direct-starter

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

FHIR

camel-fhir-starter

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

File

camel-file-starter

ファイル読み取りおよび書き込みます。

FTP

camel-ftp-starter

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

HTTP

camel-http-starter

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

Infinispan

camel-infinispan-starter

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

Jira

camel-jira-starter

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

JMS

camel-jms-starter

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

Kafka

camel-kafka-starter

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

Kamelet

camel-kamelet-starter

kamelets を呼び出す

言語

camel-language-starter

Camel がサポートする任意の言語でスクリプトを実行します。

Log

camel-log-starter

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

mail

camel-mail-starter

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

マスター

camel-master-starter

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

MLLP

camel-mllp-starter

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

Mock

camel-mock-starter

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

MongoDB

camel-mongodb-starter

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

Netty

camel-netty-starter

Netty 4.x で TCP または UDP を使用するソケットレベルのネットワーク。

Paho

camel-paho-starter

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

Paho MQTT 5

camel-paho-mqtt5-starter

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

Quartz

camel-quartz-starter

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

Ref

camel-ref-starter

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

REST

camel-rest-starter

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

Salesforce

camel-salesforce-starter

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

スケジューラー

camel-scheduler-starter

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

SEDA

camel-seda-starter

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

Slack

camel-slack-starter

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

SQL

camel-sql-starter

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

Stub

camel-stub-starter

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

Telegram

camel-telegram-starter

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

Timer

camel-timer-starter

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

バリデーター

camel-validator-starter

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

Webhook

camel-webhook-starter

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

XSLT

camel-xslt-starter

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

表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

XML ペイロードを POJO にアンマーシャリングし、JAXB2 XML マーシャリング標準を使用して戻します。

JSON Gson

camel-gson-starter

Gson を使用して 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 を使用した圧縮および圧縮解除ストリーム。

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

Constant

camel-core-starter

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

CSimple

camel-core-starter

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

ExchangeProperty

camel-core-starter

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

File

camel-core-starter

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

ヘッダー

camel-core-starter

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

JSONPath

camel-jsonpath-starter

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

Ref

camel-core-starter

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

Simple (単純)

camel-core-starter

Camel 単純式を評価します。

Tokenize

camel-core-starter

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

XML トークン化

camel-xml-jaxp-starter

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

XPath

camel-xpath-starter

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

XQuery

camel-saxon-starter

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

表1.4 その他の拡張機能
拡張アーティファクト説明

Openapi Java

camel-openapi-java-starter

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

1.5. スターター設定

明確でアクセスしやすい設定は、アプリケーションの重要な部分です。Camel スターター は、Spring Boot の 外部設定 メカニズムを完全にサポートします。より複雑なユースケースでは、Spring Bean を介してそれらを設定することもできます。

1.5.1. 外部設定の使用

内部的には、すべての スターター は Spring Boot の ConfigurationProperties を介して設定されます。各設定パラメーターは、さまざまな 方法 で設定できます (application.[properties|json|yaml] ファイル、コマンドライン引数、環境変数など)。パラメーターの形式は camel.[component|language|dataformat].[name].[parameter] です。

たとえば、ActiveMQ ブローカーの URL を設定するには、次のように設定できます。

camel.component.activemq.broker-url=tcp://localhost:61616
Copy to Clipboard

また、CSV データフォーマットの delimeter をセミコロン (;) にするように設定することも可能です。

camel.dataformat.csv.delimiter=;
Copy to Clipboard

Camel は、プロパティーを目的のタイプに設定するときに、タイプコンバーター メカニズムを使用します。

#bean:name を使用して、レジストリー内の Bean を参照できます。

camel.component.jms.transactionManager=#bean:myjtaTransactionManager
Copy to Clipboard

通常、Bean は Java で作成されます。

@Bean("myjtaTransactionManager")
public JmsTransactionManager myjtaTransactionManager(PooledConnectionFactory pool) {
    JmsTransactionManager manager = new JmsTransactionManager(pool);
    manager.setDefaultTimeout(45);
    return manager;
}
Copy to Clipboard

Bean は 設定ファイル で作成することもできますが、これは複雑なユースケースにはお勧めできません。

1.5.2. Bean の使用

スターターは、Spring Beans を介して作成および設定することもできます。スターターを作成する前に、既に存在する場合、Camel は最初にその名前でレジストリーを検索します。たとえば、Kafka コンポーネントを設定するには、次のようにします。

@Bean("kafka")
public KafkaComponent kafka(KafkaConfiguration kafkaconfiguration){
    return ComponentsBuilderFactory.kafka()
                        .brokers("{{kafka.host}}:{{kafka.port}}")
                        .build();
}
Copy to Clipboard

Bean 名は、設定しているコンポーネント、データ形式、または言語の名前と同じでなければなりません。Bean 名がアノテーションで指定されていない場合は、メソッド名に設定されます。

典型的な Camel Spring Boot プロジェクトは、外部設定と Bean の組み合わせを使用してアプリケーションを設定します。Camel Spring Boot プロジェクトを設定する方法のその他の例については、サンプル リポジトリー を参照してください。

1.6. Maven を使用して Spring Boot アプリケーション用の Camel を生成する

Maven アーキタイプ org.apache.camel.archetypes:camel-archetype-spring-boot:3.14.2 を使用して、Camel Spring Boot アプリケーションを生成できます。

手順

  1. 次のコマンドを実行します。

    mvn archetype:generate -DarchetypeGroupId=org.apache.camel.archetypes \
      -DarchetypeArtifactId=camel-archetype-spring-boot \
      -DarchetypeVersion=3.14.2 \
      -DgroupId=com.redhat \
      -DartifactId=csb-app \
      -Dversion=1.0-SNAPSHOT \
      -DinteractiveMode=false \
      -Dspring-boot-version=2.7.1
    Copy to Clipboard
  2. pom.xml ファイルを編集して、org.apache.camel.springboot:camel-spring-boot-dependencies のバージョンを以下のように変更します。

    <version>3.14.2</version>
    Copy to Clipboard

    上記を以下のように変更します。

    <version>3.14.2.redhat-00054</version>
    Copy to Clipboard
  3. アプリケーションをビルドします。

    mvn package -f csb-app/pom.xml
    Copy to Clipboard
  4. アプリケーションを実行します。

    java -jar csb-app/target/csb-app-1.0-SNAPSHOT.jar
    Copy to Clipboard
  5. アプリケーションによって生成された Hello World 出力のコンソールログを調べて、アプリケーションが実行されていることを確認します。

    com.redhat.MySpringBootApplication       : Started MySpringBootApplication in 3.514 seconds (JVM running for 4.006)
    Hello World
    Hello World
    Copy to Clipboard
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

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

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat