1.这是处理异常的类

  1. public class MyExceptionAttribute:HandleErrorAttribute
  2. {
  3. //public static Queue<Exception> ExceptionQueue = new Queue<Exception>();
  4. //项目中使用下面方式创建redisclient
  5. public static IRedisClientsManager clientManager = new PooledRedisClientManager(new string[] { "127.0.0.1:6379" });
  6. public static IRedisClient redisClient = clientManager.GetClient();
  7. /// <summary>
  8. /// 捕获异常
  9. /// </summary>
  10. /// <param name="filterContext"></param>
  11. public override void OnException(ExceptionContext filterContext)
  12. {
  13. base.OnException(filterContext);
  14. Exception ex = filterContext.Exception;
  15. //写到队列
  16. //ExceptionQueue.Enqueue(ex);
  17. redisClient.EnqueueItemOnList("errorQueue", ex.ToString());
  18. //跳转到错误页面.
  19. filterContext.HttpContext.Response.Redirect("/Error.html");
  20. }
  21. }

2.Global文件中配置

  1. public class MvcApplication : SpringMvcApplication //System.Web.HttpApplication
  2. {
  3. protected void Application_Start()
  4. {
  5. log4net.Config.XmlConfigurator.Configure();//读取了配置文件中关于Log4Net配置信息.
  6. AreaRegistration.RegisterAllAreas();
  7.  
  8. FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
  9. RouteConfig.RegisterRoutes(RouteTable.Routes);
  10. //开启一个线程,扫描异常信息队列。
  11. string filePath = Server.MapPath("/Log/");
  12. ThreadPool.QueueUserWorkItem((a) => {
  13. while (true)
  14. {
  15. //判断一下队列中是否有数据
  16. //if (MyExceptionAttribute.ExceptionQueue.Count() > 0)
  17. )
  18. {
  19. string errorMsg =
  20. MyExceptionAttribute.redisClient.DequeueItemFromList("errorQueue");
  21. {
  22. //Exception ex = MyExceptionAttribute.ExceptionQueue.Dequeue();
  23. if (!string.IsNullOrEmpty(errorMsg))
  24. {
  25. //将异常信息写到日志文件中。
  26. //string fileName = DateTime.Now.ToString("yyyy-MM-dd");
  27. //File.AppendAllText(filePath+fileName+".txt",ex.ToString(),System.Text.Encoding.UTF8);
  28. ILog logger = LogManager.GetLogger("errorMsg");
  29. logger.Error(errorMsg);
  30. }
  31. else
  32. {
  33. //如果队列中没有数据,休息
  34. Thread.Sleep();
  35. }
  36. }
  37. }
  38. else
  39. {
  40. //如果队列中没有数据,休息
  41. Thread.Sleep();
  42. }
  43. }
  44.  
  45. },filePath);
  46.  
  47. }
  48. }

3.不要忘记使用Redis需要的3个dll文件

使用Redis分布式队列的更多相关文章

  1. Redis分布式队列解决文件并发的问题

    1.首先将捕获的异常写到Redis的队列中 public class MyExceptionAttribute : HandleErrorAttribute { public static IRedi ...

  2. Redis分布式队列和缓存更新

    原文链接:https://www.cnblogs.com/hua66/p/9600085.html 在使用Redis中,我们可能会遇到以下场景: 例如: 某用户向服务器中发送一个请求,服务器将用户请求 ...

  3. 分布式日志2 用redis的队列写日志

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  4. redis分布式锁和消息队列

    最近博主在看redis的时候发现了两种redis使用方式,与之前redis作为缓存不同,利用的是redis可设置key的有效时间和redis的BRPOP命令. 分布式锁 由于目前一些编程语言,如PHP ...

  5. JavaWeb项目架构之Redis分布式日志队列

    架构.分布式.日志队列,标题自己都看着唬人,其实就是一个日志收集的功能,只不过中间加了一个Redis做消息队列罢了. 前言 为什么需要消息队列? 当系统中出现"生产"和" ...

  6. java-spring基于redis单机版(redisTemplate)实现的分布式锁+redis消息队列,可用于秒杀,定时器,高并发,抢购

    此教程不涉及整合spring整合redis,可另行查阅资料教程. 代码: RedisLock package com.cashloan.analytics.utils; import org.slf4 ...

  7. 基于redis分布式缓存实现

    Redis的复制功能是完全建立在之前我们讨论过的基 于内存快照的持久化策略基础上的,也就是说无论你的持久化策略选择的是什么,只要用到了Redis的复制功能,就一定会有内存快照发生,那么首先要注意你 的 ...

  8. Redis分布式

    昨天公司技术大牛做了一个Redis分布式的技术分享: Redis分布式资源: http://redis.io/topics/cluster-tutorialhttp://redis.io/topics ...

  9. Spring-data-redis: 分布式队列

    Redis中list数据结构,具有"双端队列"的特性,同时redis具有持久数据的能力,因此redis实现分布式队列是非常安全可靠的.它类似于JMS中的"Queue&qu ...

随机推荐

  1. node.js不得不说的12点内容

    1.node.js,服务器端的javascript,它允许在后端(脱离浏览器环境)运行javascript代码. 2.事件驱动.异步式I/O的编程模式(单线程)是其核心. 3.node.js的java ...

  2. Spring 整合 Redis(二)

    pom构建: <modelVersion>4.0.0</modelVersion> <groupId>com.x.redis</groupId> < ...

  3. Mysql bench执行sql语句批量操作数据所遇到的问题

    一.错误 rror Code: 1175. You are using safe update mode and you tried to update a table without a WHERE ...

  4. Linux_sudo权限

    一.sudo权限(只能由管理员操作) 1. 操作对象 --> 命令(命令也是文件) 2. 命令存放路径/sbin与/bin --> 只由root管理员用户操作 3. 实际工作中,是不允许你 ...

  5. zk 获取session,request,servletContext,response

    (参考:http://www.dotblogs.com.tw/rockywang/archive/2010/01/13/12995.aspx) HttpServletRequest request = ...

  6. 利用HTML5的一个重要特性 —— DeviceOrientation来实现手机网站上的摇一摇功能

      介绍之前做两个声明: 以下代码可以直接运行,当然你别忘了引用jQuery才行. <script> // DeviceOrientation将底层的方向传感器和运动传感器进行了高级封装, ...

  7. Golden Gate 概念和机制

    1. OGG有哪些进程 ü  Manger : manger进程是goldengate的控制进程,分别运行在源端和目标端上,它主要的作用是启动.监控.重启goldengate的其他进程,报告错误及事件 ...

  8. hadoop-1.2.1安装配置

    1.准备三台节点 hnd1  hnd2  hnd3 下载 hadoop 下载地址:http://apache.fayea.com/hadoop/common/ API文档:http://hadoop. ...

  9. Vue 双向数据绑定原理分析 以及 Object.defineproperty语法

    第三方精简版实现 https://github.com/luobotang/simply-vue Object.defineProperty 学习,打开控制台分别输入以下内容调试结果 userInfo ...

  10. Java Web(转)

    struts2+spring+hibernate 上传文件 关 键字: s2sh 上传文件 struts2 spring hibernate 前段时间,我用struts2.1.6.spring2.5. ...