0
我們正在使用Apache Camel集成平臺,並通過restlets更新一些數據。我們想知道此更新的狀態,因爲它需要幾個小時才能完成。我們遇到的問題是,在程序結束之前,我們沒有收到程序的迴應。由於載體類型是restlet類型,所以我們必須等到作業完成,因爲瀏覽器正在等待它完成。我們已經研究了異步方式來做到這一點,但它似乎並不支持restlet數據載體。Restlet在Apache Camel中沒有鎖定瀏覽器直到完成
如果我們沒有得到任何解決方案,我們已經考慮使用線程池來運行這個工作,但是我們想知道它是否是其他方法來執行作業異步,因爲我們可能會稍後更廣泛地使用駱駝restlet並讓作業去async最好不要每次都執行線程。
示例代碼:
from("restlet:" +BASE_URL + "test1?restletMethods=get").
routeId("Test 1").
log(LoggingLevel.INFO, log.getName(), "Test 1 Started").
delay(10000).
log(LoggingLevel.INFO, log.getName(), "Test 1 Complete").
to("mock:update");
如從瀏覽器上面的代碼等待10秒它響應之前。我們希望瀏覽器立即可用,並在此期間獲取數據。
我不知道我理解。您的代碼會在路線中添加延遲,但您還希望路線立即可用? –
這是一個正在完成的工作的模擬,然後當工作正在運行時,我想在運行時獲得該工作的狀態。因爲它現在在一個更大的項目中,我們無法獲得數據,直到工作完成。我們已經注意到駱駝將restlet調用放在隊列中,並按順序執行 – Tor
當然,最好創建一個後端服務的模擬,然後添加一個延遲?你可以簡單地創建一個seda隊列到一些路由,它所做的就是返回你想要的任何消息。 Seda工作異步,並應在GET後將控制權返回給瀏覽器。 –