zoukankan      html  css  js  c++  java
  • RabbitMQ消费端消息的获取方式(.Net Core)

    1【短链接】:BasicGet(String queue, Boolean autoAck)

      通过request的方式独自去获取消息,断开式,一次次获取,如果返回null,则说明队列中没有消息。

        隐患:每次获取消息都会创建channel。

        优点:最安全的获取方式且性能不算太差。

    2【长链接】:  

      1)、EventingBasicConsumer【订阅式】

      使用这种方式消息会全部打入当前消费者中,不管是否启用确认机制。

        隐患:①根据消息的长短多少将影响当前消费者的占用资源。

           ②如果当前消费者挂掉,那么未处理的消息将会丢失。

        解决:【QOS + Ack】  服务质量 + 消息确认

            即在channel设置好通道使消息一条一条的从队列中打过来,确认一条打一条。

     1             //UInt32 prefetchSize,  每次取的长度
     2             //UInt16 prefetchCount,     每次取几条
     3             //Boolean global    是否对connection通用
     4             channel.BasicQos(0, 1, true);   //https://www.rabbitmq.com/tutorials/tutorial-two-dotnet.html
     5             //使用事件机制获取消息
     6             EventingBasicConsumer consumer = new EventingBasicConsumer(channel);
     7             consumer.Received += (sender, e) =>
     8             {
     9                 Console.WriteLine(Encoding.UTF8.GetString(e.Body));
    10                 channel.BasicAck(e.DeliveryTag, false);
    11             };
    12             channel.BasicConsume("headersQueue", false, consumer);

      2)、QueueingBasicConsumer【死循环】【已过时】

     1             QueueingBasicConsumer consumer = new QueueingBasicConsumer(channel);
     2             channel.BasicConsume("headersQueue", false, consumer);
     3             while (true)
     4             {
     5                 var result = consumer.Queue.Dequeue();
     6                 if(result != null)
     7                 {
     8                     Console.WriteLine(Encoding.UTF8.GetString(result.Body));
     9                     channel.BasicAck(result.DeliveryTag, false);
    10                 }
    11             }
  • 相关阅读:
    POJ 3253 Fence Repair
    POJ 2431 Expedition
    NYOJ 269 VF
    NYOJ 456 邮票分你一半
    划分数问题 DP
    HDU 1253 胜利大逃亡
    NYOJ 294 Bot Trust
    NYOJ 36 最长公共子序列
    HDU 1555 How many days?
    01背包 (大数据)
  • 原文地址:https://www.cnblogs.com/fanqisoft/p/10398340.html
Copyright © 2011-2022 走看看