WebService服务中,将写原始报文日志的功能由单独线程处理

原创 2016年05月30日 21:08:17

在WebService项目中,Web容器对每个请求,创建一个独立的线程进行处理和响应。但是最近发现业务响应速度变慢,主要怀疑对象是I/O和网络socket操作占用时间长,I/O这一块儿主要是发送/接收报文时需要存储原始报文,便于查错和日后比对数据,比较明显跟主业务处理无关,于是首当其冲将其剥离除去。数据库操作是通过平台的xmlrpc请求完成的,优化复杂些,放到后面跟进。


这个问题可以归结为producer-consumer问题,业务线程是producer,不断产生需要写日志的原始报文信息,而写日志线程是consumer,有内容达到就取出进行写文件操作。

于是创建了一个实体,用于描述原始报文日志信息,选择了线程安全队列中的LinkedBlockingQueue用于线程之间消息传递。同时通过实现Runnable接口,在实现类的run() 方法中实现了业务处理逻辑,在线程池中中启动线程任务即可。


版权声明:本文为博主原创文章,未经博主允许不得转载。

Android 单独开启线程处理服务器数据提交和访问

package com.boonya.wtms.activities; import java.io.Serializable; import java.util.List; import com....
  • boonya
  • boonya
  • 2014年11月15日 23:23
  • 4133

Intellij插件开发:MonkeyMaster插件的实现(三)——写入日志的线程处理

【转载请注明出处】 笔者:DrkCore (http://blog.csdn.net/DrkCore) 原文链接:(http://blog.csdn.net/drkcore/article/det...
  • DrkCore
  • DrkCore
  • 2017年02月23日 20:40
  • 427

Broadcast Receiver开启服务而不是子线程处理耗时操作

Broadcast Receiver用于接收并处理广播通知(broadcast announcements)。多数的广播是系统发起的,如地域变换、电量不足、来电来信等。程序也可以播放一个广播。程序可以...

Broadcast Receiver开启服务而不是子线程处理耗时操作

转自:http://blog.csdn.net/cquwentao/article/details/27419217 Broadcast Receiver用于接收并处理广播通知(broadc...

MFC线程处理概述.doc

  • 2010年03月09日 18:55
  • 13KB
  • 下载

基于任务线程处理例子

  • 2014年11月10日 16:00
  • 2KB
  • 下载

【FastDev4Android框架开发】AndroidAnnnotations注入框架使用之线程处理Threading(十二)

(一).前言:           前面我们已经对于AndroidAnnotations框架的事件绑定做了讲解,今天我们开始具体学习一下线程处理(Threading)方法。       已更新如下: ...

工作线程处理后台范例

  • 2011年08月31日 11:47
  • 27KB
  • 下载

Java线程处理

  • 2012年03月14日 02:29
  • 281KB
  • 下载

python的线程处理模块——thread,threading

Python 标准库提供了 thread 和 threading 两个模块来对多线程进行支持。其中, thread 模块以低级、原始的方式来处理和控制线程,而 threading 模块通过对 thre...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WebService服务中,将写原始报文日志的功能由单独线程处理
举报原因:
原因补充:

(最多只允许输入30个字)