Enterprise Library Step By Step系列(十四):創建基於消息隊列(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 Service1.打開Visual Studio命令行工具,切換到目錄(默認的企業庫安裝路徑)C:\Program Files\Microsoft Enterprise Library\bin下,運行如下命令:
installutil/iMsmqDistributor.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系列裡面寫的一樣了。