私は次のPOJOを持っています:
public class MyPOJO {
private Fizz fizz;
private Buzz buzz;
// ctor, getters, setters, etc.
}
そして、次のルート (Spring XML):
<route id="myroute">
<from uri="timer://runOnce?repeatCount=1&delay=10" />
<to uri="bean:myPOJOFactory?method=newMyPOJO" />
<!-- Not sure what to do here -->
<!-- MyPOJO#Fizz should get routed to direct:fizzFarm. -->
<!-- MyPOJO#Buzz should get routed to direct:buzzFarm. -->
</route>
どこmyPOJOFactory
にある:
public class MyPOJOFactory {
public MyPOJO newMyPOJO(Exchange exchange) {
Fizz fizz = new Fizz(true, 3);
Buzz buzz = new Buzz("awesome");
MyPOJO pojo = new MyPOJO(fizz, buzz);
exchange.getOut().setBody(pojo);
}
}
( BeanMyPOJO
内で作成された) インスタンスをその構成要素とプロパティに分割し、一方向と別の方向にルーティングする方法が必要です。myPOJOFactory
Fizz
Buzz
Fizz
Buzz
スプリッターについての私の理解では、それは交換の本体を取り、それを 2 つ以上のオブジェクトのコレクションに分割するだけです。しかし、これは私が望んでいることではないと思います。構成要素とフィールドにMyPOJO
「分割」したいのですが、それらを別の宛先にルーティングしたいからです。おそらく行き、行きます。Fizz
Buzz
Fizz
direct:fizzFarm
Buzz
direct:buzzFarm
Content-Based Router ( )についての私の理解では、条件ロジックをルート<choice/>
に追加できるということです。しかし、私が必要としているのは条件付きではないため、これも必要だとif-else-if
は思いません。MyPOJO#Fizz
direct:fizzFarm
MyPOJO#Buzz
direct:buzzFarm
動的ルーターについての私の理解では、メッセージをさまざまな宛先に動的にルーティングしますが、その方法はまだよくわかりません。これが私が望むものだと思いますmyPOJOFactory
が、 Beanから出てくると、交換にはMyPOJO
オブジェクトが含まれます。MyPOJO
動的ルーターに送信する前に、最初に分割する必要があるように感じます。そうすれば、動的ルーターはメッセージが か かを明確に認識しFizz
、Buzz
正しくルーティングできます。
したがって、動的ルーターと組み合わせてスプリッターを使用する必要があると思います。木を通して森を見ているのではありません。このようなもの:
<route id="myroute">
<from uri="timer://runOnce?repeatCount=1&delay=10" />
<to uri="bean:myPOJOFactory?method=newMyPOJO" />
<split>
<tokenize token="Somehow split MyPOJO into Fizz and Buzz here" />
<to uri="direct:dynrouter" />
</split>
<from uri="direct:dynrouter" />
<dynamicRouter>
<!-- ??? Somehow route Fizz to direct:fizzFarm, and Buzz to direct:buzzFarm
</dynamicRouter>
</route>
これをどのように達成できるかについてのアイデアはありますか (#1 と に分割MyPOJO
しFizz
、Buzz
#2 ルーターをルーティングFizz
しBuzz
て別の宛先に設定する)?