Spring中的异步记录器

时间:2012-04-11 07:55:45

标签: spring

我有这个问题,我只是把它扔出去。我正在为基于Spring的REST API服务器实现一个小的日志记录功能,用于记录所有请求。 我希望有1000个用户使用这个API,因此使用阻塞的i / o记录器,它会减慢一切。我有两种方法来解决这个问题: 1.使用内存中的arrylist建立异步记录器。然后使用spring scheduler定期将其刷新到日志文件中。 2.使用JMS并将日志发送到队列。让队列异步处理日志记录。

有人在春天之前做过这个吗。虽然我是选项2,有没有更好的方法来做到这一点?需要一些专家建议。谢谢大家!

更多信息 - 我认为同步日志记录将成为一个瓶颈因为这个REST API被前端RoR应用程序使用。因此,用户的一个会话肯定会导致100次API调用频繁发生。我正在记录实际请求以及POST中发送的JSON。

2 个答案:

答案 0 :(得分:3)

  

有人在春天之前做过这个吗。

不是很奇怪,是的 - Asynchronous Logging Using Spring

文章提到如果你不想丢失任何日志事件,那么JMS将是最佳选择 - 否则坚持Asy​​nc对于高容量日志记录是有意义的。

答案 1 :(得分:0)

如果您真的想构建自己的记录器,我建议您查看akka,它比JMS设置要容易得多。

您可以在本地使用它(使用本地计算机的所有CPU核心),甚至可以使用远程代理。