1

コンテンツ ベースのルーター内でパイプライン処理できますか? コンテンツベースのルーター内で Bean をパイプライン処理する必要があります。そのために、次の構成を採用しました。構成自体が私の要件を説明していることを願っています。それが正しいか?end() タグも追加する必要がありますか?

<route>
  <from uri="activemq:queue:injob"/>
  <choice>
    <when>
       <simple>${header.type} == 'heartbeat'</simple>
       <to uri="bean:heartBeatHandler"/>
       <to uri="activemq:queue:outjob"/>
    </when>
    <when>
      <simple>${header.type} == 'dnsrequest'</simple>
      <to uri="bean:dnsRequestHandler"/>
      <to uri="bean:parser"/>
      <to uri="activemq:queue:outjob"/>
    </when>
    <when>
      <simple>${header.type} == 'whoisrequest'</simple>
      <to uri="bean:whoisRequestHandler"/>
      <to uri="bean:parser"/>
      <to uri="activemq:queue:outjob"/>
    </when>
    <otherwise>
      <to uri="bean:errorHandler"/>
    </otherwise>
  </choice>
</route>
4

1 に答える 1

3

はい、これは正しいことです。

Camel はデフォルトでパイプライン モードで実行されます (例: パイプとフィルターの EIP - http://camel.apache.org/pipes-and-filters.html )。例えば

<when>
   <simple>${header.type == 'heartbeat'}</simple>
   <pipeline>
     <to uri="bean:heartBeatHandler"/>
     <to uri="activemq:queue:outjob"/>
   </pipeline>
</when>

しかし、多くの場合、 < パイプライン > を省略して、例のように実行します。

パイプラインとは反対にマルチキャスト ( http://camel.apache.org/multicast.html ) があり、これら 2 つを組み合わせると、パイプラインを使用する必要がある場合があります。

<multicast>
  <pipeline>
     <to uri="bean:heartBeatHandler"/>
     <to uri="activemq:queue:outjob"/>
   </pipeline>
  <pipeline>
     <to uri="bean:somethingElse"/>
     <to uri="activemq:queue:somethingElse"/>
   </pipeline>
</multicast>
于 2013-02-12T13:07:12.123 に答える