zoukankan      html  css  js  c++  java
  • 消息的确认

    1、消费端确认
    自动确认:message出队列的时候自动确认【broke】
    手动确认:message出队列之后,要应用程序去确认是否已经消费完毕
    basic提供了哪些方法来做这些事情
    1)、自动确认
    BasicGet("mytest",true);
    2)、手动确认
    BasicGet("mytest",false);
    BasicAck(result.DeliveryTag,false);
    void BasicAck(ulong deliveryTag,bool multiple)
    multiple:true =>x<deliveryTag的所有message都会被确认

    3)、手工拒绝:consumer 拒绝服务器发送过来的信息
    i:遗弃
    BasicReject(result.DeliveryTag,false);
    ii:给queue
    BasicReject(result.DeliveryTag,true);

    拒绝多个
    BasicNack();

    4)、重新递送【商家补发】
    BasicRecover();
    true 同一个consumer消费
    false 可能被其他consumer消费

    2、发布端(生产端)的确认
    1)confirm机制
    channel.ConfirmSelect();
    发送动作
    var isallpubished=channel.WaitForConfirms();


    2)tx机制 【事务控制】
    publish 送message到rabbitmq中,我们一定要知道,这个消息已经发送成功了,也就是,rabbitmq一定要告诉publish,这条消息已经被确定收到。
    try catch
    channel.TxSelect();
    发送动作
    var isallpubished=channel.TxCommit();

    异常 channe.TxRollback();

    均影响性能: confirm<tx机制【最消耗性能】

  • 相关阅读:
    hgoi#20191101
    hgoi#20191031
    hgoi#20191030
    hgoi#20191029-2
    RMQ (Range Minimum/Maximum Query)
    数学浅谈-组合数与数学期望
    重庆NK十日行-知识点汇总
    分块
    STL—algorithm与Map容器
    搜索—迭代加深
  • 原文地址:https://www.cnblogs.com/sailing92/p/13711200.html
Copyright © 2011-2022 走看看