Enterprise Library Step By Step系列(十四):创建基于消息队列(MSMQ)的异步日志

简介:
创建基于消息队列( MSMQ )的异步日志
一.概述
Enterprise Library Step By Step 系列里我们说过, 日志和检测应用程序块 主要由2部分组成:ClientDistributorClient负责创建消息,这些消息将由Distributor写入目标位置。 Client 根据分发策略(Distribution Strategies)发送消息到Distributor,在Application Block中提供了2个分发策略:In ProcessMSMQ,默认的是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系列里面写的一样了。
请大家参考:












本文转自lihuijun51CTO博客,原文链接: http://blog.51cto.com/terrylee/67616  ,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
4月前
|
消息中间件 测试技术 RocketMQ
消息队列 MQ产品使用合集之在异步发送消息函数sendMessage()中出现了错误,错误代码为-3,该如何解决
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
4月前
|
消息中间件 开发工具 RocketMQ
消息队列 MQ产品使用合集之如何关闭客户端的日志记录
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
5月前
|
Perl
CocoaLumberjack增强异步日志组件BITCocoaLumberjack的使用
CocoaLumberjack增强异步日志组件BITCocoaLumberjack的使用
55 1
|
9天前
|
消息中间件 C# 数据安全/隐私保护
手写MSMQ微软消息队列收发工具类
【10月更文挑战第16天】本示例展示了如何使用C#语言编写MSMQ(微软消息队列)的收发工具类,包括发送和接收消息的方法。通过检查队列是否存在并创建、使用`MessageQueue`类发送和接收消息。示例还提供了简单的调用方式,并提醒用户注意权限管理和异常处理。
|
2月前
|
XML 监控 Java
异步日志:性能优化的金钥匙
本文主要介绍了Log4j2框架的核心原理、实践应用以及一些实用的小Tips,力图揭示Log4j2这一强大日志记录工具在现代分布式服务架构运维中的关键作用。
|
2月前
|
Java 编译器 数据库
异步日志方案——spdlog
异步日志方案——spdlog
|
2月前
|
SQL JavaScript 前端开发
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题
|
3月前
|
消息中间件 存储 中间件
云原生异步问题之消息队列中的异步如何解决
云原生异步问题之消息队列中的异步如何解决
|
3月前
|
Java 测试技术
深入理解Logback异步日志配置及性能优化
深入理解Logback异步日志配置及性能优化
287 2
|
4月前
|
消息中间件 存储 中间件
中间件消息队列协议异步通信
【6月更文挑战第5天】
40 2