zoukankan      html  css  js  c++  java
  • 两代码的区别

    1,

      var cf = new ConnectionFactory { Uri = Uri, RequestedHeartbeat = 30 };

    while (innerTaskRunning)
                   {
                     using (var conn = cf.CreateConnection())
                       {
                           while (innerTaskRunning)
                           {
                               using (var ch = conn.CreateModel())
                               {
                                   try
                                   {
                                       ch.ExchangeDeclare(ExchangeName, exchangeType, true);
                                       ch.QueueDeclare(QueueName, true, false, false, Args);
                                   }
                                   catch (Exception exBind)
                                   {
                                       WriteLog(logFunc, "绑定队列出错!q=" + QueueName, exBind);
                                       return false; //异常跳出
                                   }


                                   var consumer = new QueueingBasicConsumer(ch);
                                   var consumerTag = ch.BasicConsume(QueueName, true, consumer);

                                   BasicDeliverEventArgs e;
                                   using (new MqWatch("BasicConsume", Uri, ExchangeName, QueueName))
                                   {
                                       e = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
                                   }
                                   var msg = Encoding.UTF8.GetString(e.Body); //这儿是消息内容
                                   e = null;
                                   try
                                   {

                                       consumeFunc(msg);
                                   }
                                   catch (Exception exConsume)
                                   {
                                       WriteLog(logFunc, "消费出错,msg=" + msg, exConsume);
                                       //add log
                                   }
                               }

                           } //end while
                       }
                   }

     

     

      var cf = new ConnectionFactory { Uri = Uri, RequestedHeartbeat = 30 };

    while (innerTaskRunning)
                   {
                    


                       using (var conn = cf.CreateConnection())
                       {
                              using (var ch = conn.CreateModel())
                               {
                                   try
                                   {
                                       ch.ExchangeDeclare(ExchangeName, exchangeType, true);
                                       ch.QueueDeclare(QueueName, true, false, false, Args);
                                   }
                                   catch (Exception exBind)
                                   {
                                       WriteLog(logFunc, "绑定队列出错!q=" + QueueName, exBind);
                                       return false; //异常跳出
                                   }


                                   var consumer = new QueueingBasicConsumer(ch);
                                   var consumerTag = ch.BasicConsume(QueueName, true, consumer);

                             while (innerTaskRunning)
                           {

                                    BasicDeliverEventArgs e;
                                   using (new MqWatch("BasicConsume", Uri, ExchangeName, QueueName))
                                   {
                                       e = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
                                   }
                                   var msg = Encoding.UTF8.GetString(e.Body); //这儿是消息内容
                                   e = null;
                                   try
                                   {

                                       consumeFunc(msg);
                                   }
                                   catch (Exception exConsume)
                                   {
                                       WriteLog(logFunc, "消费出错,msg=" + msg, exConsume);
                                       //add log
                                   }
                               }


                           } //end while
                       }
                   }

     

     

    第二段代码内存泄漏的风险。 一直无法释放  BasicDeliverEventArgs  。

    但是第二段代码写起来却是错的。

     

    应用使用BasicGet ACK的方式取得.

  • 相关阅读:
    网站微信登录-python 实现
    最终还是迁移到github
    理解 python 装饰器
    Git 学习之 Git Basics
    haskell 常用 函数
    jinja 2 filter 使用
    目标的牵引作用
    姨妈去世了
    OKR的理解
    无法证明的事情,和梦又有什么区别呢
  • 原文地址:https://www.cnblogs.com/zbw911/p/5319025.html
Copyright © 2011-2022 走看看