package com.gxwebsoft.common.mq.producer;

import com.gxwebsoft.common.mq.message.SyncMessage;

/**
 * 消息生产者接口 - 预留抽象层，便于将来切换MQ实现（如从RabbitMQ迁移到RocketMQ）
 */
public interface SyncMessageProducer {

    /**
     * 发送同步消息
     *
     * @param message 消息体
     */
    void sendSyncMessage(SyncMessage message);

    /**
     * 发送同步消息（带回调）
     *
     * @param message 消息体
     * @param callback 发送回调
     */
    void sendSyncMessage(SyncMessage message, SendCallback callback);

    /**
     * 发送用户同步消息
     *
     * @param targetSystem 目标系统
     * @param eventType    事件类型：CREATE, UPDATE, DELETE
     * @param userData     用户数据
     */
    void sendUserSyncMessage(String targetSystem, String eventType, Object userData);

    /**
     * 发送回调接口
     */
    interface SendCallback {
        void onSuccess(String messageId);
        void onFailure(String messageId, Throwable throwable);
    }
}
