From 6d51501ca93f5bf46759f851988650477cf32e6c Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期三, 12 六月 2024 18:02:45 +0800
Subject: [PATCH] 代码提交

---
 ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java |  137 +++++++++++++++++++--------------------------
 1 files changed, 58 insertions(+), 79 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/component/RabbitMqReceiver.java b/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
similarity index 66%
rename from ruoyi-admin/src/main/java/com/ruoyi/web/component/RabbitMqReceiver.java
rename to ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
index 58c5b8c..337498b 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/component/RabbitMqReceiver.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
@@ -3,32 +3,25 @@
 import com.alibaba.fastjson2.JSON;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.rabbitmq.client.Channel;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.enums.ServiceFromEnum;
 import com.ruoyi.common.utils.RSAPublicKeyExample;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.web.task.PhoneTask;
 import com.smartor.common.SendService;
-import com.smartor.config.PhoneUtils;
-import com.smartor.config.RabbitMqCallPhoneConfig;
 import com.smartor.config.RobotPhoneUtils;
 import com.smartor.domain.*;
 import com.smartor.mapper.IvrTaskMapper;
 import com.smartor.mapper.IvrTaskSingleMapper;
 import com.smartor.service.IIvrTaskTemplateService;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.amqp.core.Message;
-import org.springframework.amqp.rabbit.annotation.RabbitListener;
-import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
-import org.springframework.amqp.rabbit.connection.ConnectionFactory;
-import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
+import org.springframework.data.redis.connection.Message;
+import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
+import org.springframework.data.redis.listener.RedisMessageListenerContainer;
 import org.springframework.stereotype.Component;
 
-import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -38,7 +31,7 @@
 
 @Slf4j
 @Component//鐩戝惉姝ら槦鍒�
