各メッセージを一連のエンドポイントに条件付きでルーティング
このシナリオは、Talend ESB、Talend Data Services Platform、Talend MDM Platform、Talend Real Time Big Data Platform、Talend Data Fabricにのみ適用されます。
Talendがサポートしているテクノロジーの詳細は、Talend Mediationコンポーネントを参照してください。
前のシナリオに基づくこのシナリオでは、ファイルシステムからの各メッセージは、含まれる都市名に従って異なるエンドポイントに連続的にルーティングされます。
このユースケースで使うすべてのファイルには、それらに含まれる都市名に基づいて名前が付けられます。以下は、2つの例の抜粋です。
Beijing.xml:
<person>
<firstName>Nicolas</firstName>
<lastName>Yang</lastName>
<city>Beijing</city>
</person>
Paris.xml:
<person>
<firstName>Pierre</firstName>
<lastName>Dupont</lastName>
<city>Paris</city>
</person>
このユースケースでは、事前定義されたJavaBean、setEndpointsが呼び出され、各メッセージに含まれる都市名に従ってエンドポイントURIを返すため、メッセージは次のようにルーティングされます。
-
都市名Parisを含むメッセージは、最初にエンドポイントaにルーティングされ、次にエンドポイントbに、最後にエンドポイント cにルーティングされます。
-
都市名Beijingを含むメッセージは、最初にエンドポイントcにルーティングされ、次にエンドポイントaに、最後にエンドポイント bにルーティングされます。
-
他のメッセージはエンドポイントbに、次にエンドポイントcにルーティングされます。
JavaBeansの作成と使用については、 Talend Studioユーザーガイドを参照してください。
package beans;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class setEndpoints {
public String helloExample(Document document) {
NodeList cities = document.getDocumentElement().getElementsByTagName(
"city");
Element city = (Element) cities.item(0);
String textContent = city.getTextContent();
if ("Paris".equals(textContent)) {
return "direct:a,direct:b,direct:c";
} else if ("Beijing".equals(textContent)) {
return "direct:c,direct:a,direct:b";
} else
return "direct:b,direct:c";
}
}