我正在用Java實現RESTfull Web服務,即使系統崩潰,它也應該以可靠的方式計算每個調用。發生潛在故障後,系統應能夠查找系統崩潰時打開的所有作業,並繼續進行系統崩潰時的計算。最好的方法來保存可調用的REST調用,以保證可靠的句柄系統故障
實現該任務的最佳方式是什麼? JMS是否是正確的方向?
我正在用Java實現RESTfull Web服務,即使系統崩潰,它也應該以可靠的方式計算每個調用。發生潛在故障後,系統應能夠查找系統崩潰時打開的所有作業,並繼續進行系統崩潰時的計算。最好的方法來保存可調用的REST調用,以保證可靠的句柄系統故障
實現該任務的最佳方式是什麼? JMS是否是正確的方向?
您可以嘗試使用RestEasy。
在RestEasy中,您可以在執行REST調用之前和之後綁定處理程序。
您可以在REST處理程序上存儲REST調用並在完成後確認執行。
如果REST沒有執行......它可以重試,或者重複動作。
的代碼會是這個樣子(REQUEST):
@Provider
public class RestInterceptor implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext context) {
(RESPONSE)
@Provider
public class EventFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext containerRequestContext, ContainerResponseContext containerResponseContext) throws IOException {
的問題是爲什麼?
REST調用應該是在30秒內執行的簡單原子任務。 加上他們應該(如果可能)冪等。
如果你想用REST調用來觸發和監控長時間運行的任務,那麼這是一條路。但是作業本身應該在其他層面(而不是HTTP堆棧)上分離和監視。
你能告訴我們更多關於工作的信息嗎? – mkrakhin 2014-12-09 12:54:04
JMS將成爲進行RESTful調用的替代品 - 它是一種不同的進程間通信方法。那不是你所追求的。可能是因爲JMS支持用於故障恢復的消息持久性 - 這就是您實際上在做的事情;在RESTful環境中做類似的事情。正確? – Gimby 2014-12-09 12:57:13
RESTful服務使用HTTP作爲通信協議。這是一個無國籍的協議:沒有*開放工作的概念*。你的問題沒有意義。 – Raedwald 2014-12-09 13:08:01