执行失败
执行失败后重试
执行失败
执行失败后重试
消息重试
服务器端重试机制
仅仅是消费者内部进行了重试,换句话说就是重试跟mq没有任何关系。上述消费者代码不能添加try{}catch(){},一旦捕获了异常,在自动 ack 模式下,就相当于消息正确处理了,消息直接被确认掉了,不会触发重试的。
如果没有异常,消费者也不会进行重试。只有抛出异常,消费者才会进行重试
抛出异常
如果抛出异常,且设置了重试机制,消费者会在客户端自动进行重试(即不通过rabbitmq服务器)
会触发: channel.basicNack(tag, false, true);, 这样会告诉rabbitmq该消息消费失败, 需要重新入队
重试次数跟max-attempts的配置有关,并且因为网络等原因,会导致重试次数高于设定次数,
例子:图中设置为2次,实际执行4次