首页 新闻 会员 周边

实时消息存储之异步方法

0
悬赏园豆:15 [已解决问题] 解决于 2015-10-16 13:37

这样一个需求:

有一个队列,通过消息机制不断往其中添加数据。队列中的数据需要实时存储到数据库中。

存储到数据库耗时较长。

有什么样的方案可以解决这样的问题。

不想通过定时器之类去扫描这个队列。

lucika.zh的主页 lucika.zh | 初学一级 | 园豆:62
提问于:2013-12-04 09:08
< >
分享
最佳答案
1

如果你这个队列是 MSMQ 的话,就比较好办,这样 MSMQ 不需要你通过定时器去扫描。

如果是你自己实现的队列的话,就比较困难,如果不想通过定时器去扫描,那么你就需要自己实现回调机制,即插入队列的时候,检查回调是否已经触发,如果是则追加到队尾,然后返回,如果不是,则追加到队尾后还要触发一次回调。回调函数在执行时要不停的检查队列是否有消息,有则处理,没有则退出当前执行线程。

再来说从队列取到消息后,如果快速更新的问题,记住一定要用异步I/O方式,如果你使用的是 ADO.NET 的话,那么请使用 SqlCommand.BeginExecute 方式执行插入。如果不是的话,你应该尽量找到你的数据库客户端组件的异步I/O方法来执行插入,如果实在没有,则可以通过线程来模拟异步操作,但是要注意控制插入线程的数量。

收获园豆:15
Launcher | 高人七级 |园豆:45045 | 2013-12-04 09:36

谢谢!

lucika.zh | 园豆:62 (初学一级) | 2013-12-04 15:34
其他回答(1)
0

最担心的问题是这个队列中的数据会不会得到及时的处理,要不然这个队列越来越大

chenping2008 | 园豆:9836 (大侠五级) | 2013-12-04 13:47

怎么能做到实时同步?

支持(0) 反对(0) lucika.zh | 园豆:62 (初学一级) | 2013-12-04 15:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册