Enterprise Library Step By Step系列(十四):創建基于消息隊列(MSMQ)的異步日志
創建基于消息隊列(MSMQ)的異步日志
一.概述
在Enterprise Library Step By Step系列里我們說過,日志和檢測應用程序塊主要由2部分組成:Client和Distributor。Client負責創建消息,這些消息將由Distributor寫入目標位置。Client根據分發策略(Distribution Strategies)發送消息到Distributor,在Application Block中提供了2個分發策略:In Process和MSMQ,默認的是In Process策略。同步日志是在Client進程中完成的,而異步日志是利用了MSMQ來實現的,Client需要創建日志消息并發送到MSMQ消息隊列。另外一個進程則等待到達的消息,并寫入合適的日志接收池
應用程序塊中包含一個Windows Service: MSMQ Distributor Service。當安裝該服務后,該服務會在指定的時間間隔檢測消息隊列。
我們看一下日志和監測應用程序塊處理的流程圖:

二.安裝并配置MSMQ Distributor Service
1.打開Visual Studio命令行工具,切換到目錄(默認的企業庫安裝路徑)C:\Program Files\Microsoft Enterprise Library\bin下,運行如下命令:
installutil /i MsmqDistributor.exe注意:必須要以這種方式安裝服務,否則安裝不成功。
2.安裝過程中會彈出一個設置服務登錄對話框,要求輸入用戶名和密碼。此時用戶名和密碼的形式必須以域用戶的形式輸入,用<.\username>的形式也是可以的,如下圖所示:
3.啟動服務。我們在服務管理器里面找到Enterprise Library Logging Distributor Service這項服務,手工啟動它。
4.用文本編輯器打開MsmqDistributor.exe.config文件,刪除如下這節:
<configurationSections>
<configurationSection name="loggingConfiguration" encrypt="false">
<storageProvider xsi:type="XmlFileStorageProviderData" name="XML File Storage Provider" path="loggingConfiguration.config" />
<dataTransformer xsi:type="XmlSerializerTransformerData" name="Xml Serializer Transformer">
<includeTypes />
</dataTransformer>
</configurationSection>5.用Configuration Console, 打開 MsmqDistributor.exe.config 文件
將 MSMQ Distributor Service 添加到 Distributor Settings,如下圖所示:
6.設定 MsmqPath 屬性匹配 Client 的隊列名,我們可以修改MsmqPath的值,但是該值必須與我們應用程序中的Client配置的一致。
三.使用MSMQ創建異步日志
1.我們前面說過,Client Settings 決定分發策略,一個Client的所有消息使用同一個策略。所以我們不能同時創建兩個策略,必須先刪除In Process后,才能創建MSMQ:
2.創建MSMQ分發策略之后,注意隊列名必須和我們剛才在第二節里面所說的一致:
3.其他的操作就跟我在Enterprise Library Step By Step系列里面寫的一樣了。
請大家參考:
Worktile,新一代簡單好用、體驗極致的團隊協同、項目管理工具,讓你和你的團隊隨時隨地一起工作。完全免費,現在就去了解一下吧。
https://worktile.com

浙公網安備 33010602011771號