Browse Source

【feat】广播形式 同步注册设备信息

chengjing 2 years ago
parent
commit
a353533e10

+ 8 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/dao/repo/EartagDeviceRegisterRepo.java

@@ -1,10 +1,14 @@
 package com.huimv.eartag2.common.dao.repo;
 
 import com.huimv.eartag2.common.dao.entity.EartagDeviceRegisterEntity;
+import org.hibernate.annotations.SQLInsert;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;
 
+import java.sql.Date;
+import java.sql.Timestamp;
+import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 public interface EartagDeviceRegisterRepo extends JpaRepository<EartagDeviceRegisterEntity, Integer>, JpaSpecificationExecutor<EartagDeviceRegisterEntity> {
@@ -29,4 +33,8 @@ public interface EartagDeviceRegisterRepo extends JpaRepository<EartagDeviceRegi
 
     @Query(nativeQuery = true,value = "SELECT * FROM eartag_device_register WHERE chip_id=?1")
     EartagDeviceRegisterEntity getByChipId(String chipId);
+
+    @Query(nativeQuery = true, value = "INSERT INTO eartag_device_register(deviceCode,chipId,farmCode,farmName,registerDate) values (?,?,?,?,?)")
+    Boolean fanoutSyncRegisterDevice(String deviceCode, String chipId, String farmCode, String farmName, Timestamp registerDate);
+
 }

+ 6 - 0
huimv-eartag2-platform/huimv-eartag2-common/src/main/java/com/huimv/eartag2/common/mq/Const.java

@@ -50,4 +50,10 @@ public class Const {
     public final static String QUEUE_SYNC_DEVICE_TOTAL = "topic.syncDeviceTotal.queue";
     public final static String EXCHANGE_SYNC_DEVICE_TOTAL = "topic.syncDeviceTotal.exchange";
     public final static String ROUTING_KEY_SYNC_DEVICE_TOTAL = "topic.syncDeviceTotal.routeKey";
+
+    /**
+     * 广播形式 同步注册设备信息
+     */
+    public final static String QUEUE_SYNC_DEVICE_FANOUT="fanout.syncDevice.queue";
+    public final static String EXCHANGE_SYNC_DEVICE_FANOUT="fanout.syncDevice.exchange";
 }

+ 40 - 0
huimv-eartag2-platform/huimv-eartag2-input/src/main/java/com/huimv/eartag2/config/FanoutRabbitMQConfig.java

@@ -0,0 +1,40 @@
+package com.huimv.eartag2.config;
+
+import com.huimv.eartag2.common.mq.Const;
+import org.springframework.amqp.core.Binding;
+import org.springframework.amqp.core.BindingBuilder;
+import org.springframework.amqp.core.FanoutExchange;
+import org.springframework.amqp.core.Queue;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 广播消息传输配置
+ *
+ * @author 静静
+ * @since 2022-07-8
+ */
+@Configuration
+public class FanoutRabbitMQConfig {
+    /**
+     *  广播同步注册设备信息队列
+     */
+    @Bean
+    public Queue fanoutSyncDeviceQueue() {
+        return new Queue(Const.QUEUE_SYNC_DEVICE_FANOUT);
+    }
+
+    /**
+     * 广播同步注册设备信息交换机
+     */
+    @Bean
+    FanoutExchange fanoutSyncDeviceExchange() {
+        return new FanoutExchange(Const.EXCHANGE_SYNC_DEVICE_FANOUT);
+    }
+
+    @Bean
+    Binding fanoutBindingSyncDeviceExchangeMessage(){
+        return BindingBuilder.bind(fanoutSyncDeviceQueue()).to(fanoutSyncDeviceExchange());
+    }
+
+}

+ 35 - 0
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/listener/ManageListener.java

@@ -0,0 +1,35 @@
+package com.huimv.eartag2.manage.listener;
+
+import com.huimv.eartag2.common.mq.Const;
+import com.huimv.eartag2.manage.service.IDeviceRegisterService;
+import com.huimv.eartag2.manage.service.IDeviceService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.rabbit.annotation.RabbitHandler;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.util.Map;
+
+/**
+ * 监听队列消息
+ *
+ * @author 静静
+ * @since 2022-07-8
+ */
+@Component
+@Slf4j
+public class ManageListener {
+
+    @Autowired
+    private IDeviceRegisterService IDeviceRegisterService;
+
+    @RabbitListener(queues = Const.QUEUE_SYNC_DEVICE_FANOUT)
+    @RabbitHandler
+    public void processSyncDeviceRegister(Map<String,String> map) throws ParseException {
+        System.out.println("---------------收到消息");
+        IDeviceRegisterService.fanoutSyncDevice(map);
+    }
+
+}

