admin
2021-06-24 df4441322e9801c102299451da41d7c40b4502e9
service-daylucky/src/main/java/com/ks/daylucky/util/mq/CMQManager.java
@@ -1,13 +1,11 @@
package com.ks.daylucky.util.mq;
import com.google.gson.Gson;
import com.ks.daylucky.pojo.DTO.ActivityMQMsg;
import com.ks.lucky.utils.LuckyCMQConstant;
import com.qcloud.cmq.Message;
import org.yeshi.utils.CMQUtil;
import java.util.HashMap;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
public class CMQManager {
@@ -16,12 +14,50 @@
    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_DAY_LUCKY_MSG = "day-lucky-msg";
    /**
     * 活动中奖通知
     */
    public static String QUEUENAME_DAY_LUCKY_ACTIVITY_DRAWN = "day-lucky-activity-drawn-notify";
    static {
        cmqUtil = CMQUtil.getInstance(secretId, secretKey);
        // 最大消息为1M
        cmqUtil.createQueue(QUEUENAME_LUCKY_ACTIVITY, 1024 * 1024);
        cmqUtil.createQueue(QUEUENAME_DAY_LUCKY_MSG, 1024 * 1024);
        cmqUtil.createQueue(QUEUENAME_DAY_LUCKY_ACTIVITY_DRAWN, 1024 * 1024);
        try {
            cmqUtil.subscribeTopic(LuckyCMQConstant.TOPIC_ACTIVITY_STATE_CHANGE, QUEUENAME_DAY_LUCKY_MSG, QUEUENAME_DAY_LUCKY_MSG);
        } catch (Exception e) {
            e.printStackTrace();
        }
        try {
            cmqUtil.subscribeTopic(LuckyCMQConstant.TOPIC_ASSIST, QUEUENAME_DAY_LUCKY_MSG, QUEUENAME_DAY_LUCKY_MSG);
        } catch (Exception e) {
        }
        try {
            cmqUtil.subscribeTopic(LuckyCMQConstant.TOPIC_ACTIVITY_DRAWN, QUEUENAME_DAY_LUCKY_MSG, QUEUENAME_DAY_LUCKY_MSG);
        } catch (Exception e) {
        }
        try {
            cmqUtil.subscribeTopic(LuckyCMQConstant.TOPIC_ACTIVITY_JOIN, QUEUENAME_DAY_LUCKY_MSG, QUEUENAME_DAY_LUCKY_MSG);
        } catch (Exception e) {
        }
        try {
            cmqUtil.subscribeTopic(LuckyCMQConstant.TOPIC_ACTIVITY_DRAWN, QUEUENAME_DAY_LUCKY_ACTIVITY_DRAWN, QUEUENAME_DAY_LUCKY_ACTIVITY_DRAWN);
        } catch (Exception e) {
        }
    }
    public static CMQManager getInstance() {
@@ -33,44 +69,17 @@
    /**
     * 添加消息
     *
     * @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);
    public List<Message> consumeMsgMsg(int count) {
        List<Message> list = cmqUtil.recieveMsg(count, QUEUENAME_DAY_LUCKY_MSG);
        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;
        return list;
    }
    /**
@@ -78,8 +87,32 @@
     *
     * @param receiptHandle
     */
    public void deleteActivityMsg(String receiptHandle) {
        cmqUtil.deleteMsg(QUEUENAME_LUCKY_ACTIVITY, receiptHandle);
    public void deleteMsgMsg(String receiptHandle) {
        cmqUtil.deleteMsg(QUEUENAME_DAY_LUCKY_MSG, receiptHandle);
    }
    /**
     * 活动消息消费
     *
     * @param count
     * @return
     */
    public List<Message> consumeActivityDrawnMsg(int count) {
        List<Message> list = cmqUtil.recieveMsg(count, QUEUENAME_DAY_LUCKY_ACTIVITY_DRAWN);
        if (list == null) {
            return null;
        }
        return list;
    }
    /**
     * 删除活动消息
     *
     * @param receiptHandle
     */
    public void deleteActivityDrawnMsg(String receiptHandle) {
        cmqUtil.deleteMsg(QUEUENAME_DAY_LUCKY_ACTIVITY_DRAWN, receiptHandle);
    }