• RockeyMQ的发送状态


     

     

    SEND_OK:消息正常发送成功


    FLUSH_DISK_TIMEOUT:没有在规定的时间内完成刷盘,这种状态在同步刷盘中会出现,假设请求进来,先同步内存,在同步磁盘,同步时间设置了3秒,在规定时间内没有完成,就会返回这种状态,异步刷盘不会,内存同步完后直接就返回成功了


    FLUSH_SLAVE_TIMEOUT :在主从模式下才会会出现这种状态,假设CUP爆满,主从节点来不及同步.


    SLAVE_NOT_AVAILABLE : 在从模式下,brokey是YNC_MASTER,同步双写,但如果从节点宕机了,主节点没有找到配置的从节点,返回这种状态.




    2:生产和消费的重试机制:

     

     

     

      product方发送到broker时,由于broker宕机了或者网络情况比较差的时候,进行重入机制,

      consumer去broker拉取消息的时候,或者处理完后返回状态时,broker宕机了进入重试机制

     

    product默认重试机制为2

     

     

    设置重试次数

    defaultMQProducer.setRetryTimesWhenSendFailed(0);

     

     

     

    comsumer 端重试机制

     

    int reconsumeTimes = messageExt.getReconsumeTimes();

     

     

     

    判断重试几次后不再重试,

     

     

     1 消费端重试可能消息会被重复消费,这个可以通过代码去判断,比如把keys保存到redis中,设置过期时间,消费时去判断是否被消费过

     2 一条消息无论被重试多少次,这些重试的消息的MassageID ,key都不会变的

     3 消费者集群只针对即系消费方式有效的,广播方式不提供失败重试的特性,失败后不进行消息重试,继续消费新的消息

     

    defaultMQPushConsumer.setMessageModel(MessageModel.BROADCASTING);

    
    
  • 相关阅读:
    yii源码五
    yii源码四
    yii源码三 -- db
    yii源码二 -- interfaces
    yii源码一 -- CComponent
    jquery效果 窗口弹出案例
    JS滚动条
    JS表单验证
    [TCP/IP] TCP流和UDP数据报之间的区别
    [TCP/IP] 关闭连接后为什么客户端最后还要等待2MSL
  • 原文地址:https://www.cnblogs.com/HuangXingLei/p/12612090.html
Copyright © 2020-2023  润新知