Rabbit-ack

2020-11-18  本文已影响0人  Spring_java

前提:消费者有异常,没有捕获,也没抛出

配置1:
  rabbitmq:
    addresses: 10.131.232.65:1004
    username: admin
    password: 123456
    virtual-host: /
    publisher-confirms: true
    listener:
      simple:
        acknowledge-mode: auto  #自动处理
        prefetch: 1  # 一次处理的消息数量
配置2:自动处理
    listener:
      simple:
        acknowledge-mode: auto  #自动处理
        prefetch: 1  # 一次处理的消息数量
        default-requeue-rejected: false  #重试次数超过上面的设置之后是否丢弃(false不丢弃时需要写相应代码将该消息加入死信队列 默认true表示消息会重新入对)
配置3:重试机制
    listener:
      simple:
        acknowledge-mode: auto  #自动处理
        prefetch: 1  # 一次处理的消息数量
        retry:
          max-attempts: 3 #最大重试次数
          enabled: true  #是否开启消费者重试(为false时关闭消费者重试,这时消费端代码异常会一直重复收到消息)
        default-requeue-rejected: false  #重试次数超过上面的设置之后是否丢弃(false不丢弃时需要写相应代码将该消息加入死信队列 默认true表示消息会重新入对)

这个是表示,重试3次后不成功就丢弃

Image 7.jpg
可以看到 此时的DeliveryTag仍然是1 表示的不是队列重新发送,而是指应用程序里面自己处理了3次
配置4:没有ack。但是配置重试
    listener:
      simple:
        prefetch: 1  # 一次处理的消息数量
        retry:
          max-attempts: 3 #最大重试次数
          enabled: true  #是否开启消费者重试(为false时关闭消费者重试,这时消费端代码异常会一直重复收到消息)
Image 8.jpg
Image 9.jpg
上一篇 下一篇

猜你喜欢

热点阅读