首页 新闻 会员 周边

请问高手如何实现ASP.NET队列监听??

0
悬赏园豆:100 [待解决问题]

就是想用ASP.NET写一个永久运行的线程用于监听一个队列,比如用于处理微信上的消息,一旦队列有内容则将其取出并进行相应的处理。我有在global.asax中创建一个线程来跑,但是CPU会占用很高(很简单的处理逻辑),后面改成使用定时器,好很多但是会时不时的自动重启一样还是很不稳定。求哪位高手能指点一下。希望能说得详细一点,急需,谢谢。

elilee的主页 elilee | 初学一级 | 园豆:6
提问于:2015-03-13 20:46
< >
分享
所有回答(6)
0

这种情况下,Windows Service应该是不二选择吧。

爱编程的大叔 | 园豆:30839 (高人七级) | 2015-03-13 23:13
0

最好不要在网站上面写这个功能,你直接写个小程序让他一直跑着就行了,还不会影响网站的性能

刘宏玺 | 园豆:14020 (专家六级) | 2015-03-13 23:57
0

微信不是会调用你的api么?还需要单独监听么?

幻天芒 | 园豆:37175 (高人七级) | 2015-03-14 08:40

有一些比较耗时的操作我要让他异步处理

支持(0) 反对(0) elilee | 园豆:6 (初学一级) | 2015-03-14 14:48

@elilee: 听楼上两位的吧,很好的方式。

支持(1) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2015-03-14 15:24
0

在Web应用里用Thread或者Time进行轮询很不靠谱,简单的改进方式是将队列数据入库或者写入文件,后台写个程序(定时服务),处理队列数据。

JeffWong | 园豆:2328 (老鸟四级) | 2015-03-16 22:11
0

比较赞同单独的服务去跑。web的话,经常会有因为内存或者各种原因,重启了。回收了。

forhells | 园豆:724 (小虾三级) | 2015-03-16 23:23
0

正如楼上说的WEB端是会自动回收的一定情况下,比如10多分钟没人访问

建议可以再写一个UDP/TCP的服务程序,UDP/TCP服务程序通过MessageQueue类建立和WEB端的私有系统队列。

服务程序监听这个队列,WEB端收到微信数据通知队列。

其实就是进程间通讯,速度是有保证的,这种私有队列还可以通过IP设置分布式挂载

大芝麻 | 园豆:4 (初学一级) | 2015-03-20 11:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册