package com.qmth.themis.business.service;

import com.qmth.themis.common.util.Result;
import com.qmth.themis.business.dto.MqDto;

/**
 * @Description: mq 服务类
 * @Param:
 * @return:
 * @Author: wangliang
 * @Date: 2020/6/28
 */
public interface ProducerServer {

    /**
     * 同步消息
     *
     * @param mqDto
     * @return
     */
    public Result syncMsg(MqDto mqDto);

    /**
     * 同步顺序消息
     *
     * @param mqDto
     * @return
     */
    public Result syncOrderlyMsg(MqDto mqDto);

    /**
     * 同步延时消息
     *
     * @param mqDto
     * @return
     */
    public Result syncDelayMsg(MqDto mqDto);

    /**
     * 异步消息
     *
     * @param mqDto
     * @return
     */
    public Result asyncMsg(MqDto mqDto);

    /**
     * 异步顺序消息
     *
     * @param mqDto
     * @return
     */
    public Result asyncOrderlyMsg(MqDto mqDto);

    /**
     * 异步延时消息
     *
     * @param mqDto
     * @return
     */
    public Result asyncDelayMsg(MqDto mqDto);

    /**
     * 单向消息
     *
     * @param mqDto
     * @return
     */
    public Result sendOneWay(MqDto mqDto);

    /**
     * 单向顺序消息
     *
     * @param mqDto
     * @return
     */
    public Result sendOneWayOrderly(MqDto mqDto);


    /**
     * 事务消息
     *
     * @param mqDto
     * @return
     */
    public Result sendMsgTran(MqDto mqDto);
}
