2013-12-12 59 views
1

如果任何人可以提出一個很棒的建議,我需要一些設計建議。MSMQ,從單個窗口服務讀取多個隊列消息

我實現了一個WCF服務,它從windows服務器上的隊列(MSMQ)讀取消息並進一步處理它。現在我需要從另一個隊列中讀取消息並單獨處理它們。我很困惑要使用新服務或者更新現有的服務,它可以同時處理來自不同隊列的兩個讀數。

我在考慮表現這是最好的選擇去的interms?

回答

2

您應該能夠爲每個消費者創建一個單獨的線程。下面是僞代碼。您需要確保的唯一事情是在服務關閉時向線程發出停止信號。

new Thread(WorkerA) { IsBackground = true }.Start(); 
new Thread(WorkerB) { IsBackground = true }.Start(); 

void WorkerA() { 
    while (true) { /* process queue a */ } 
} 

void WorkerB() { 
    while (true) { /* process queue b */ } 
} 

談論1個服務vs 2個服務時,性能應該是等價的,因爲它仍然是一個正在被操作系統調度的線程。至於穩定性,在分離服務時可能會更有彈性,但這仍然不應該是太多問題,我希望單個服務方法在每個線程內應該足夠穩定。

最後我只是去尋找最簡單的方法。