条件付きで異なるファイルパスにファイルをルーティングする
このシナリオは、Talend ESB、Talend Data Services Platform、Talend MDM Platform、Talend Real-Time Big Data Platform、Talend Data Fabricにのみ適用されます。
このシナリオでは、人物情報を含む3つのファイルメッセージが、含まれている都市名に従って異なるエンドポイントにルーティングされます。
以下は、このユースケースで使われるXMLファイルの例です。
Message_1.xml:
<person>
<firstName>Ellen</firstName>
<lastName>Ripley</lastName>
<city>Washington</city>
</person>
Message_2.xml:
<person>
<firstName>Peter</firstName>
<lastName>Green</lastName>
<city>London</city>
</person>
Message_3.xml:
<person>
<firstName>Alice</firstName>
<lastName>Yang</lastName>
<city>Beijing</city>
</person>
このユースケースでは、事前定義されたJavaBean、setDynaURIが呼び出され、各メッセージに含まれる都市名に従ってエンドポイントURIを返すため、たとえば都市名Washingtonを含むメッセージはエンドポイントWashingtonにルーティングされます。
JavaBeansの作成と使用については、Beansを使用をご覧ください。
package beans;
import org.apache.camel.Exchange;
import org.apache.camel.Header;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class setDynaURI {
public String setURI(Document document,
@Header(Exchange.SLIP_ENDPOINT) String previous) {
if(previous!=null){
return null;
}
NodeList cities = document.getDocumentElement().getElementsByTagName(
"city");
Element city = (Element) cities.item(0);
String textContent = city.getTextContent();
return "direct:"+textContent;
}
}