2011-12-01 70 views
0

我有一個設計問題,並希望有建議。動態調度消息設計諮詢

我使用的Weblogic 11g中,EJB3.0

我有一個系統,它的目標檢索和發送信息,以夫妻資源(數據庫)的。

每個消息包含信息和目標數據庫密鑰。

因此,這裏是一個流程示例:

我從網絡服務中獲得的消息和主要目標。我解析消息並通過關鍵目標將其發送到正確的數據庫。

有一種可能性,即消息將包含一個以上的目標數據庫(例如鍵「所有」的意思是我應該發往所有數據庫。

如果插入在資源的一個失敗回滾會發生,我重新嘗試將重新執行整個操作

所以現在這是我的問題:

我應該讓(隊列爲我的資源的數量的數量和專用?每個隊列到特定資源)

(在這種情況下,我分析每個消息,只是將其發送到正確的隊列中,而一個MDB會聽和做插入到正確的數據庫)

如果我那樣做,我將無法使其動態,含義每次需要在未來中添加/刪除新資源我需要打開代碼並做出正確的更改。

你想要什麼?我怎樣才能更好地實施它?

感謝您的幫助 ray。

回答

0

我認爲使用每個目標資源(數據庫)的隊列是好的。而且,只要從配置文件驅動它們,您就不需要更改代碼以添加和刪除這些端點。您的調度員應該有一個配置,列出每個「目標數據庫密鑰」的目標隊列。讀取的進程/組件監視端點隊列同樣需要配置,如db連接字符串或其他。

現在,添加一個新的資源類型,這將需要您修改您的代碼。但這是可以預料的。

+0

所以你基本上說,一個配置文件將列出我使用的所有隊列?你談論的XML /文本文件?有時我需要在配置隊列屬性時設置不同的註釋。不確定它可以動態寫入。 – rayman

+0

如果你真的不能使用配置,因爲配置和寫入隊列的代碼是完全唯一的(你能檢測到我的疑問:)),那麼我會將該代碼推入QueueConfigurator類(或者更確切的說是子類),它可以加載動態地,加載配置器所需的信息應該保存在配置文件中。這樣你就可以放棄新的隊列支持而不需要重新編譯基礎。 – tcarvin

+0

我幫你。還有一件事。我明白,我不能完全避免「觸摸」代碼,因爲將來當新的目標數據庫密鑰將被添加時,我需要實現不同的插入和邏輯到新的數據庫要求的代碼。您如何建議我有效地設計代碼,以便添加新的「隊列隧道」會很舒服。以可插拔的方式。謝謝。 – rayman