当系统流量负载比较高时,业务日志的写入操作也要纳入系统性能考量之内,如若搞笑游戏名字处理不当,将影响系统的正常业务操作,之前写过一篇《spring boot通过mq消费log4j2的日志》的博文,采用了rab书籍参考文献格式bitmq消息中间件来存储抗高并发下的日志,因为引入了中间件,操作使用起来可能没那么简便,今天分享使用多线程消费阻塞队列的方式来处理我们的海量日志
阻塞队列(blockingqueue)是区别于普通队列多了两个附加操作的线程安全的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放世间的盐元素的容器,而消费者也只从容器里拿元素。
ps:因为业务原因,采用add的方式入队,队列满了就抛异常,不阻塞
learn的过去分词消息入队可以在任何需要保存日志的地方操作,如aop统一拦截日志处理,filter过滤请求日志处理,或者耦合的业务日志,记住,不阻塞入队操作,不然将影响正常的业务操作,如下为filter统一处理请求日志:
blockingqueue是线程安全的,所以可以放心的在多个线程中去处理队列中的消息,如下代码声明了一个两个大小的固定线程池,并添加了两个线程去处理队列中的消息
参考博文如下,对blockingqueue队列更多了解,可读一读如下的博文:
详细分析java并发集合arrayblockingqueue的用法
详解java阻塞队列(blockingqueue)的实现原理
java并发之blockingqueue的使用
以上就是blockingqueue队电脑用手机上网列处理高并发下的日志的详细内容,更多关于blockingqueue队列处理高并发日志的资料请关注www.887551.com其它相关文章!
本文发布于:2023-04-06 02:06:24,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/8d8244e89f43214ed1c79338a2126df8.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:BlockingQueue队列处理高并发下的日志.doc
本文 PDF 下载地址:BlockingQueue队列处理高并发下的日志.pdf
| 留言与评论(共有 0 条评论) |