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的方式取得.

  • 相关阅读:
    hive实现根据用户分组,按用户记录求上下两条记录的时间差
    国外互联网公司大数据技术架构研究
    Hadoop源码解析之 rpc通信 client到server通信
    一致性哈希与java实现
    spark 对hbase 操作
    Spark MLlib(下)--机器学习库SparkMLlib实战
    PHP源码进行加密(仅linux)
    有个问题需要将字符串(大数字)计算相加并转换成字符串,传递的参数是字符串。
    Js中Array 函数使用方法
    phpstorm配置xdebug调试
  • 原文地址:https://www.cnblogs.com/zbw911/p/5319025.html
Copyright © 2011-2022 走看看