就是想用ASP.NET写一个永久运行的线程用于监听一个队列,比如用于处理微信上的消息,一旦队列有内容则将其取出并进行相应的处理。我有在global.asax中创建一个线程来跑,但是CPU会占用很高(很简单的处理逻辑),后面改成使用定时器,好很多但是会时不时的自动重启一样还是很不稳定。求哪位高手能指点一下。希望能说得详细一点,急需,谢谢。
这种情况下,Windows Service应该是不二选择吧。
最好不要在网站上面写这个功能,你直接写个小程序让他一直跑着就行了,还不会影响网站的性能
微信不是会调用你的api么?还需要单独监听么?
有一些比较耗时的操作我要让他异步处理
@elilee: 听楼上两位的吧,很好的方式。
在Web应用里用Thread或者Time进行轮询很不靠谱,简单的改进方式是将队列数据入库或者写入文件,后台写个程序(定时服务),处理队列数据。
比较赞同单独的服务去跑。web的话,经常会有因为内存或者各种原因,重启了。回收了。
正如楼上说的WEB端是会自动回收的一定情况下,比如10多分钟没人访问
建议可以再写一个UDP/TCP的服务程序,UDP/TCP服务程序通过MessageQueue类建立和WEB端的私有系统队列。
服务程序监听这个队列,WEB端收到微信数据通知队列。
其实就是进程间通讯,速度是有保证的,这种私有队列还可以通过IP设置分布式挂载