2013-05-20 47 views
0

我想使用MongoDB实现点击计数器(例如,用户点击一个链接,统计总点击次数)。使用MongoDB点击计数器实现 - 异步写入

我的直观方法是拥有一个内存中的低优先级线程池,该线程池将处理阻塞的单击消息队列,并在后台异步地将其持久保存到MongoDB中。

所以我的问题是 - 是否MongoDB的本地Java驱动程序有一些异步功能,做到这一点?

如果没有,是否有一个替代的Mongo驱动程序可能比滚动我自己的异步代码有好处?

回答

1

好吧,不是真正的异步,但如果你使用一个NONE的WriteConcern它是一种异步的,因为你只有数据进入套接字的缓冲区和插入返回。不利的一面是你不知道插入是否有效。面对失败,你可以默默地放弃很多点击。

有一个Asynchronous Java Driver,允许您使用期货或回调来获得插入的结果。采用这种方法应该不需要推出自己的队列或者拥有后台线程(驱动程序拥有自己的接收线程)。

HTH - Rob。

P.S.充分披露 - 我从事异步Java驱动程序。