package com.ks.lucky.util.mq;
|
|
import com.google.gson.Gson;
|
import com.ks.lucky.pojo.DTO.ActivityDrwanOutDateMsg;
|
import com.ks.lucky.pojo.DTO.ActivityMQMsg;
|
import com.ks.lucky.pojo.DTO.mq.ActivityAssistMsgDTO;
|
import com.ks.lucky.pojo.DTO.mq.ActivityDrawnMsgDTO;
|
import com.ks.lucky.pojo.DTO.mq.ActivityJoinMsgDTO;
|
import com.ks.lucky.pojo.DTO.mq.ActivityStateChangeMsgDTO;
|
import com.ks.lucky.utils.LuckyCMQConstant;
|
import com.qcloud.cmq.Message;
|
import org.yeshi.utils.CMQUtil;
|
import org.yeshi.utils.JsonUtil;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
public class CMQManager {
|
|
|
private static String secretId = "AKIDTlpgJhLjOozvd6QI2XnpfGbgV4NQJk25";
|
private static String secretKey = "xhCSUHo55oHUQ6XicFcmfIgspX0EEzWo";
|
private static CMQManager cmqManager;
|
private static CMQUtil cmqUtil;
|
public static String QUEUENAME_LUCKY_ACTIVITY = "lucky-activity";
|
/**
|
* 需要执行领奖过期
|
*/
|
public static String QUEUENAME_LUCKY_ACTIVITY_DRAWN_OUTDATE_EXEC = "lucky-activity-drawn-outdate-exec";
|
|
|
static {
|
cmqUtil = CMQUtil.getInstance(secretId, secretKey);
|
// 最大消息为1M
|
cmqUtil.createQueue(QUEUENAME_LUCKY_ACTIVITY, 1024 * 1024);
|
cmqUtil.createQueue(QUEUENAME_LUCKY_ACTIVITY_DRAWN_OUTDATE_EXEC, 1024 * 1024);
|
|
//创建主题
|
cmqUtil.createTopic(LuckyCMQConstant.TOPIC_ACTIVITY_STATE_CHANGE);
|
cmqUtil.createTopic(LuckyCMQConstant.TOPIC_ASSIST);
|
cmqUtil.createTopic(LuckyCMQConstant.TOPIC_ACTIVITY_DRAWN);
|
cmqUtil.createTopic(LuckyCMQConstant.TOPIC_ACTIVITY_JOIN);
|
}
|
|
public static CMQManager getInstance() {
|
if (cmqManager == null) {
|
cmqManager = new CMQManager();
|
}
|
return cmqManager;
|
}
|
|
|
/**
|
* 添加消息
|
*
|
* @param queueName
|
* @param msg
|
*/
|
public void addMsg(String queueName, String msg) {
|
cmqUtil.sendMsg(queueName, msg);
|
}
|
|
|
/**
|
* 添加活动消息
|
*
|
* @param msg
|
*/
|
public void addActivityMsg(ActivityMQMsg msg) {
|
cmqUtil.sendMsg(QUEUENAME_LUCKY_ACTIVITY, new Gson().toJson(msg));
|
}
|
|
|
/**
|
* 活动消息消费
|
*
|
* @param count
|
* @return
|
*/
|
public Map<String, ActivityMQMsg> consumeActivityMsg(int count) {
|
List<Message> list = cmqUtil.recieveMsg(count, QUEUENAME_LUCKY_ACTIVITY);
|
if (list == null) {
|
return null;
|
}
|
|
Map<String, ActivityMQMsg> map = new HashMap<>();
|
Gson gson = new Gson();
|
for (Message msg : list) {
|
String result = msg.msgBody;
|
map.put(msg.receiptHandle, gson.fromJson(result, ActivityMQMsg.class));
|
}
|
return map;
|
}
|
|
/**
|
* 删除活动消息
|
*
|
* @param receiptHandle
|
*/
|
public void deleteActivityMsg(String receiptHandle) {
|
cmqUtil.deleteMsg(QUEUENAME_LUCKY_ACTIVITY, receiptHandle);
|
}
|
|
|
/**
|
* 添加活动过期消息
|
*
|
* @param msg
|
*/
|
public void addActivityDrawnOutDateMsg(ActivityDrwanOutDateMsg msg) {
|
cmqUtil.sendMsg(QUEUENAME_LUCKY_ACTIVITY_DRAWN_OUTDATE_EXEC, new Gson().toJson(msg));
|
}
|
|
/**
|
* 消费活动中奖过期消息
|
*
|
* @param count
|
* @return
|
*/
|
public Map<String, ActivityDrwanOutDateMsg> consumeActivityDrawnOutDateMsg(int count) {
|
List<Message> list = cmqUtil.recieveMsg(count, QUEUENAME_LUCKY_ACTIVITY_DRAWN_OUTDATE_EXEC);
|
if (list == null) {
|
return null;
|
}
|
|
Map<String, ActivityDrwanOutDateMsg> map = new HashMap<>();
|
Gson gson = new Gson();
|
for (Message msg : list) {
|
String result = msg.msgBody;
|
map.put(msg.receiptHandle, gson.fromJson(result, ActivityDrwanOutDateMsg.class));
|
}
|
return map;
|
}
|
|
/**
|
* 删除活动中奖过期消息
|
*
|
* @param receiptHandle
|
*/
|
public void deleteActivityDrawnOutDateMsg(String receiptHandle) {
|
cmqUtil.deleteMsg(QUEUENAME_LUCKY_ACTIVITY_DRAWN_OUTDATE_EXEC, receiptHandle);
|
}
|
|
|
/**
|
* 发布活动状态改变的订阅消息
|
*
|
* @param dto
|
*/
|
public void publishActivityStateChangeMsg(ActivityStateChangeMsgDTO dto) {
|
List<String> tagList = new ArrayList<>();
|
tagList.add(LuckyCMQConstant.TAG_ACTIVITY_STATE_CHANGE);
|
cmqUtil.publishTopicMessage(LuckyCMQConstant.TOPIC_ACTIVITY_STATE_CHANGE, tagList, JsonUtil.getSimpleGson().toJson(dto));
|
}
|
|
|
/**
|
* 发布活动助力的订阅消息
|
*
|
* @param dto
|
*/
|
public void publishActivityAssistMsg(ActivityAssistMsgDTO dto) {
|
List<String> tagList = new ArrayList<>();
|
tagList.add(LuckyCMQConstant.TAG_ASSIST);
|
cmqUtil.publishTopicMessage(LuckyCMQConstant.TOPIC_ASSIST, tagList, JsonUtil.getSimpleGson().toJson(dto));
|
}
|
|
/**
|
* 发布活动中奖消息到订阅消息
|
*
|
* @param dto
|
*/
|
public void publishActivityDrawnMsg(ActivityDrawnMsgDTO dto) {
|
List<String> tagList = new ArrayList<>();
|
tagList.add(LuckyCMQConstant.TAG_ACTIVITY_DRAWN);
|
cmqUtil.publishTopicMessage(LuckyCMQConstant.TOPIC_ACTIVITY_DRAWN, tagList, JsonUtil.getSimpleGson().toJson(dto));
|
}
|
|
|
/**
|
* 活动参与信息
|
* @param dto
|
*/
|
public void publishActivityJoinMsg(ActivityJoinMsgDTO dto) {
|
List<String> tagList = new ArrayList<>();
|
tagList.add(LuckyCMQConstant.TAG_ACTIVITY_JOIN);
|
cmqUtil.publishTopicMessage(LuckyCMQConstant.TOPIC_ACTIVITY_JOIN, tagList, JsonUtil.getSimpleGson().toJson(dto));
|
}
|
|
}
|