Browse Source

【feat】 消息成功确认

523096025 2 năm trước cách đây
mục cha
commit
0f8e744586

+ 13 - 1
huimv-eartag2-platform/huimv-eartag2-eartag/src/main/java/com/huimv/eartag2/eartag/service/impl/EartagServiceImpl.java

@@ -1,5 +1,6 @@
 package com.huimv.eartag2.eartag.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.huimv.eartag2.common.dao.entity.*;
 import com.huimv.eartag2.common.dao.repo.*;
@@ -389,6 +390,14 @@ public class EartagServiceImpl implements IEartagService {
 //        Map maxAndMinMap = getMaxAndMinEartemp(farmCode);
         Map maxAndMinMap = getMaxAndMin2(farmCode, "eartagMaxTem", "eartagMinTem");
         System.out.println("maxAndMinMap>>>>>>>>>>>>>>>>>>>>>>>>>>>"+maxAndMinMap.toString());
+        if (! (maxAndMinMap.get("eartagMaxTem" ) instanceof Integer)){
+            return;
+        }
+        if (! (maxAndMinMap.get("eartagMinTem" ) instanceof Integer)){
+            return;
+        }
+        System.out.println(ObjectUtil.isEmpty(maxAndMinMap.get("eartagMaxTem")));
+        System.out.println(ObjectUtil.isEmpty(maxAndMinMap.get("eartagMinTem")));
         BigDecimal configMaxTempBd = new BigDecimal(maxAndMinMap.get("eartagMaxTem").toString());
         BigDecimal configMinTempBd = new BigDecimal(maxAndMinMap.get("eartagMinTem").toString());
         BigDecimal earTemp1Bd = new BigDecimal(dataJo.getString("earTemp1"));
@@ -1302,10 +1311,12 @@ public class EartagServiceImpl implements IEartagService {
         Integer activeStatus = 1;
         Integer liveStatus = 1;        //
         EartagEartagRegister2Entity eartagRegisterEntity = eartagEartagRegister2EntityRepo.getOneByEarmark2(earmark);
+        System.out.println("earmark--> " + earmark);
         if (eartagRegisterEntity == null) {
             //{新建耳标注册信息}
             newEartagRegister2(earmark, nowTimestamp, deviceCode, registerType, activeStatus, liveStatus, bat, todayDate, farmId, eartagJo, stageCode, stageName, pigpenId, pigpenName, unitId, unitName, deviceRegisterEntity);
         } else {
+
             eartagRegisterEntity.setLastTime(nowTimestamp);
             eartagRegisterEntity.setLastDevice(deviceCode);
             eartagRegisterEntity.setActiveStatus(activeStatus);
@@ -1318,13 +1329,14 @@ public class EartagServiceImpl implements IEartagService {
             eartagRegisterEntity.setStageCode(stageCode);
             eartagRegisterEntity.setStageName(stageName);
             eartagRegisterEntity.setEarTemp1(eartagJo.getFloat("earTemp1"));
-            eartagRegisterEntity.setEnvTemp1(eartagJo.getFloat("envTemp1"));
+//            eartagRegisterEntity.setEnvTemp1(eartagJo.getFloat("envTemp1"));
             eartagRegisterEntity.setAct(Long.parseLong(eartagJo.getString("act1")));
             eartagRegisterEntity.setSignal1(Integer.parseInt(eartagJo.getString("signal")));
             eartagRegisterEntity.setAskTime(getAskTime(eartagJo.getString("askTime")));
             eartagRegisterEntity.setOther(eartagJo.getString("other"));
             eartagRegisterEntity.setFarmId(farmId);
             eartagRegisterEntity.setLiveStatus(1);
+            System.out.println("开始更新--> " + eartagRegisterEntity);
             eartagEartagRegister2EntityRepo.saveAndFlush(eartagRegisterEntity);
             //更新耳标注册消息缓存
             cacheService.putEartagRegister(earmark, eartagRegisterEntity);

+ 20 - 0
huimv-eartag2-platform/huimv-eartag2-input/src/main/java/com/huimv/eartag2/server/MsgSendConfirmCallBack.java

@@ -0,0 +1,20 @@
+package com.huimv.eartag2.server;
+
+import com.sun.istack.Nullable;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.rabbit.connection.CorrelationData;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+
+@Slf4j
+public class MsgSendConfirmCallBack implements RabbitTemplate.ConfirmCallback {
+    @Override
+    public void confirm(@Nullable CorrelationData correlationData, boolean ack, @Nullable String cause) {
+        log.info("MsgSendConfirmCallBack , 回调id: {}", correlationData);
+
+        if(ack) {
+            log.info("消息发送成功");
+        } else {
+            log.info("消息发送失败: {}", cause);
+        }
+    }
+}

+ 14 - 2
huimv-eartag2-platform/huimv-eartag2-input/src/main/java/com/huimv/eartag2/service/impl/DataServiceImpl.java

@@ -8,6 +8,7 @@ import com.huimv.eartag2.common.mq.Const;
 import com.huimv.eartag2.common.utils.BizConst;
 import com.huimv.eartag2.common.utils.FileUtil;
 import com.huimv.eartag2.producer.Producer;
+import com.huimv.eartag2.server.MsgSendConfirmCallBack;
 import com.huimv.eartag2.service.ICacheService;
 import com.huimv.eartag2.service.IDataService;
 import com.huimv.eartag2.service.IDeviceService;
@@ -16,6 +17,8 @@ import com.huimv.eartag2.utils.DateUtil2;
 import com.huimv.eartag2.utils.RegexUtil;
 import io.netty.channel.ChannelHandlerContext;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.AmqpTimeoutException;
+import org.springframework.amqp.rabbit.connection.CorrelationData;
 import org.springframework.amqp.rabbit.core.RabbitTemplate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
@@ -289,8 +292,17 @@ public class DataServiceImpl implements IDataService {
 
     @Override
     public void sendEartagMQ(Map map) throws IOException, ParseException {
-        //发送到耳标处理消息队列
-        rabbitTemplate.convertAndSend(Const.EXCHANGE_ASK_EARTAG, Const.ROUTING_KEY_ASK_EARTAG, map);
+        try {
+            rabbitTemplate.setConfirmCallback(new MsgSendConfirmCallBack());
+
+            CorrelationData correlationData = new CorrelationData();
+            log.info("开始发送消息");
+            correlationData.setId("100");
+            //发送到耳标处理消息队列
+            rabbitTemplate.convertAndSend(Const.EXCHANGE_ASK_EARTAG, Const.ROUTING_KEY_ASK_EARTAG, map);
+        } catch (AmqpTimeoutException e) {
+            log.error("met timeout exception: ", e);
+        }
     }