package com.yanzuoguang.mq.service;

import com.rabbitmq.client.Channel;
import com.yanzuoguang.mq.vo.MessageVo;
import com.yanzuoguang.mq.vo.QueueVo;
import com.yanzuoguang.mq.vo.req.QueueQueryReqVo;
import com.yanzuoguang.util.vo.PageSizeData;
import com.yanzuoguang.util.vo.ResponseResult;
import org.springframework.amqp.core.Message;

/**
 * 消息队列服务
 *
 * @author 颜佐光
 */
public interface MqService {
    /**
     * 保存演示DEMO
     *
     * @param req 需要发送的消息
     * @return 创建队列
     */
    String createQueue(QueueVo req);

    /**
     * 发送消息
     *
     * @param req 需要发送的消息
     * @return 消息编号,但是没有任何意义,发送成功会更改
     */
    String message(MessageVo req);

    /**
     * 发送错误消息
     *
     * @param req
     * @return
     */
    String messageError(MessageVo req);

    /**
     * 消息收到确认
     *
     * @param message 收到的消息
     * @param channel  收到的通道
     */
    void basicAck(Message message, Channel channel);
}