java110 лет назад: 4
Родитель
Сommit
225fa71220

+ 42 - 0
service-job/src/main/java/com/java110/job/task/wechat/PushWechatTemplateMessageThread.java

@@ -0,0 +1,42 @@
+package com.java110.job.task.wechat;
+
+import com.java110.core.log.LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.concurrent.Callable;
+
+/**
+ * 微信发送模板消息 线程
+ */
+public class PushWechatTemplateMessageThread implements Callable {
+
+    private static Logger logger = LoggerFactory.getLogger(PushWechatTemplateMessageThread.class);
+
+
+    private RestTemplate outRestTemplate;
+
+    private String url;
+
+    private String reqParam;
+
+    private ResponseEntity<String> responseEntity;
+
+    public PushWechatTemplateMessageThread() {
+    }
+
+    public PushWechatTemplateMessageThread(RestTemplate outRestTemplate, String url, String reqParam) {
+        this.outRestTemplate = outRestTemplate;
+        this.url = url;
+        this.reqParam = reqParam;
+    }
+
+    @Override
+    public Object call() throws Exception {
+        logger.debug("开始发送消息 url:{},param:{}", this.url, this.reqParam);
+        responseEntity = outRestTemplate.postForEntity(this.url, this.reqParam, String.class);
+        logger.debug("发送完成 结果:{}", responseEntity);
+        return null;
+    }
+}

+ 18 - 2
service-job/src/main/java/com/java110/job/task/wechat/WeChatPushMessageTemplate.java

@@ -5,8 +5,10 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.core.annotation.Java110Synchronized;
 import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.core.factory.Java110ThreadPoolFactory;
 import com.java110.core.factory.WechatFactory;
 import com.java110.core.smo.ISaveTransactionLogSMO;
+import com.java110.core.trace.Java110TraceFactory;
 import com.java110.dto.RoomDto;
 import com.java110.dto.app.AppDto;
 import com.java110.dto.community.CommunityDto;
@@ -58,6 +60,8 @@ public class WeChatPushMessageTemplate extends TaskSystemQuartz {
 
     private static Logger logger = LoggerFactory.getLogger(WeChatPushMessageTemplate.class);
 
+    public static final int DEFAULT_THREAD_NUM = 20;
+
     @Autowired
     private INoticeInnerServiceSMO noticeInnerServiceSMOImpl;
 
@@ -89,11 +93,16 @@ public class WeChatPushMessageTemplate extends TaskSystemQuartz {
     private static String sendMsgUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=";
     private static String getUser = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN";
 
+    private Java110ThreadPoolFactory<PublicWeChatPushMessageTemplate> publicWeChatPushMessageTemplateJava110ThreadPoolFactory = null;
+
 
     @Override
     protected void process(TaskDto taskDto) {
         logger.debug("开始执行微信模板信息推送" + taskDto.toString());
 
+        //创建连接池
+        publicWeChatPushMessageTemplateJava110ThreadPoolFactory = Java110ThreadPoolFactory.getInstance().createThreadPool(DEFAULT_THREAD_NUM);
+
         // 获取小区
         List<CommunityDto> communityDtos = getAllCommunity();
 
@@ -109,6 +118,8 @@ public class WeChatPushMessageTemplate extends TaskSystemQuartz {
                 logger.error("推送消息失败", e);
             }
         }
+
+        publicWeChatPushMessageTemplateJava110ThreadPoolFactory.stop();
     }
 
     private void publishMsg(TaskDto taskDto, CommunityDto communityDto) throws Exception {
@@ -339,7 +350,9 @@ public class WeChatPushMessageTemplate extends TaskSystemQuartz {
                 templateMessage.setData(data);
                 templateMessage.setUrl(wechatUrl + noticeDto.getNoticeId() + "&wAppId=" + weChatDto.getAppId()+"&communityId="+noticeDto.getCommunityId());
                 logger.info("发送模板消息内容:{}", JSON.toJSONString(templateMessage));
-                responseEntity = outRestTemplate.postForEntity(sendTemplate + accessToken, JSON.toJSONString(templateMessage), String.class);
+                //responseEntity = outRestTemplate.postForEntity(sendTemplate + accessToken, JSON.toJSONString(templateMessage), String.class);
+                PushWechatTemplateMessageThread pushWechatTemplateMessageThread = new PushWechatTemplateMessageThread(outRestTemplate,sendTemplate + accessToken, JSON.toJSONString(templateMessage));
+                publicWeChatPushMessageTemplateJava110ThreadPoolFactory.submit(pushWechatTemplateMessageThread);
                 logger.info("微信模板返回内容:{}", responseEntity);
             } catch (Exception e) {
                 LogSystemErrorPo logSystemErrorPo = new LogSystemErrorPo();
@@ -419,7 +432,10 @@ public class WeChatPushMessageTemplate extends TaskSystemQuartz {
                     }
                 }
                 logger.info("发送模板消息内容:{}", JSON.toJSONString(templateMessage));
-                responseEntity = outRestTemplate.postForEntity(sendTemplate + accessToken, JSON.toJSONString(templateMessage), String.class);
+
+                PushWechatTemplateMessageThread pushWechatTemplateMessageThread = new PushWechatTemplateMessageThread(outRestTemplate,sendTemplate + accessToken, JSON.toJSONString(templateMessage));
+                publicWeChatPushMessageTemplateJava110ThreadPoolFactory.submit(pushWechatTemplateMessageThread);
+                //responseEntity = outRestTemplate.postForEntity(sendTemplate + accessToken, JSON.toJSONString(templateMessage), String.class);
                 logger.info("微信模板返回内容:{}", responseEntity);
             } catch (Exception e) {
                 LogSystemErrorPo logSystemErrorPo = new LogSystemErrorPo();