2017-04-12 1 views
-1

私はXMLからJavaベースのapache camelルートを変換中です。 XMLでは、私は下にある小さなコードスニペットのようにREF属性使用して別のルータからルータを参照することができます。今すぐ他のルータからルータを参照しているapache camel java config

<route> 
    <from ref="process"/> 
    <to ref="logging"/> 
</route> 

<route> 
    <from ref="logging"/> 
    <to uri="bean:xyz?method=hello"/> 
</route> 

を、私は私が使用している場合、私は他のルータからルータを参照することができる方法でオプションを見つけることができませんJava。

@Bean (name = "loggingRouter") 
    RoutesBuilder loggingRouter() { 
      return new RouteBuilder() { 
       @Override 
       public void configure() throws Exception { 
        from("xyz") 
         .bean(abc, "log"); 
       } 
      }; 
     } 

上記の作成されたルートを他のルートのJavaで参照したいと思います。どうしたらいいですか?私は春のブーツ1.4.3とラクダ2.18.1です。私は、コメント内のコードスニペットを追加することができなかったとして、質問を更新

我々は、Javaクラスで複数のRoutesBuilderを持っている、と私たちは中に複数の経路を作成することができます

@Bean (name = "abc") 
    @ConditionalOnProperty (name = "someproperty", havingValue = "true") 
    RoutesBuilder directSMSRouter() { 
     return new RouteBuilder() { 
      @Override 
      public void configure() throws Exception { 
       from("direct:sendSMS") 
        .bean(abc, "sendSmsMessage"); 
      } 
     }; 
    } 

    @Bean (name = "xyz") 
    @ConditionalOnExpression ("'${someproperty1}'.equalsIgnoreCase('true') ||" + 
           "'${someproperty2}'.equalsIgnoreCase('true') ||" + 
           "'${someproperty3}'.equalsIgnoreCase" + 
           "('true') || '${someproperty4}'.equalsIgnoreCase('true') ") 
    RoutesBuilder directEmailRouter() { 
     return new RouteBuilder() { 
      @Override 
      public void configure() throws Exception { 
       from("direct:sendEmail") 
        .bean(xyz, "sendMessage"); 
      } 
     }; 
    } 

条件に基づいて、各を作成します方法を設定するが、私の問題は、私は1つのルートがすべてのRoutesBuilder

答えて

0

まず異なる他のルートでRoutesBuilder豆で作成参照することができますどのように、このJavaコードはRouteBuilderを作成されています。あなたのアプリケーションに複数のRouteBuilderを持つことはできません。 configureメソッドの中で何をしているのかはルートを作成することです。あなたはconfigureメソッドの中にたくさんのルートを書くことができます。次のような行を書くことができます。

from("blah blah").to("xyz") 

これは処理に役立ちます。 よく見るSpring RouteBuilder

+0

私は質問を更新しました。問題はRoutesBuilderの別のルートでRoutesBuilderで作成された参考ルートの1つで、別のRoutesBuilderで作成されました。 – prred

関連する問題