第4章 設定
Camel Quarkus は、デフォルトで Quarkus アプリケーションライフサイクルに基づいて起動または起動する Camel Context Bean を自動的に設定し、デプロイします。設定ステップは、Quarkus の拡張フェーズ中のビルド時に実行され、Camel Quarkus 固有の quarkus.camel.*
プロパティーを使用して調整できる Camel Quarkus エクステンションによって実行されます。
quarkus.camel.*
設定プロパティーは、個別のエクステンションページに記載されています (Camel Quarkus Core 等を参照)。
設定が完了すると、RUNTIME_INIT フェーズで、最小限の Camel Runtime がアセンブルされ、起動します。
4.1. Camel コンポーネントの設定
4.1.1. application.properties
プロパティーによって Apache Camel のコンポーネントおよびその他の要素を設定するには、アプリケーションが camel-quarkus-core
に直接、または推移的な推移的に依存するようにしてください。ほとんどの Camel Quarkus エクステンションは camel-quarkus-core
に依存するため、通常は明示的に追加する必要はありません。
camel-quarkus-core
は、Camel Main から Camel Quarkus に機能を提供します。
以下の例では、application.properties
を使用して LogComponent
に特定の ExchangeFormatter
設定を設定します。
camel.component.log.exchange-formatter = #class:org.apache.camel.support.processor.DefaultExchangeFormatter camel.component.log.exchange-formatter.show-exchange-pattern = false camel.component.log.exchange-formatter.show-body-type = false
4.1.2. CDI
CDI を使用してコンポーネントをプログラム的に設定することもできます。
推奨の方法は、ComponentAddEvent
を監視し、ルートおよび CamelContext
を起動する前にコンポーネントを設定することです。
import javax.enterprise.context.ApplicationScoped; import javax.enterprise.event.Observes; import org.apache.camel.quarkus.core.events.ComponentAddEvent; import org.apache.camel.component.log.LogComponent; import org.apache.camel.support.processor.DefaultExchangeFormatter; @ApplicationScoped public static class EventHandler { public void onComponentAdd(@Observes ComponentAddEvent event) { if (event.getComponent() instanceof LogComponent) { /* Perform some custom configuration of the component */ LogComponent logComponent = ((LogComponent) event.getComponent()); DefaultExchangeFormatter formatter = new DefaultExchangeFormatter(); formatter.setShowExchangePattern(false); formatter.setShowBodyType(false); logComponent.setExchangeFormatter(formatter); } } }
4.1.2.1. @Named
コンポーネントインスタンスの作成
または、@Named
プロデューサーメソッドでコンポーネントを作成し、設定できます。これは、Camel がコンポーネント URI スキームを使用してレジストリーからコンポーネントを検索する際に機能します。たとえば、LogComponent
の場合、Camel は log
の名前が付けられた Bean を検索します。
@Named
コンポーネント Bean の生成は通常は機能しますが、一部のコンポーネントで少し問題が発生する可能性があることに注意してください。
Camel Quarkus エクステンションは、以下のいずれかを行います。
- デフォルトの Camel コンポーネントタイプのカスタムサブタイプを渡します。Vert.x WebSocket エクステンション の例を参照してください。
- Quarkus 固有のコンポーネントのカスタマイズを実行します。JPA エクステンション の例を参照してください。
これらのアクションは、独自のコンポーネントインスタンスを作成する際に実行されないため、オブザーバーメソッドでコンポーネントを設定することが推奨される方法です。
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Named;
import org.apache.camel.component.log.LogComponent;
import org.apache.camel.support.processor.DefaultExchangeFormatter;
@ApplicationScoped
public class Configurations {
/**
* Produces a {@link LogComponent} instance with a custom exchange formatter set-up.
*/
@Named("log") 1
LogComponent log() {
DefaultExchangeFormatter formatter = new DefaultExchangeFormatter();
formatter.setShowExchangePattern(false);
formatter.setShowBodyType(false);
LogComponent component = new LogComponent();
component.setExchangeFormatter(formatter);
return component;
}
}
- 1
- メソッドの名前が同じであれば、
@Named
アノテーションの"log"
引数は省略できます。