package com.red.circle.mq.rocket.business.failmessage;

/**
 * RocketMQ 失败消息状态更新服务
 */
public interface RocketMqFailMessageUpdateService {

    /**
     * 锁定消息进行重试（更新状态为重试中）
     *
     * @param bizNo 业务唯一标识
     * @return 是否锁定成功
     */
    boolean lockForRetry(String bizNo);

    /**
     * 标记消息重试成功
     *
     * @param bizNo 业务唯一标识
     */
    void markSuccess(String bizNo);

    /**
     * 标记消息重试失败（增加重试次数，计算下次重试时间）
     *
     * @param bizNo    业务唯一标识
     * @param errorMsg 错误信息
     */
    void markFailed(String bizNo, String errorMsg);

    /**
     * 标记消息最终失败（超过最大重试次数）
     *
     * @param bizNo    业务唯一标识
     * @param errorMsg 错误信息
     */
    void markFinalFailed(String bizNo, String errorMsg);
}