+ 3 - 0
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/IDeviceRegisterService.java

@@ -3,6 +3,7 @@ package com.huimv.eartag2.manage.service;
 import com.huimv.eartag2.common.utils.Result;
 
 import java.text.ParseException;
+import java.util.Map;
 
 public interface IDeviceRegisterService {
     //添加设备
@@ -22,4 +23,6 @@ public interface IDeviceRegisterService {
 
     //注销设备
     Result setDeviceStatus(Integer id, Integer deviceStatus) throws ParseException;
+
+    void fanoutSyncDevice(Map<String,String> map) throws ParseException;
 }

+ 1 - 0
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/IDeviceService.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.huimv.eartag2.common.utils.Result;
 
 import java.text.ParseException;
+import java.util.Map;
 
 public interface IDeviceService {
     //

+ 16 - 0
huimv-eartag2-platform/huimv-eartag2-manage/src/main/java/com/huimv/eartag2/manage/service/impl/DeviceRegisterServiceImpl.java

@@ -24,6 +24,7 @@ import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Project : huimv.shiwan
@@ -311,4 +312,19 @@ public class DeviceRegisterServiceImpl implements IDeviceRegisterService {
         System.out.println("list.toString()>>"+list.toString());
         cacheService.putAllDeviceSet(list);
     }
+
+    @Override
+    public void fanoutSyncDevice(Map<String,String> map) throws ParseException {
+        if ( "101".equals(map.get("farmCode"))){
+            //说明消息中的数据是该业务平台的,进行数据持久化
+            String deviceCode = map.get("deviceCode");
+            String chipId = map.get("chipId");
+            String farmCode = map.get("farmCode");
+            String farmName = map.get("farmName");
+
+            DateUtil dateUtil = new DateUtil();
+            Timestamp timestamp = dateUtil.getTimestamp();
+            deviceRegisterRepo.fanoutSyncRegisterDevice(deviceCode,chipId,farmCode,farmName,timestamp);
+        }
+    }
 }

+ 2 - 2
huimv-eartag2-platform/huimv-eartag2-manage/src/main/resources/application-dev.yml

@@ -80,12 +80,12 @@ spring:
 #    open-in-view: true
 
   rabbitmq:
-    host: 192.168.1.170
+    host: 121.36.134.218
     port: 5672
     username: admin
     password: admin
     #虚拟host 可以不设置,使用server默认host
-    virtual-host: /
+    virtual-host: /registration_center
     listener:
       simple:
         acknowledge-mode: none

+ 8 - 8
huimv-eartag2-platform/huimv-eartag2-manage/src/main/resources/application.properties

@@ -1,10 +1,10 @@
 #spring.profiles.active=dev
-spring.profiles.active=prod2
+spring.profiles.active=dev
 
 # mysql:/cache:
 device.online.access_mode=mysql
 
-# 添加机器和设备过期时间
+# ��ӻ������豸����ʱ��
 cache.chipIdExpire=48
 
 #
@@ -12,16 +12,16 @@ service.farmAllStatus.url=/deviceController/updateFarmAllStatus
 service.farmAllStatus.host=192.168.1.68
 service.farmAllStatus.ip=8092
 
-###################################################配置undertow取代tomcat
-# 是否打开 undertow 日志,默认为 false
+###################################################锟斤拷锟斤拷undertow取锟斤拷tomcat
+# �Ƿ�� undertow ��־��Ĭ��Ϊ false
 server.undertow.accesslog.enabled=false
-# 设置访问日志所在目录
+# 锟斤拷锟矫凤拷锟斤拷锟斤拷志锟斤拷锟斤拷目录
 server.undertow.accesslog.dir=logs
-# 指定工作者线程的 I/0 线程数,默认为 2 或者 CPU 的个数
+# 指锟斤拷锟斤拷锟斤拷锟斤拷锟竭程碉拷 I/0 锟竭筹拷锟斤拷锟斤拷默锟斤拷为 2 锟斤拷锟斤拷 CPU 锟侥革拷锟斤拷
 server.undertow.io-threads=
-# 指定工作者线程个数,默认为 I/O 线程个数的 8 倍
+# 指锟斤拷锟斤拷锟斤拷锟斤拷锟竭程革拷锟斤拷锟斤拷默锟斤拷为 I/O 锟竭程革拷锟斤拷锟斤拷 8 锟斤拷
 server.undertow.worker-threads=
-# 设置 HTTP POST 内容的最大长度,默认不做限制
+# ���� HTTP POST ���ݵ���󳤶ȣ�Ĭ�ϲ�������
 server.undertow.max-http-post-size=0