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机制【最消耗性能】

  • 相关阅读:
    Apple MDM
    苹果核
    iOS自动化测试的那些干货
    Wifi 定位原理及 iOS Wifi 列表获取
    详解Shell脚本实现iOS自动化编译打包提交
    PushKit 占坑
    【译】使用 CocoaPods 模块化iOS应用
    NSMutableArray 根据key排序
    iOS 通过tag查找控件
    自己使用 2.常量变量,数据类型,数据的输入输出。
  • 原文地址:https://www.cnblogs.com/sailing92/p/13711200.html
Copyright © 2011-2022 走看看