package org.springblade.common.notify.rocketmq.producer;

import java.util.Properties;

/**
 * 消息生产者代理接口定义
 *
 * @author caiyihua
 */
public interface ProducerProxy {
    /**
     * 启动消息生产者
     *
     * @param properties
     */
    void startup(Properties properties);

    /**
     * 销毁消息生产者
     */
    void shutdown();

    /**
     * 是否启动
     *
     * @return
     */
    boolean isStarted();

    /**
     * 同步发送消息
     *
     * @param topic
     * @param tag
     * @param messageBody
     * @param userProperties
     * @param startDeliverTime
     * @return
     */
    SendMqMessageResult sendMessage(String topic, String tag, String messageBody, Properties userProperties, Long startDeliverTime);

    /**
     * 异步发放消息
     *
     * @param topic
     * @param tag
     * @param messageBody
     * @param userProperties
     * @return
     */
    SendMqMessageResult sendAsyncMessage(String topic, String tag, String messageBody, Properties userProperties);
}
