package com.zcxk.core.utils;

/**
 * @author Andy
 * @date 2021-07-22 11:03
 */
public interface MqService {

    /**
     * 直接通过queue名发送
     *
     * @param queueName queue 默认routingKey等于queue名
     * @param message 字符串消息
     * @return void
     * @author Richard
     **/
    void sendStr(String queueName, String message);

    /**
     * 直接通过queue名发送
     *
     * @param queueName queue 默认routingKey等于queue名
     * @param objMsg obj消息
     * @return void
     * @author Richard
     **/
    void send(String queueName, Object objMsg);


    /**
     * 直接通过queue名发送
     *
     * @param queueName queue 默认routingKey等于queue名
     * @param message 字符串消息
     * @param times 消息过期时间 单位：秒
     * @return void
     * @author Richard
     **/
    void sendStr(String queueName, String message, long times);


    /**
     * 直接通过queue名发送
     *
     * @param queueName queue 默认routingKey等于queue名
     * @param objMsg obj消息
     * @param times 消息过期时间 单位：秒
     * @return void
     * @author Richard
     **/
    void send(String queueName, Object objMsg, long times);


    /**
     * 通过exchange and routingKey 发送消息
     *
     * @param exchange 交换机名称
     * @param routingKey 路由key
     * @param message 字符串消息
     * @return void
     * @author Richard
     **/
    void sendStr(String exchange, String routingKey, String message);

    /**
     * 通过exchange and routingKey 发送消息
     *
     * @param exchange 交换机名称
     * @param routingKey 路由key
     * @param objMsg obj消息
     * @return void
     * @author Richard
     **/
    void send(String exchange, String routingKey, Object objMsg);

    /**
     * 通过exchange and routingKey 发送消息
     *
     * @param exchange 交换机名称
     * @param routingKey 路由key
     * @param message 字符串消息
     * @param times 超时时间 单位：秒
     * @return void
     * @author Richard
     **/
    void sendStr(String exchange, String routingKey, String message, long times);


    /**
     * 通过exchange and routingKey 发送消息
     *
     * @param exchange 交换机名称
     * @param routingKey 路由key
     * @param objMsg obj消息
     * @param times 超时时间 单位：秒
     * @return void
     * @author Richard
     **/
    void send(String exchange, String routingKey, Object objMsg, long times);
}
