5.3. CDI および Camel Bean コンポーネント


5.3.1. 名前による Bean の参照

ルート定義内の Bean を名前で参照するには、Bean に @Named ("myNamedBean") および @ApplicationScoped (またはその他の サポートされている スコープ) のアノテーションを付けます。@RegisterForReflection アノテーションは、ネイティブモードにとって重要です。

import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Named;
import io.quarkus.runtime.annotations.RegisterForReflection;

@ApplicationScoped
@Named("myNamedBean")
@RegisterForReflection
public class NamedBean {
    public String hello(String name) {
        return "Hello " + name + " from the NamedBean";
    }
}

その後、ルート定義で myNamedBean 名を使用できます。

import org.apache.camel.builder.RouteBuilder;
public class CamelRoute extends RouteBuilder {
    @Override
    public void configure() {
        from("direct:named")
                .bean("myNamedBean", "hello");
        /* ... which is an equivalent of the following: */
        from("direct:named")
                .to("bean:myNamedBean?method=hello");
    }
}

@Named の代わりに、io.smallrye.common.annotation.Identifier を使用して Bean に名前を付けて識別することもできます。

import jakarta.enterprise.context.ApplicationScoped;
import io.quarkus.runtime.annotations.RegisterForReflection;
import io.smallrye.common.annotation.Identifier;

@ApplicationScoped
@Identifier("myBeanIdentifier")
@RegisterForReflection
public class MyBean {
    public String hello(String name) {
        return "Hello " + name + " from MyBean";
    }
}

次に、Camel ルート内の識別子の値を参照します。

import org.apache.camel.builder.RouteBuilder;
public class CamelRoute extends RouteBuilder {
    @Override
    public void configure() {
        from("direct:start")
                .bean("myBeanIdentifier", "Camel");
    }
}
注記

Red Hat は、Camel ドキュメントの Bean Binding セクションにリストされているすべてのユースケースをサポートすることを目指しています。機能しない Bean バインディングシナリオがある場合は、問題の報告 をぜひお願いいたします。

5.3.2. @Consume

Camel Quarkus 2.0.0 以降、camel-quarkus-bean アーティファクトにより @org.apache.camel.Consume がサポートされるようになりました。Camel ドキュメントの Pojo Consuming セクションを参照してください。

次のようなクラスを宣言します。

import org.apache.camel.Consume;
public class Foo {

  @Consume("activemq:cheese")
  public void onCheese(String name) {
    ...
  }
}

すると、次の Camel ルートが

from("activemq:cheese").bean("foo1234", "onCheese")

自動的に作成されます。Camel Quarkus は @jakarta.inject.Singletonjakarta.inject.Named("foo1234") を Bean クラスに暗黙的に追加します。1234 は完全修飾クラス名から取得されたハッシュコードです。Bean に何らかの CDI スコープ (@ApplicationScoped など) または @Named("someName") がすでに設定されている場合、それらは自動作成されたルートで使用されます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.