1
我想提出繼續在路由的行爲,我的路線是像下面繼續在駱駝航線執行行爲
from("file:D:\\?fileName=abc.csv&noop=true").split().unmarshal().csv()
.to("direct:insertToDb").end();
from("direct:insertToDb")
.to("direct:getDataId")
.to("direct:getDataParameters")
.to("direct:insertDataInDb");
from("direct:getDataId")
.to("sql:SELECT id FROM data WHERE name = :#name)
.choice()
.when(header("id").isGreaterThan(0))
.setProperty("id", header("id"))
.otherwise()
.log("Error for")
.endChoice().end();
我想,如果直接:getDataId不找到任何記錄,我的路線的執行從當前記錄CSV跳過並編程處理下一個請求。這將等於繼續關鍵字。
我如何在Apache Camel路由中實現這一點?
如果假設直接:getDataParameters沒得到數據,然後我不得不把一個條件。 – ImranRazaKhan
您只需根據SQL查詢結果的條件跳過其他兩個路由。而且你必須修改你的「direct:getDataId」路由,把查詢結果放到標題中。你可以使用「outputHeader」選項(camel.apache.org/sql-component.html)。這允許保留現有的消息正文(來自csv)。我編輯了我的例子,請再看一遍。 –