我正在尋找一個接受作業請求,然後將這些請求發送到另一個web服務(第三方服務讓我們稱之爲B)的Java實現Web服務(讓我們稱之爲A)。沒有什麼複雜的。從B到A的響應是同步的(返回作業ID),然後當作業完成時,B向A發送異步消息,通知作業已完成(作業到B可能需要X時間)。 B一次只能接受20個工作,但A應該能夠接受來自多個客戶的儘可能多的工作。所以A需要一個排隊系統,以便只發送B不超過20個工作。當B完成工作並通知A時,則A可以將另一項工作發送給B.使用web服務排隊作業的框架
我可以在狀態爲NEW的數據庫中保存進入A的工作,然後每5分鐘運行一次流程,收集新的工作,如果<由B發送作業處理的20個作業。由B處理的作業將具有狀態PROCESSING,然後當B將作業完成發送給A時,它將狀態設置爲DONE。只是
我可以使用JMS或像駱駝這樣的路由引擎來做到這一點,或者任何人都可以提供另一個框架來幫助。我一直無法找到維護隊列的任何內容,只能發送最多X個作業。 A隊列可能有數百個等待處理的作業,但只有在完成另一個作業時纔會向B發送另一個作業。
持久性可能需要查看處理後的作業歷史記錄,如果服務器關閉,它需要恢復先前排隊的任何作業,這就是爲什麼我認爲JMS將是最佳選擇。我可能需要能夠從隊列中刪除作業(取消未處理的作業)。我會嘗試你的建議 – monty