package com.brframework.commonmq.core;

import java.time.LocalDateTime;
import java.util.concurrent.TimeUnit;

/**
 * MQ客户端
 *
 * @Author xu
 * @Date 2019年9月5日01:06:17
 */
public interface MQClient {

    /**
     * 发送消息
     * @param topic  主题
     * @param message   消息内容
     */
    void publish(String topic, String message);

    void publishAfterTransaction(String topic, String message);

    /**
     * 发送延时消息
     * @param topic  主题
     * @param message   消息内容
     * @param delay   延时时间
     * @param unit   延时单位
     */
    void publish(String topic, String message, long delay, TimeUnit unit);

    /**
     * 发送定时消息
     * @param topic  主题
     * @param message   消息内容
     * @param time      发送时间
     */
    void publish(String topic, String message, LocalDateTime time);

    /**
     * 删除消息
     * @param topic    主题
     * @param message  内容
     */
    void remove(String topic, String message);

    /**
     * 添加MQ消息监听
     * @param topic      主题
     * @param listener   监听事件
     */
    void addListener(String topic, MQMessageListener listener);

}
