package com.qmth.themis.business.service;

import com.qmth.themis.business.dto.MqDto;

import java.util.Map;

/**
 * @Description: mqdto 服务类
 * @Param:
 * @return:
 * @Author: wangliang
 * @Date: 2020/7/2
 */
public interface MqDtoService {

    /**
     * 组装异步消息
     *
     * @param mqDto
     * @return
     */
    public MqDto assembleSendAsyncMsg(MqDto mqDto);

    /**
     * 组装同步消息
     *
     * @param mqDto
     * @return
     */
    public MqDto assembleSendSyncMsg(MqDto mqDto);

    /**
     * 组装单向消息
     *
     * @param mqDto
     * @return
     */
    public MqDto assembleSendOneWayMsg(MqDto mqDto);

    /**
     * 组装异步延时消息
     *
     * @param mqDto
     * @return
     */
    public MqDto assembleSendAsyncDelayMsg(MqDto mqDto);

    /**
     * 组装异步单向顺序消息
     *
     * @param mqDto
     * @return
     */
    public MqDto assembleSendOneOrderMsg(MqDto mqDto);

    /**
     * 组装异步顺序消息
     *
     * @param mqDto
     * @return
     */
    public MqDto assembleSendAsyncOrderMsg(MqDto mqDto);

    /**
     * 组装同步顺序消息
     *
     * @param mqDto
     * @return
     */
    public MqDto assembleSendSyncOrderMsg(MqDto mqDto);

    /**
     * 组装同步延时消息
     *
     * @param mqDto
     * @return
     */
    public MqDto assembleSendSyncDelayMsg(MqDto mqDto);

    /**
     * 组装事务消息
     *
     * @param mqDto
     * @return
     */
    public MqDto assembleSendTranMsg(MqDto mqDto);

    /**
     * 构建mq延时消息
     *
     * @param level
     * @return
     */
    public Map<String, Object> buildMqDelayMsg(String level);
}