-public class RabbitMqReceiver {
+public class RedisMqReceiver extends KeyExpirationEventMessageListener {
 
     @Value("${phonePath}")
     private String phonePath;
@@ -59,56 +52,51 @@
 
     private static RedisCache redisCache;
 
-    private static RabbitMqCallPhoneConfig rabbitMqCallPhoneConfig;
-
     private static RobotPhoneUtils robotPhoneUtils;
 
 
     // 鍒涘缓鍥哄畾澶у皬鐨勭嚎绋嬫睜
     private static final ExecutorService executorService = Executors.newFixedThreadPool(10);
 
+    public RedisMqReceiver(RedisMessageListenerContainer listenerContainer) {
+        super(listenerContainer);
+    }
+
+
     @Autowired
     public void setIIvrTaskTemplateService(IIvrTaskTemplateService ivrTaskTemplateService) {
-        RabbitMqReceiver.ivrTaskTemplateService = ivrTaskTemplateService;
+        RedisMqReceiver.ivrTaskTemplateService = ivrTaskTemplateService;
     }
 
     @Autowired
     public void setRobotPhoneUtilsService(RobotPhoneUtils robotPhoneUtils) {
-        RabbitMqReceiver.robotPhoneUtils = robotPhoneUtils;
+        RedisMqReceiver.robotPhoneUtils = robotPhoneUtils;
     }
 
     @Autowired
     public void setSendService(SendService sendService) {
-        RabbitMqReceiver.sendService = sendService;
-    }
-
-    @Autowired
-    public void setRabbitMqCallPhoneConfig(RabbitMqCallPhoneConfig rabbitMqCallPhoneConfig) {
-        RabbitMqReceiver.rabbitMqCallPhoneConfig = rabbitMqCallPhoneConfig;
+        RedisMqReceiver.sendService = sendService;
     }
 
     @Autowired
     public void setIvrTaskcallMapper(IvrTaskSingleMapper ivrTaskcallMapper) {
-        RabbitMqReceiver.ivrTaskcallMapper = ivrTaskcallMapper;
+        RedisMqReceiver.ivrTaskcallMapper = ivrTaskcallMapper;
     }
 
     @Autowired
     public void setIvrTaskMapper(IvrTaskMapper ivrTaskMapper) {
-        RabbitMqReceiver.ivrTaskMapper = ivrTaskMapper;
+        RedisMqReceiver.ivrTaskMapper = ivrTaskMapper;
     }
 
     @Autowired
     public void setRedisCache(RedisCache redisCache) {
-        RabbitMqReceiver.redisCache = redisCache;
+        RedisMqReceiver.redisCache = redisCache;
     }
 
-    /**
-     * 浠诲姟闅忚
-     * concurrency = "50"  骞跺彂鏁颁负50
-     */
-    @RabbitListener(queues = "task_queue", concurrency = "50")
-    public void phoneVisit(String content, Message message, Channel channel) throws IOException {
-        System.out.println("娑堟伅杩涙潵浜�----------------");
+    @Override
+    public void onMessage(Message message, byte[] pattern) {
+        log.info("鐩戝惉Redis key杩囨湡锛宬ey锛歿}锛宑hannel锛歿}", message.toString(), new String(pattern));
+        String content = message.toString();
         IvrTaskcallMQ ivrTaskcallMQ = null;
         try {
             ObjectMapper mapper = new ObjectMapper();
@@ -125,13 +113,13 @@
             IvrTask ivrTask1 = ivrTaskMapper.selectIvrTaskByTaskid(ivrTaskcallMQ.getTaskid());
             if (ivrTask1.getStopState() != ivrTaskcallMQ.getStopState()) {
                 //灏嗘秷鎭粠闃熷垪涓墧闄�
-                channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
                 return;
             }
 
             if (StringUtils.isNotEmpty(ivrTaskcallMQ.getPreachform())) {
                 //濡備綍浠诲姟鍙戦�佹柟寮忎笉涓虹┖
                 String[] split = ivrTaskcallMQ.getPreachform().split(",");
+                System.out.println("split鐨勫�间负锛�" + split);
                 for (String serviceFrom : split) {
                     String descByCode = ServiceFromEnum.getDescByCode(Integer.valueOf(serviceFrom));
                     //杩欓噷鍙互鑰冭檻鐢ㄧ瓥鐣ユā寮忎紭鍖栦竴涓嬶紝涓嶇劧澶毦鐪嬩簡
@@ -153,7 +141,7 @@
                                 break;
                             }
                             //閫氳繃澶氱嚎绋嬬殑鏂瑰紡鍘绘墦鐢佃瘽
-                            executorService.submit(new PhoneTask(ivrTaskcall1, ivrTaskTemplateVO1, redisCache, rabbitMqCallPhoneConfig, message, sendService, phonePath, robotPhoneUtils));
+                            executorService.submit(new PhoneTask(ivrTaskcall1, ivrTaskTemplateVO1, redisCache, sendService, phonePath, robotPhoneUtils));
                         }
                     } else if (descByCode.equals("澶氬獟浣�")) {
                         //澶氬獟浣�
@@ -193,13 +181,12 @@
                         }
                     }
                     //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜�   锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛�
-                    channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
                 }
             }
         } catch (Exception e) {
             Integer integer = redisCache.getCacheObject(ivrTaskcallMQ.getTaskid().toString());
             if (integer != null && integer == 2) {
-                channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
+                //灏嗘秷鎭粠闃熷垪涓垹闄�
             } else if (integer == null) {
                 redisCache.setCacheObject(ivrTaskcallMQ.getTaskid().toString(), 1, 120, TimeUnit.MINUTES);
             } else {
@@ -208,53 +195,45 @@
 
             log.error("============娑堣垂澶辫触,灏濊瘯娑堟伅琛ュ彂鍐嶆娑堣垂!==============");
             log.error(e.getMessage());
-            channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);
+            redisCache.setCacheObject(message.toString(), message.toString(), 60, TimeUnit.SECONDS);
         }
 
     }
 
