基于Enterprise Library和MSMQ的异步日志处理
用了Enterprise Library的一些组件之后,还是觉得它的异步日志处理最好用,记录一下:
应用开发中总会有日志,错误和异常,对于它们的处理一般都是在业务代码中嵌入,这样的处理对于主业务处理的性能损失一般不大。试想一下,如果需要把它们记录到N个地方,这时候最好能使用异步方式去处理。Enterprise Library里的MSMQDistributor可以很好的帮助我们完成这个工作,你需要做的是把要记录的消息写入MSMQ,然后继续业务的处理。MSMQ是Window的标准组件,稳定性高,使用也很简单,不会罢工(相对于我们的应用)。但是记住不要往MSMQ里面写入超过4M的消息,否则它不接受。MSMQDistributor对应的服务察觉MSMQ有待处理的消息之后,就会通过你指定的规则来处理-写入不同的目的地,比如数据库,文件,邮件等等,也可以写入自定义的目的地,这种规则微软称之为sink。有一点需要注意,如果你要把消息通过邮件发出去,要注意一旦服务器出了意外导致MSMQDistributor对应的服务停止,重启服务之前修改一下消息处理规则,否则会给收件人发送大量的过期邮件,严重的会阻塞正常的邮件发送和接收。具体的方法以后再细述,现在网上也有很多资料,搜索一下就可以找到。