关于阿里云消息队列阻塞问题

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sosozha/article/details/85014626

       最近碰到一个问题,阿里云的消息队列中消息一直不被消费,在阿里控制台上显示消息堆积,问阿里客服也半天解决不了,只是给出了是否服务中有线程阻塞的疑问。最终原因是如果有多台服务器做消费者的时候,一台服务器可能在消费的时候有问题,然后消息就会一直堆积在这个消费者服务器上,造成另一台也无法方法,最终的结果就是消息一直堆积,无法消费。产生的原因是我们一台本地服务器在使用的时候环境不一样,导致部分运行不下去,消息一直在这边服务器上,但是并没有被消费。还是有些类似线程阻塞。。。

展开阅读全文

关于消息队列问题

03-22

在使用Windows服务调用消息队列群发邮件的时候,总会出现 “传递给函数的句柄无效。”错误。在网上找了很长时间,也没找到问题的原因,贴出代码请朋友们支招,谢谢!rnrn[code=C#]rnprivate void SendMailTemp()rn rn dorn rn ms = new MSMQProvider();rn tryrn rn Entitys.Mail mail = ms.ReadMSMQ();rnrn if (mail != null)rn rn tryrn rn sm.Send("service@***.com", "www.***.com", mail.Email, "", mail.Title, mail.Content, mail.IsHtml);rn rn catch (Exception ex)rn rn File.WriteAllText(@"D:\SendMailErrorLogs\01-elog-"+DateTime.Now.ToString("yyyyMMdd HHmmss")+".txt", ex.Message+"|"+mail.Email);rn rn finallyrn rn Thread.Sleep(1000);rn rn rn elsern rn Thread.Sleep(5 * 60 * 1000);rn rn rn catch (Exception ex)rn rnrn File.WriteAllText(@"D:\SendMailErrorLogs\02-elog-" + DateTime.Now.ToString("yyyyMMdd HHmmss") + ".txt", ex.Message);rn Thread.Sleep( 60 * 1000);rn rn while (true);rn rnrnrnrn//MSMQProvider类ReadMSMQ()方法rnrnrnpublic Entitys.Mail ReadMSMQ()rn rn Entitys.Mail mail;rn //string mqName = ".\\Private$\\MSMQEmail";rn MessageQueue queue = GetMSMQ();rn //queue.DenySharedReceive = true;rn MessageEnumerator me = queue.GetMessageEnumerator2();rn if (me.MoveNext(new TimeSpan(0,0,5)))rn rn //lock (queue) rn Message message = me.RemoveCurrent();rn //message.Formatter = new XmlMessageFormatter(new Type[] typeof(string) );rn message.Formatter = new BinaryMessageFormatter();rn mail = (Entitys.Mail)message.Body;rn //rn rn else rn mail = null;rn rn queue.Close();rn queue.Dispose();rnrn return mail;rn rn[/code] 论坛

没有更多推荐了,返回首页