admin
2022-01-12 4a7367a869ef12375ea6678ca44e102b8919c624
service-push/src/main/java/com/ks/push/manager/CMQManager.java
@@ -2,6 +2,7 @@
import com.google.gson.Gson;
import com.ks.push.dto.BPushDeviceDataSet;
import com.ks.push.dto.mq.InvalidDeviceTokenInfo;
import com.ks.push.pojo.DO.PushPlatform;
import com.qcloud.cmq.Message;
import org.slf4j.Logger;
@@ -41,6 +42,16 @@
     */
    public static String PUSH_MZ = "bpush-mz";
    /**
     * 极光推送队列
     */
    public static String PUSH_JPUSH = "bpush-jpush";
    /**
     * 无效设备队列
     */
    public static String PUSH_TOKEN_INVALID = "bpush-token-invalid";
    static {
        cmqUtil = CMQUtil.getInstance(secretId, secretKey);
        // 最大消息为1M
@@ -49,6 +60,8 @@
        cmqUtil.createQueue(PUSH_OPPO);
        cmqUtil.createQueue(PUSH_VIVO);
        cmqUtil.createQueue(PUSH_MZ);
        cmqUtil.createQueue(PUSH_JPUSH);
        cmqUtil.createQueue(PUSH_TOKEN_INVALID);
        logger.info("创建队列完毕");
    }
@@ -72,6 +85,8 @@
            queueName = PUSH_VIVO;
        } else if (platform == PushPlatform.mz) {
            queueName = PUSH_MZ;
        }else if (platform == PushPlatform.jpush) {
            queueName = PUSH_JPUSH;
        }
        return queueName;
    }
@@ -117,6 +132,7 @@
        return null;
    }
    /**
     * 删除消息
     *
@@ -128,6 +144,38 @@
    }
    /**
     * 发送无效设备消息
     *
     * @param info
     */
    public void addInvalidDevieToken(InvalidDeviceTokenInfo info) {
        if (info == null) {
            return;
        }
        cmqUtil.sendMsg(PUSH_TOKEN_INVALID, new Gson().toJson(info));
    }
    /**
     * 消费无效设备消息
     *
     * @param count
     */
    public List<MQMsgConsumeResult> consumeInvalidDeviceTokenQueue(int count) throws Exception {
        List<Message> list = cmqUtil.recieveMsg(count, PUSH_TOKEN_INVALID);
        if (list != null) {
            List<MQMsgConsumeResult> resultList = new ArrayList<>();
            for (Message msg : list) {
                String result = msg.msgBody;
                InvalidDeviceTokenInfo tokenInfo = new Gson().fromJson(result, InvalidDeviceTokenInfo.class);
                resultList.add(new MQMsgConsumeResult(tokenInfo, PUSH_TOKEN_INVALID, msg.receiptHandle));
            }
            return resultList;
        }
        return null;
    }
    public static class MQMsgConsumeResult {
        private String queueName;
        private Object data;