2013-01-01 73 views
0

我有兩個啓動腳本來運行獨立應用程序。獨立的Spring + Java + JMS

  1. startQueue.sh用於偵聽JMS消息並將消息存儲到Oracle數據庫表中。
  2. startProcess.sh - 獲取表信息並處理數據並從數據庫中刪除信息並終止。

我的問題是,何時將JMS消息插入到DB中,然後使用定時器自動觸發並處理表信息。

+0

您要麼觸發(當插入消息時)或使用計時器,你會如何使用兩者? –

+2

我在這裏沒有看到問題? – eis

回答

0

您可以不斷運行第二個應用程序,輪詢數據庫,但我認爲更好的設計是一步完成所有操作 - 接收JMS消息,插入它(如果需要),然後處理它全部在一個應用程序中。

+0

你是對的,灰色。但問題是,在處理數據時,如果出現任何問題,我們不希望從數據庫中刪除數據。我們再次需要獲取並處理數據,直至成功。一旦數據庫沒有任何數據,我們將終止。這個過程會在有數據的數據庫時自動觸發。您能否指導我遵循哪個流程。 – user1941080

+0

閱讀此內容 - http://mikehadlow.blogspot.com/2012/04/database-as-queue-anti-pattern.html然後,如果您仍覺得必須將數據庫用作工作隊列,則唯一的選擇是將會有一個外部進程持續查詢數據庫,看看是否有任何需要處理的東西。 – GreyBeardedGeek

+0

@ user1941080這種情況正在尖叫事務管理。根據消息隊列的功能,您應該能夠刪除消息並在同一個事務中在數據庫中處理消息。如果處理失敗,你可以隨後把消息放入一個死信息隊列中? – flup