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>
<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>
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>
<dependencies>
<!-- Camel Starter -->
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-spring-boot-starter</artifactId>
</dependency>
<!-- ... other dependencies ... -->
</dependencies>
Spring Boot アプリケーションに必要な コンポーネントスターター も追加する必要があります。次の例は、自動設定スターター を ActiveMQ コンポーネント に追加する方法を示しています。
<dependencies> <!-- ... other dependencies ... --> <dependency> <groupId>org.apache.camel.springboot</groupId> <artifactId>camel-activemq-starter</artifactId> </dependency> </dependencies>
<dependencies>
<!-- ... other dependencies ... -->
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-activemq-starter</artifactId>
</dependency>
</dependencies>
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
camel.component.activemq.broker-url=tcp://localhost:61616
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("..."); } }
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("...");
}
}
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>
<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>
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>
<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>
次に、次のような 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"); } }
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");
}
}
その後、これらのルートは自動的に開始されます。
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>
<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>
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); } }
@Configuration
public class MyAppConfig {
@Autowired
CamelContext camelContext;
@Bean
MyService myService() {
return new DefaultMyService(camelContext);
}
}
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"); } }
@Component
public class MyRouter extends RouteBuilder {
@Override
public void configure() throws Exception {
from("jms:invoices").to("file:/invoices");
}
}
または、新しいルート 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"); } }; } }
@Configuration
public class MyRouterConfiguration {
@Bean
RoutesBuilder myRouter() {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from("jms:invoices").to("file:/invoices");
}
};
}
}
1.3.3. Camel プロパティー
Spring Boot の自動設定は、プロパティーのプレースホルダー、OS 環境変数、Camel プロパティーがサポートされるシステムプロパティーなどの Spring Boot 外部設定 に自動的に接続します。これは基本的に、application.properties
ファイルで定義されたすべてのプロパティーを意味します。
route.from = jms:invoices
route.from = jms:invoices
または、システムプロパティーを介して設定します。
java -Droute.to=jms:processed.invoices -jar mySpringApp.jar
java -Droute.to=jms:processed.invoices -jar mySpringApp.jar
Camel ルートのプレースホルダーとして使用できます。
@Component public class MyRouter extends RouteBuilder { @Override public void configure() throws Exception { from("{{route.from}}").to("{{route.to}}"); } }
@Component
public class MyRouter extends RouteBuilder {
@Override
public void configure() throws Exception {
from("{{route.from}}").to("{{route.to}}");
}
}
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 } }; } }
@Configuration
public class MyAppConfig {
@Bean
CamelContextConfiguration contextConfiguration() {
return new CamelContextConfiguration() {
@Override
void beforeApplicationStart(CamelContext context) {
// your custom configuration goes here
}
};
}
}
メソッド 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()); } }
@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());
}
}
デフォルトでは、コンシューマーテンプレートとプロデューサーテンプレートのエンドポイントキャッシュサイズは 1000 に設定されています。これらの値は、次の Spring プロパティーを変更することで変更できます。
camel.springboot.consumer-template-cache-size = 100 camel.springboot.producer-template-cache-size = 200
camel.springboot.consumer-template-cache-size = 100
camel.springboot.producer-template-cache-size = 200
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); } }
@Component
public class InvoiceProcessor {
@Autowired
private TypeConverter typeConverter;
public long parseInvoiceValue(Invoice invoice) {
String invoiceValue = invoice.grossValue();
return typeConverter.convertTo(Long.class, invoiceValue);
}
}
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()); } }
@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());
}
}
Camel Spring Boot は、アプリケーションコンテキストで利用可能な Spring の ConversionService
インスタンスに変換を委ねます。ConversionService
インスタンスが利用できない場合は、Camel Spring Boot 自動設定によってインスタンスが作成されます。
1.3.7. アプリケーションの存続
この機能が有効になっている Camel アプリケーションは、JVM の終了を防止してアプリケーションを存続させることのみを目的として、起動時に新しいスレッドを起動します。つまり、Spring Boot で Camel アプリケーションを開始した後、アプリケーションは Ctrl+C
シグナルを待機し、すぐには終了しません。
コントローラースレッドは、camel.springboot.main-run-controller
を true
に設定してアクティブ化できます。
camel.springboot.main-run-controller = true
camel.springboot.main-run-controller = true
Web モジュールを使用するアプリケーション (例えば org.springframework.boot:spring-boot-web-starter
モジュールをインポートするアプリケーション) は、他の非デーモンスレッドの存在によってアプリケーションが維持されるため、通常この機能を使用する必要はありません。
1.3.8. XML ルートの追加
デフォルトでは、Camel XML ルートをディレクトリー camel の下のクラスパスに配置できます。これは、camel-spring-boot が自動検出して含めます。ディレクトリー名を設定するか、設定オプションを使用してこれをオフにすることができます。
turn off scan only in the com/foo/routes classpath
# 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
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>
<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>
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>
<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>
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(); } }
@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();
}
}
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>
<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>
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(); } }
@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();
}
}
1.4. コンポーネントスターター
Camel Spring Boot は、Spring Boot スターターとして次の Camel アーティファクトをサポートします。
以下にリストされているアーティファクトの一部については、リファレンスドキュメントがまだ提供されていません。このドキュメントは、利用可能になり次第リリースされます。
コンポーネント | アーティファクト | 説明 |
---|---|---|
camel-aws2-cw-starter | AWS SDK バージョン 2.x を使用してメトリクスを AWS CloudWatch に送信します。 | |
camel-aws2-ddb-starter | AWS SDK バージョン 2.x を使用して、AWS DynamoDB サービスからデータを保存および取得します。 | |
camel-aws2-kinesis-starter | AWS SDK バージョン 2.x を使用して、AWS Kinesis Streams からレコードを消費し、作成します。 | |
camel-aws2-lambda-starter | AWS SDK バージョン 2.x を使用して、AWS Lambda 関数を管理および呼び出します。 | |
camel-aws2-s3-starter | AWS SDK バージョン 2.x を使用して、AWS S3 Storage Service からオブジェクトを保存および取得します。 | |
camel-aws2-sns-starter | AWS SDK バージョン 2.x を使用して AWS Simple Notification Topic にメッセージを送信します。 | |
camel-aws2-sqs-starter | AWS SDK バージョン 2.x を使用して AWS SQS サービスを送信先および送信元としてメッセージを送受信します。 | |
camel-azure-storage-blob-starter | SDK v12 を使用して Azure Storage Blob Service からブロブを保存および取得します。 | |
camel-azure-storage-queue-starter | azure-storage-queue コンポーネントは、Azure SDK v12 を使用して Azure Storage Queue への/からのメッセージを保存および取得するために使用されます。 | |
camel-bean-starter | Camel レジストリーに格納されている Java Bean のメソッドを呼び出します。 | |
camel-bean-validator-starter | Java Bean Validation API を使用してメッセージボディーを検証します。 | |
camel-browse-starter | BrowsableEndpoint をサポートするエンドポイントで受信したメッセージを調べます。 | |
camel-cassandraql-starter | CQL3 API (Thrift API 以外) を使用して Cassandra 2.0 と統合します。DataStax が提供する Cassandra Java Driver をベースにしています。 | |
camel-controlbus-starter | Camel ルートを管理および監視します。 | |
camel-cron-starter | Unix cron 構文で指定されたタイミングでイベントをトリガーする汎用インターフェイス。 | |
camel-dataformat-starter | Camel Data Format を通常の Camel コンポーネントとして使用します。 | |
camel-dataset-starter | Camel アプリケーションのロードおよびソークテスト用のデータを提供します。 | |
camel-direct-starter | 同じ Camel コンテキストから別のエンドポイントを同期的に呼び出します。 | |
camel-fhir-starter | FHIR (Fast Healthcare Interoperability Resources) 規格を使用して、ヘルスケアドメインの情報を交換します。 | |
camel-file-starter | ファイル読み取りおよび書き込みます。 | |
camel-ftp-starter | FTP サーバーとの間でファイルをアップロードおよびダウンロードします。 | |
camel-http-starter | Apache HTTP Client 4.x を使用して、外部の HTTP サーバーにリクエストを送信します。 | |
camel-infinispan-starter | Infinispan の分散キー/値のストアとデータグリッドの読み取りと書き込みを行います。 | |
camel-jira-starter | JIRA 問題トラッカーと対話します。 | |
camel-jms-starter | JMS Queue または Topic との間でメッセージを送受信します。 | |
camel-kafka-starter | Apache Kafka ブローカーとの間でメッセージを送受信します。 | |
camel-kamelet-starter | kamelets を呼び出す | |
camel-language-starter | Camel がサポートする任意の言語でスクリプトを実行します。 | |
camel-log-starter | 基礎となるロギングメカニズムにメッセージをログとして記録します。 | |
camel-mail-starter | imap、pop3、および smtp プロトコルを使用してメールを送受信します。 | |
camel-master-starter | 特定のエンドポイントから消費するクラスター内のコンシューマーは 1 つだけです。JVM が停止した場合に自動的にフェイルオーバーします。 | |
camel-mllp-starter | MLLP プロトコルを使用して外部システムと通信します。 | |
camel-mock-starter | モックを使用してルートおよび仲介ルールをテストします。 | |
camel-mongodb-starter | MongoDB ドキュメントおよびコレクションの操作を実行します。 | |
camel-netty-starter | Netty 4.x で TCP または UDP を使用するソケットレベルのネットワーク。 | |
camel-paho-starter | Eclipse Paho MQTT クライアントを使用して MQTT メッセージブローカーと通信します。 | |
camel-paho-mqtt5-starter | Eclipse Paho MQTT v5 クライアントを使用して MQTT メッセージブローカーと通信します。 | |
camel-quartz-starter | Quartz 2.x スケジューラーを使用してメッセージの送信をスケジュールします。 | |
camel-ref-starter | Camel Registry で名前によって動的に検索されたエンドポイントにメッセージをルーティングします。 | |
camel-rest-starter | REST サービスを公開するか、外部 REST サービスを呼び出します。 | |
camel-salesforce-starter | Java DTO を使用して Salesforce と通信します。 | |
camel-scheduler-starter | java.util.concurrent.ScheduledExecutorService を使用して、指定された間隔でメッセージを生成します。 | |
camel-seda-starter | 同じ JVM の Camel コンテキストから別のエンドポイントを非同期に呼び出します。 | |
camel-slack-starter | Slack との間でメッセージを送受信します。 | |
camel-sql-starter | Spring JDBC を使用して SQL クエリーを実行します。 | |
camel-stub-starter | 開発中またはテスト中に物理エンドポイントをスタブアウトします。 | |
camel-telegram-starter | Telegram Bot Telegram Bot API として動作するメッセージを送受信します。 | |
camel-timer-starter | java.util.Timer を使用して指定した間隔でメッセージを生成します。 | |
camel-validator-starter | XML スキーマと JAXP 検証を使用してペイロードを検証します。 | |
camel-webhook-starter | Webhook エンドポイントを公開して、他の Camel コンポーネントのプッシュ通知を受信します。 | |
camel-xslt-starter | XSLT テンプレートを使用して XML ペイロードを変換します。 |
コンポーネント | アーティファクト | 説明 |
---|---|---|
camel-avro-starter | Apache Avro バイナリーデータフォーマットを使用して、メッセージをシリアライズおよびデシリアライズします。 | |
camel-jackson-avro-starter | Jackson を使用して、POJO を Avro にマーシャリングし、戻します。 | |
camel-bindy-starter | Camel Bindy を使用した POJO とキーと値のペア (KVP) 形式の間のマーシャリングとアンマーシャリング | |
camel-hl7-starter | HL7 MLLP コーデックを使用して、HL7 (Health Care) モデルオブジェクトをマーシャリングおよびアンマーシャリングします。 | |
camel-jacksonxml-starter | Jackson の XMLMapper エクステンションを使用して、XML ペイロードを POJO にアンマーシャリングし、戻します。 | |
camel-jaxb-starter | XML ペイロードを POJO にアンマーシャリングし、JAXB2 XML マーシャリング標準を使用して戻します。 | |
camel-gson-starter | Gson を使用して POJO を JSON にマーシャリングし、戻します。 | |
camel-jackson-protobuf-starter | Jackson を使用して、POJO を Protobuf にマーシャリングし、戻します。 | |
camel-soap-starter | Java オブジェクトを SOAP メッセージにマーシャリングし、戻します。 | |
camel-zipfile-starter | java.util.zip.ZipStream を使用した圧縮および圧縮解除ストリーム。 |
言語 | アーティファクト | 説明 |
---|---|---|
camel-core-starter | 固定の値は、ルートの起動時に一度だけ設定されます。 | |
camel-core-starter | コンパイルされた単純な式を評価します。 | |
camel-core-starter | Exchange からプロパティーを取得します。 | |
camel-core-starter | Simple 言語のファイル関連機能。 | |
camel-core-starter | Exchange からヘッダーを取得します。 | |
camel-jsonpath-starter | JSON メッセージのボディーに対して、JsonPath 式を評価します。 | |
camel-core-starter | レジストリーの既存の式を使用します。 | |
camel-core-starter | Camel 単純式を評価します。 | |
camel-core-starter | 区切り文字パターンを使用してテキストペイロードをトークン化します。 | |
camel-xml-jaxp-starter | XML ペイロードをトークン化します。 | |
camel-xpath-starter | XML ペイロードに対して XPath 式を評価します。 | |
camel-saxon-starter | XQuery および Saxon を使用して XML ペイロードをクエリーまたは変換します。 |
拡張 | アーティファクト | 説明 |
---|---|---|
camel-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
camel.component.activemq.broker-url=tcp://localhost:61616
また、CSV データフォーマットの delimeter
をセミコロン (;) にするように設定することも可能です。
camel.dataformat.csv.delimiter=;
camel.dataformat.csv.delimiter=;
Camel は、プロパティーを目的のタイプに設定するときに、タイプコンバーター メカニズムを使用します。
#bean:name
を使用して、レジストリー内の Bean を参照できます。
camel.component.jms.transactionManager=#bean:myjtaTransactionManager
camel.component.jms.transactionManager=#bean:myjtaTransactionManager
通常、Bean
は Java で作成されます。
@Bean("myjtaTransactionManager") public JmsTransactionManager myjtaTransactionManager(PooledConnectionFactory pool) { JmsTransactionManager manager = new JmsTransactionManager(pool); manager.setDefaultTimeout(45); return manager; }
@Bean("myjtaTransactionManager")
public JmsTransactionManager myjtaTransactionManager(PooledConnectionFactory pool) {
JmsTransactionManager manager = new JmsTransactionManager(pool);
manager.setDefaultTimeout(45);
return manager;
}
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(); }
@Bean("kafka")
public KafkaComponent kafka(KafkaConfiguration kafkaconfiguration){
return ComponentsBuilderFactory.kafka()
.brokers("{{kafka.host}}:{{kafka.port}}")
.build();
}
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 アプリケーションを生成できます。
手順
次のコマンドを実行します。
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
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 Copied! pom.xml
ファイルを編集して、org.apache.camel.springboot:camel-spring-boot-dependencies
のバージョンを以下のように変更します。<version>3.14.2</version>
<version>3.14.2</version>
Copy to Clipboard Copied! 上記を以下のように変更します。
<version>3.14.2.redhat-00054</version>
<version>3.14.2.redhat-00054</version>
Copy to Clipboard Copied! アプリケーションをビルドします。
mvn package -f csb-app/pom.xml
mvn package -f csb-app/pom.xml
Copy to Clipboard Copied! アプリケーションを実行します。
java -jar csb-app/target/csb-app-1.0-SNAPSHOT.jar
java -jar csb-app/target/csb-app-1.0-SNAPSHOT.jar
Copy to Clipboard Copied! アプリケーションによって生成された Hello World 出力のコンソールログを調べて、アプリケーションが実行されていることを確認します。
com.redhat.MySpringBootApplication : Started MySpringBootApplication in 3.514 seconds (JVM running for 4.006) Hello World Hello World
com.redhat.MySpringBootApplication : Started MySpringBootApplication in 3.514 seconds (JVM running for 4.006) Hello World Hello World
Copy to Clipboard Copied!