MessageSendService.java 2.08 KB
package com.yanzuoguang.mq.service;


import com.rabbitmq.client.Channel;
import com.yanzuoguang.mq.vo.MessageVo;
import io.swagger.annotations.ApiOperation;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.core.ChannelAwareMessageListener;
import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;

/**
 * 发送消息服务
 *
 * @author 颜佐光
 */
public interface MessageSendService {

    /**
     * 打上批次,并且所有消息延迟一定时间处理,增加处理次数1次
     *
     * @param batchId 批次编号
     * @param size    消费条数
     * @return 批次数据
     */
    boolean resendFair(String batchId, int size);

    /**
     * 发送消息
     *
     * @param req 发送消息
     * @return 发送结果
     */
    String send(MessageVo req);

    /**
     * 消息发送成功
     *
     * @param id 编号
     * @return 成功后返回编号
     */
    String onSuccess(String id);

    /**
     * 消息发送失败
     *
     * @param messageVo 消息处理错误
     * @return 成功后返回编号
     */
    String onError(MessageVo messageVo);

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

    /**
     * 动态初始化消息队列处理
     *
     * @param queueName       队列名字
     * @param messageListener 消息处理函数
     * @return
     */
    @ApiOperation(value = "动态初始化消息队列处理")
    SimpleMessageListenerContainer init(String queueName, ChannelAwareMessageListener messageListener);

    /**
     * 动态初始化消息队列处理
     *
     * @param queueName       队列名字
     * @param concurrency     线程数量
     * @param messageListener 消息处理函数
     * @return
     */
    @ApiOperation(value = "动态初始化消息队列处理")
    SimpleMessageListenerContainer init(String queueName, int concurrency, ChannelAwareMessageListener messageListener);
}