消息队列处理慢出现消息积压现象求解

一个平凡的IT农民工 2007-01-02 12:00:36
最近采用消息对列来对网站每条新闻的PV进行统计,具体解决办法如下:
每当用户访问某个asp.net网页上的某条新闻时就向消息队列发送这条新闻的ID,然后利用一个后台window服务异步处理消息队列中的消息,每接收一条,就对数据库中ID等于接收到的ID的新闻的PV值累加1,服务器采用window 2003数据库是sql server 2005!发现当某个时段用户同时浏览量大的时候,会出现消息处理缓慢的现象,很多消息堆积在消息队列中等候处理!消息队列没有设置大小限制!请问有没有高手有遇到过该问题,请指教解决办法!谢谢!
...全文
1293 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangfire 2007-01-02
  • 打赏
  • 举报
回复
消息队列处理缓慢,这首先是你的处理程序的问题,你的window服务处理效率如果够高的话,为什么会出现积压。
pele007 2007-01-02
  • 打赏
  • 举报
回复
这个问题我觉得没有什么太好的办法能解决,只能求一些折中的办法,例如把消息进行分类,放在不同的MQ中;另外,尽量采用Recieve而不采用peek方法,保证MQ中的消息尽可能的少。

如果新闻的ID不多时,也可以为每个ID设一个MQ,当用户访问某个ID时,只是向对应的MQ中发送一条空消息,这样就不用对每条message进行读解的判断了。

以上仅为参考:)
  • 打赏
  • 举报
回复
多谢各为高手指点,我的情况具体如下:
目前在数据库中保存了4万多条新闻,而且日后还会继续增加!因此不可能每条新闻一个队列
,另外新闻是有大小分类之分,某条新闻一定属于某个大类,以及该大类下的一个小类,我发送的消息的结构是这样的组成的 
新闻ID+“|”+新闻小类ID+“|”+新闻大类ID
当window服务接收到后,就利用一个正则表达式根据消息中的竖线来将消息中的ID分开,而后调用数据库的一个存储过程,将这3个ID作为参数,新闻ID用于更新单条新闻的PV,新闻小分类ID用于更新该小类的总PV,新闻大类ID用于更新该大类的总PV!请高手指教究竟问题的所在!谢谢!
  • 打赏
  • 举报
回复
多谢各为高手指点,我的情况具体如下:
目前在数据库中保存了4万多条新闻,而且日后还会继续增加!因此不可能每条新闻一个队列
,另外新闻是有大小分类之分,某条新闻一定属于某个大类,以及该大类下的一个小类,我发送的消息的结构是这样的组成的 
新闻ID+“|”+新闻小类ID+“|”+新闻大类ID
当window服务接收到后,就利用一个正则表达式根据消息中的竖线来将消息中的ID分开,而后调用数据库的一个存储过程,将这3个ID作为参数,新闻ID用于更新单条新闻的PV,新闻小分类ID用于更新该小类的总PV,新闻大类ID用于更新该大类的总PV!请高手指教究竟问题的所在!谢谢!
  • 打赏
  • 举报
回复
多谢各为高手指点,我的情况具体如下:
目前在数据库中保存了4万多条新闻,而且日后还会继续增加!因此不可能每条新闻一个队列
,另外新闻是有大小分类之分,某条新闻一定属于某个大类,以及该大类下的一个小类,我发送的消息的结构是这样的组成的 
新闻ID+“|”+新闻小类ID+“|”+新闻大类ID
当window服务接收到后,就利用一个正则表达式根据消息中的竖线来将消息中的ID分开,而后调用数据库的一个存储过程,将这3个ID作为参数,新闻ID用于更新单条新闻的PV,新闻小分类ID用于更新该小类的总PV,新闻大类ID用于更新该大类的总PV!请高手指教究竟问题的所在!谢谢!

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