From a2c56bd6b79d2b8ca2c4c44a254ad2958fb72bca Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期五, 17 九月 2021 15:21:45 +0800 Subject: [PATCH] 推送服务完善 --- service-push/src/main/java/com/ks/push/manager/PushManager.java | 110 ++++++++++++++++++++++++++++--------------------------- 1 files changed, 56 insertions(+), 54 deletions(-) diff --git a/service-push/src/main/java/com/ks/push/manager/PushManager.java b/service-push/src/main/java/com/ks/push/manager/PushManager.java index 2c8b010..f47a50a 100644 --- a/service-push/src/main/java/com/ks/push/manager/PushManager.java +++ b/service-push/src/main/java/com/ks/push/manager/PushManager.java @@ -36,10 +36,10 @@ private BPushPlatformAppInfoManager bPushPlatformAppInfoManager; @Resource - private RedisTemplate<String, Object> redisTemplate; + private PushExcuteResultManager pushExcuteResultManager; @Resource - private PushExcuteResultManager pushExcuteResultManager; + private RedisTemplate redisTemplate; /** @@ -81,70 +81,72 @@ } String key = "task-" + taskId; - if (!redisTemplate.opsForValue().setIfAbsent(key, "1", 5 * 60, TimeUnit.SECONDS)) { + + Boolean s = redisTemplate.opsForValue().setIfAbsent(key, "1", 5 * 60, TimeUnit.SECONDS); + + if (s == null || !s) { throw new BPushTaskException(BPushTaskException.CODE_BUSY, "鏈嶅姟鍣ㄧ箒蹇欙紝璇风◢鍚庡啀璇�"); } + + logger.info("寮�濮嬪惎鍔ㄦ帹閫�#taskId:{}", task.getId()); updateState(taskId, BPushTask.STATE_PUSHING, null); boolean hasDevice = false; - try { - // 鏌ヨ鍙帹閫佺殑骞冲彴 - List<BPushPlatformAppInfo> list = bPushPlatformAppInfoManager.listByAppCode(task.getAppCode()); - //鍏堝垵濮嬪寲鎺ㄩ�佺粨鏋滄暟鎹暟鎹� - List<BPushTaskExcuteResult> resultList = new ArrayList<>(); - Map<String, Long> resultCountMap = new HashMap<>(); - for (BPushPlatformAppInfo appInfo : list) { - long count = pushDeviceTokenManager.count(task.getAppCode(), appInfo.getPlatform(), task.getFilter()); - if (count > 0) { - hasDevice = true; - //鍒濆鍖栨帹閫佺粨鏋滄暟鎹� - BPushTaskExcuteResult result = pushExcuteResultManager.initPushExcuteResult(taskId, appInfo.getPlatform(), count); - resultCountMap.put(result.getId(), count); - resultList.add(result); - } + // 鏌ヨ鍙帹閫佺殑骞冲彴 + List<BPushPlatformAppInfo> list = bPushPlatformAppInfoManager.listByAppCode(task.getAppCode()); + + //鍏堝垵濮嬪寲鎺ㄩ�佺粨鏋滄暟鎹暟鎹� + List<BPushTaskExcuteResult> resultList = new ArrayList<>(); + Map<String, Long> resultCountMap = new HashMap<>(); + for (BPushPlatformAppInfo appInfo : list) { + long count = pushDeviceTokenManager.count(task.getAppCode(), appInfo.getPlatform(), task.getFilter()); + if (count > 0) { + hasDevice = true; + //鍒濆鍖栨帹閫佺粨鏋滄暟鎹� + BPushTaskExcuteResult result = pushExcuteResultManager.initPushExcuteResult(taskId, appInfo.getPlatform(), count); + resultCountMap.put(result.getId(), count); + resultList.add(result); } - - - for (BPushTaskExcuteResult result : resultList) { - long count = resultCountMap.get(result.getId()); - int pageSize = 500; - int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1); - long totalValidCount = 0L; - - //鍒濆鍖栨壒閲忔帹閫佺殑璁℃暟 - for (int page = 0; page < totalPage; page++) { - pushExcuteResultManager.startBatchPush(taskId, result.getPushPlatform(), page + ""); - } - - for (int page = 0; page < totalPage; page++) { - List<BPushDeviceToken> deviceTokenList = pushDeviceTokenManager.list(task.getAppCode(), result.getPushPlatform(), task.getFilter(), page + 1, pageSize); - - List<String> tokenList = new ArrayList<>(); - for (BPushDeviceToken deviceToken : deviceTokenList) { - //TODO 鏃堕棿鍒ゆ柇 - tokenList.add(deviceToken.getToken()); - } - totalValidCount += tokenList.size(); - BPushDeviceDataSet dataSet = new BPushDeviceDataSet(tokenList, page + "", taskId); - //鏈�鍚庝竴椤� - if (page == totalPage - 1 && totalValidCount != count) { - //淇敼鎬绘暟 - pushExcuteResultManager.setDeviceCount(result.getId(), totalValidCount); - } - CMQManager.getInstance().addToPushQueue(result.getPushPlatform(), dataSet); - } - logger.info("鍔犲叆鎺ㄩ�侀槦鍒�#浠诲姟Id:{}#骞冲彴:{}#鎺ㄩ�佹暟閲�:{}", task.getId(), result.getPushPlatform().name(), count); - } - } finally { - redisTemplate.delete(key); } - //娌℃湁鍙帹閫佺殑璁惧 + + for (BPushTaskExcuteResult result : resultList) { + long count = resultCountMap.get(result.getId()); + int pageSize = 500; + int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1); + long totalValidCount = 0L; + + //鍒濆鍖栨壒閲忔帹閫佺殑璁℃暟 + for (int page = 0; page < totalPage; page++) { + pushExcuteResultManager.startBatchPush(taskId, result.getPushPlatform(), page + ""); + } + + for (int page = 0; page < totalPage; page++) { + List<BPushDeviceToken> deviceTokenList = pushDeviceTokenManager.list(task.getAppCode(), result.getPushPlatform(), task.getFilter(), page + 1, pageSize); + + List<String> tokenList = new ArrayList<>(); + for (BPushDeviceToken deviceToken : deviceTokenList) { + //TODO 鏃堕棿鍒ゆ柇 + tokenList.add(deviceToken.getToken()); + } + totalValidCount += tokenList.size(); + BPushDeviceDataSet dataSet = new BPushDeviceDataSet(tokenList, page + "", taskId); + //鏈�鍚庝竴椤� + if (page == totalPage - 1 && totalValidCount != count) { + //淇敼鎬绘暟 + pushExcuteResultManager.setDeviceCount(result.getId(), totalValidCount); + } + CMQManager.getInstance().addToPushQueue(result.getPushPlatform(), dataSet); + } + logger.info("鍔犲叆鎺ㄩ�侀槦鍒�#浠诲姟Id:{}#骞冲彴:{}#鎺ㄩ�佹暟閲�:{}", task.getId(), result.getPushPlatform().name(), count); + } + + if (!hasDevice) { updateState(taskId, BPushTask.STATE_FINSIH, "娌℃湁婊¤冻鏉′欢鐨勫彲鎺ㄩ�佽澶�"); } - + //娌℃湁鍙帹閫佺殑璁惧 logger.info("鍚姩鎺ㄩ�佺粨鏉�#taskId:{}", task.getId()); } -- Gitblit v1.8.0