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.ServerMessageReqVo; import com.yanzuoguang.mq.vo.req.ServerQueueReqVo; import com.yanzuoguang.mq.vo.req.RegisterServerTokenReqVo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiOperation; import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.core.ChannelAwareMessageListener; /** * 消息队列服务 * * @author 颜佐光 */ public interface MqService { /** * 创建队列 * * @param req 需要发送的消息 * @return 创建队列 */ @ApiOperation(value = "创建队列") String createQueue(QueueVo req); /** * 发送消息 * * @param req 需要发送的消息 * @return 消息编号,但是没有任何意义,发送成功会更改 */ @ApiOperation(value = "发送消息") String message(MessageVo req); /** * 发送消息 * * @param req 需要发送的消息 * @param now 是否立即发送 * @return 消息编号,但是没有任何意义,发送成功会更改 */ @ApiOperation(value = "发送消息") String message(MessageVo req, boolean now); /** * 发送错误消息 * * @param req * @return */ @ApiOperation(value = "发送错误消息") String messageError(MessageVo req); /** * 消息收到确认 * * @param message 收到的消息 * @param channel 收到的通道 */ @ApiOperation(value = "消息收到确认") void basicAck(Message message, Channel channel); /** * 删除当前服务器的队列 * * @param req 请求数据 * @return */ String removeServerQueue(ServerQueueReqVo req); /** * 建立当前服务器的队列 * * @param req 请求数据 * @return */ @ApiOperation(value = "建立当前服务器的队列") String createServerQueue(ServerQueueReqVo req); /** * 注册当前消费队列的回调 * * @param req 请求数据 * @param listener 处理函数 * @return */ @ApiOperation(value = "注册当前消费队列的回调") String setServerQueueConsumer(ServerQueueReqVo req, ChannelAwareMessageListener listener); /** * 注册当前服务器的token,超期后需要重新注册 * * @param req * @return */ @ApiOperation(value = "注册当前服务器的token,超期后需要重新注册") String registerServerToken(RegisterServerTokenReqVo req); /** * 删除token的执行 * * @param req */ @ApiOperation(value = "删除token的执行") void removeToken(RegisterServerTokenReqVo req); /** * 发送给指定服务器消息 * * @param req * @return */ @ApiOperation(value = "发送给指定服务器消息") String sendServerMessage(ServerMessageReqVo req); }