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/PushApplication.java | 69 +++++++++++++++++++++++++++++++++- 1 files changed, 66 insertions(+), 3 deletions(-) diff --git a/service-push/src/main/java/com/ks/push/PushApplication.java b/service-push/src/main/java/com/ks/push/PushApplication.java index 1c667a0..cd08764 100644 --- a/service-push/src/main/java/com/ks/push/PushApplication.java +++ b/service-push/src/main/java/com/ks/push/PushApplication.java @@ -1,25 +1,88 @@ package com.ks.push; +import com.ks.push.consumer.mq.PushTaskConsumer; +import com.ks.push.dto.mq.InvalidDeviceTokenInfo; +import com.ks.push.manager.CMQManager; +import com.ks.push.manager.PushDeviceTokenManager; +import com.ks.push.pojo.DO.BPushDeviceToken; +import com.ks.push.pojo.DO.PushPlatform; import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; import org.mybatis.spring.annotation.MapperScan; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; +import org.springframework.context.ApplicationListener; +import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.transaction.annotation.EnableTransactionManagement; +import org.yeshi.utils.mq.JobThreadExecutorServiceImpl; + +import javax.annotation.Resource; +import java.util.List; @SpringBootApplication @EnableTransactionManagement @MapperScan(basePackages = "com.ks.push.mapper") @EnableDubbo(scanBasePackages = "com.ks.push.service.remote") -public class PushApplication { +public class PushApplication implements ApplicationListener<ContextRefreshedEvent> { private final static Logger logger = LoggerFactory.getLogger(PushApplication.class); + + @Resource + private PushTaskConsumer pushTaskConsumer; + + @Resource + private PushDeviceTokenManager pushDeviceTokenManager; public static void main(String[] args) { SpringApplication.run(PushApplication.class, args); logger.info("搴旂敤鍚姩鎴愬姛"); } + + @Override + public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) { + logger.info("瀹瑰櫒鍔犺浇瀹屾瘯"); + initMQMsgConsumer(); + } + + private void initMQMsgConsumer() { + final int THREAD_NUM = 3; + for (PushPlatform pushPlatform : PushPlatform.values()) { + //鍒涘缓涓夋潯闃熷垪澶勭悊 + for (int i = 0; i < THREAD_NUM; i++) { + new JobThreadExecutorServiceImpl().run(new Runnable() { + @Override + public void run() { + pushTaskConsumer.consumeMsg(pushPlatform); + } + }); + } + } + //娓呯悊鏃犳晥token + new JobThreadExecutorServiceImpl().run(new Runnable() { + @Override + public void run() { + try { + List<CMQManager.MQMsgConsumeResult> list = CMQManager.getInstance().consumeInvalidDeviceTokenQueue(16); + if (list != null) { + logger.info("娓呯悊鏃犳晥token鏁伴噺锛�" + list.size()); + for (CMQManager.MQMsgConsumeResult result : list) { + InvalidDeviceTokenInfo tokenInfo = (InvalidDeviceTokenInfo) result.getData(); + List<BPushDeviceToken> tokenList = pushDeviceTokenManager.list(tokenInfo.getAppCode(), tokenInfo.getPushPlatform(), tokenInfo.getToken(), 1, 20); + if (tokenList != null) { + for (BPushDeviceToken token : tokenList) { + logger.info("娓呯悊鏃犳晥token id-{}" + token.getId()); + //鍒犻櫎 + pushDeviceTokenManager.deleteByPrimaryKey(token.getId()); + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + } + } -- Gitblit v1.8.0