我會在頭文件中設置一個值來指示它是哪個服務,然後在駱駝路由上發送這個值。這種方法只是這樣做的一種方式。 Christian Schneider有另一個很好的解決方案,我現在可能會使用更多的解決方案,因爲我現在已經更多地使用了駱駝。但是,兩者都會達到同樣的效果,並且取決於你問的人可能比其他人更清楚。
例如,你可以這樣做:
public void foo(Exchange exchange){
exchange.getIn().setHeader("MsgType", "Student");
}
然後,您可以在任何在Java DSL,甚至春季DSL頭過濾。
在Java DSL,你會做這樣的事情(僞代碼)
from("foo:incommingroute")
.choice()
.when(header("MsgType").equals("Student"))
.to("webservice:Student")
.when(header("MsgType").equals("Employee"))
.to("webservice:Employee")
.otherwise()
.to("jms:Deadletter")
.end();
在Spring DSL,你會做這樣的事情(僞代碼)
<route>
<from uri="foo:incommingroute"/>
<choice>
<when>
<simple>${header.MsgType} equals 'Student'</simple>
<to uri="webservice:Student"/>
</when>
<when>
<simple>${header.MsgType} equals 'Employee'</simple>
<to uri="webservice:Employee"/>
</when>
<otherwise>
<to uri="jms:badOrders"/>
<stop/>
</otherwise>
</choice>
<to uri="jms:Deadletter"/>
</route>
您也可以看看在這個鏈接http://camel.apache.org/content-enricher.html豐富模式。基本上我建議遵循豐富的模式。如果你能告訴我你是怎麼給駱駝發送消息的,那麼我可能會幫助更多。
希望這給你一些想法,如果在代碼中有語法錯誤等,抱歉,我在公交車站,沒有時間檢查它。 。
只是一個想法的,爲什麼不傾頭的日誌組件,它將打印他們到碼頭。也許頭文件中有些東西可以幫助您確定如何區分它們。 – Namphibian 2012-04-11 05:44:10