-    /**
-     * 鏈哄櫒浜虹涓�鍙ヨ瘽璇煶
-     * concurrency = "50"  骞跺彂鏁颁负50
-     */
-    @RabbitListener(queues = "ob_queue", concurrency = "50")
-    public void obVisit(String content, Message message, Channel channel) throws IOException {
-        try {
-            IvrTaskcallPhoneMQ ivrTaskcallMQ = null;
-            ObjectMapper mapper = new ObjectMapper();
-            ivrTaskcallMQ = mapper.readValue(content, IvrTaskcallPhoneMQ.class);
-            //鍒ゆ柇鎮h�呮槸鍚﹀凡缁忔帴鐢佃瘽
-            String str = redisCache.getCacheObject(ivrTaskcallMQ.getUuid() + "state_id");
-            System.out.println("-----------------" + str);
-            if (StringUtils.isNotEmpty(str) && str.equals("0")) {
-                //鎮h�呭凡缁忔帴鍚簡鐢佃瘽
-                new PhoneUtils().ttsPlayback(ivrTaskcallMQ.getScript(), ivrTaskcallMQ.getUuid());
-            } else if (StringUtils.isNotEmpty(str) && str.equals("-10")) {
-                //杩欎釜璇存槑,宸茬粡鎵撲簡鎸囧畾閬嶆暟杩樻槸娌℃湁浜烘帴锛屽彲浠ュ皢娑堟伅浠庨槦鍒椾腑绉婚櫎浜�
-                channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
-                return;
-            } else {
-                //杩涜闃熷垪灏鹃儴锛岃繘琛屼笅涓�娆℃牎楠�
-//                channel.basicRecover(false);
-                channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);
-                System.out.println("++++++++++++++++++++++" + str);
-                return;
-            }
-            //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜�   锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛�
-            channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
-        } catch (Exception e) {
-            log.error("============娑堣垂澶辫触,灏濊瘯娑堟伅琛ュ彂鍐嶆娑堣垂!==============");
-            log.error(e.getMessage());
-            channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);
-        }
-    }
+//    /**
+//     * 鏈哄櫒浜虹涓�鍙ヨ瘽璇煶
+//     * concurrency = "50"  骞跺彂鏁颁负50
+//     */
+//    @RabbitListener(queues = "ob_queue", concurrency = "50")
+//    public void obVisit(String content, Message message, Channel channel) throws IOException {
+//        try {
+//            IvrTaskcallPhoneMQ ivrTaskcallMQ = null;
+//            ObjectMapper mapper = new ObjectMapper();
+//            ivrTaskcallMQ = mapper.readValue(content, IvrTaskcallPhoneMQ.class);
+//            //鍒ゆ柇鎮h�呮槸鍚﹀凡缁忔帴鐢佃瘽
+//            String str = redisCache.getCacheObject(ivrTaskcallMQ.getUuid() + "state_id");
+//            System.out.println("-----------------" + str);
+//            if (StringUtils.isNotEmpty(str) && str.equals("0")) {
+//                //鎮h�呭凡缁忔帴鍚簡鐢佃瘽
+//                new PhoneUtils().ttsPlayback(ivrTaskcallMQ.getScript(), ivrTaskcallMQ.getUuid());
+//            } else if (StringUtils.isNotEmpty(str) && str.equals("-10")) {
+//                //杩欎釜璇存槑,宸茬粡鎵撲簡鎸囧畾閬嶆暟杩樻槸娌℃湁浜烘帴锛屽彲浠ュ皢娑堟伅浠庨槦鍒椾腑绉婚櫎浜�
+//                channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
+//                return;
+//            } else {
+//                //杩涜闃熷垪灏鹃儴锛岃繘琛屼笅涓�娆℃牎楠�
+////                channel.basicRecover(false);
+//                channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);
+//                System.out.println("++++++++++++++++++++++" + str);
+//                return;
+//            }
+//            //閫氱煡 MQ 娑堟伅宸茶鎺ユ敹,鍙互ACK(浠庨槦鍒椾腑鍒犻櫎)浜�   锛堣繖涓渶瑕佹牴鎹笟鍔″啀鍘诲鐞咥CK锛�
+//            channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
+//        } catch (Exception e) {
+//            log.error("============娑堣垂澶辫触,灏濊瘯娑堟伅琛ュ彂鍐嶆娑堣垂!==============");
+//            log.error(e.getMessage());
+//            channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);
+//        }
+//    }
 
-
-    @Bean
-    public SimpleRabbitListenerContainerFactory jsonContainerFactory(ConnectionFactory connectionFactory) {
-        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
-        factory.setConnectionFactory(connectionFactory);
-        factory.setMessageConverter(new Jackson2JsonMessageConverter());
-        return factory;
-    }
 }

--
Gitblit v1.9.3