我正在從我讀MSMQ像這樣(簡化爲簡潔起見):多線程MSMQ聽
然而,這只是讓我來處理串行消息。如何修改此代碼以允許並行消息處理?
我知道我可以將this.queue.BeginReceive();
從finally
中移出並置入ReceiveCompleted
的頂部,但是如何阻止產生儘可能多的線程,並且我有消息?我如何明智地控制並行性的水平,所以我不淹沒線程池?是否有一些內置的機制,或者我必須寫自己的經理?
編輯:我的目標是更快地處理消息。消息的處理涉及到第三方的異步調用,所以目前我的實現浪費了大量的時間來通過隊列。
感謝
我希望這是這種情況,這將保證消息只處理一次?或者有兩個聽衆有可能收到相同的信息? –
我應該添加的是,您只能通過使用事務隊列來保證。我無法在文檔中找到它,但是我之前已經設置了此擴展機制,並且WCF與msmq的集成提供了一次只能調用一次的屬性,這意味着這是msmq的一項功能。 –
我的隊列是事務性的,有什麼特別的我需要做,或者應該只是工作(tm)? –