2010-11-30 60 views
3

我設計了一個基於演員模型模式的應用程序,利用Spring應用程序上下文事件作爲傳遞消息的方式。 我有三個層次:演員模型模式:併發運行演員的數量限制

  1. 發出requesttransactionevent
  2. 問題dotransactionevent < - 應限制目前一些事務運行的
  3. 問題donetransactionevent

層1保存請求數據庫(用於分佈式拱形監視要求)並且發佈客戶請求層2接收它並且應該檢查它已經運行多少個點事務事件(發佈而不是返回donetransaction)如果我t有一個空閒插槽,它應該發出一個dotransaction,並且它也被聲明爲donetransaction事件的偵聽器。

什麼是最優雅的方式來實現層2沒有同步方法或類似的東西,這裏的訣竅是,它需要將layer1保存的請求參數拉到發出dotransaction事件的數據庫。

回答

0

您可以將dotransaction事件的集合看作一個隊列,並有一組併發的隊列處理程序,每個處理程序每​​次從隊列中處理一個項目。正如您所描述的,通過控制隊列處理程序的數量,您可以控制正在運行的事務的數量。

+0

嗨,如果layer2將持有一組處理程序,這將緊密耦合最後兩層,我寧願避免這種情況,因爲第3層的創建目的是爲了提供更大的靈活性。 – Amnon 2011-01-22 15:15:35