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