Ver Fonte

北向-增加MQ相关依赖配置

jingyuanchao há 1 ano atrás
pai
commit
5502c14e70

+ 4 - 16
soc-modules/soc-modules-mediator/pom.xml

@@ -79,25 +79,13 @@
             <version>${soc.version}</version>
         </dependency>
 
-        <!-- freemarker -->
         <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-freemarker</artifactId>
-            <version>${freemarker.version}</version>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
+            <version>3.0.1.RELEASE</version>
         </dependency>
 
-        <!--代码生成器包-->
-        <dependency>
-            <groupId>com.baomidou</groupId>
-            <artifactId>mybatis-plus-generator</artifactId>
-            <version>${generator.version}</version>
-            <exclusions>
-                <exclusion>
-                    <artifactId>mybatis-plus-extension</artifactId>
-                    <groupId>com.baomidou</groupId>
-                </exclusion>
-            </exclusions>
-        </dependency>
+
         <!--lombok-->
         <dependency>
             <groupId>org.projectlombok</groupId>

+ 5 - 2
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/controller/VideoDataController.java

@@ -2,11 +2,13 @@ package com.xunmei.mediator.api.controller;
 
 import com.alibaba.fastjson.JSONArray;
 import com.xunmei.mediator.api.service.IVideoIntegrityCheckService;
+import com.xunmei.mediator.api.service.RabbitMsgIdService;
 import com.xunmei.mediator.domain.dto.protection.ReceiveErrorDto;
 import com.xunmei.mediator.domain.dto.videoIntegrityCheck.VideoIntegrityCheckDto;
 import com.xunmei.mediator.util.LogUtils;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -21,11 +23,12 @@ import javax.annotation.Resource;
 public class VideoDataController {
     @Resource
     private IVideoIntegrityCheckService videoIntegrityCheckService;
-
+    @Autowired
+    private RabbitMsgIdService rabbitMsgIdService;
     @ApiOperation("录像完整性检查")
     @PostMapping({"/api/{branchId}/video/complete"})
     public ReceiveErrorDto complete(@PathVariable String branchId, String msgId, @RequestBody VideoIntegrityCheckDto videoIntegrityCheckDto) {
-      //  rabbitMsgIdService.sendMsgId(msgId,"/video/complete","录像完整性检查");
+        rabbitMsgIdService.sendMsgId(msgId,"/video/complete","录像完整性检查");
 
         LogUtils.STATUS_INFO_VIDEO_COMPLETE.info("【北向接口-{}】【branchId:{}】【msgId:{}】【接收参数:{}】", "录像完整性检查:/api/video/complete", branchId, msgId, JSONArray.toJSONString(videoIntegrityCheckDto));
         ReceiveErrorDto result = ReceiveErrorDto.success();

+ 1 - 1
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/mapper/NorthErrorMapper.java

@@ -1,7 +1,7 @@
 package com.xunmei.mediator.api.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.xunmei.mediator.domain.dto.error.NorthError;
+import com.xunmei.mediator.domain.dto.north.NorthError;
 
 /**
  * @author jingyuanchao

+ 19 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/mapper/NorthMsgIdMapper.java

@@ -0,0 +1,19 @@
+package com.xunmei.mediator.api.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xunmei.mediator.domain.dto.north.NorthMsgId;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author gaoxiong
+ * @since 2022-10-14
+ */
+
+@Mapper
+public interface NorthMsgIdMapper extends BaseMapper<NorthMsgId> {
+
+}

+ 17 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/INorthMsgIdService.java

@@ -0,0 +1,17 @@
+package com.xunmei.mediator.api.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.mediator.domain.dto.north.NorthMsgId;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author gaoxiong
+ * @since 2022-10-14
+ */
+public interface INorthMsgIdService extends IService<NorthMsgId> {
+
+}

+ 1 - 1
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/NorthErrorService.java

@@ -1,7 +1,7 @@
 package com.xunmei.mediator.api.service;
 
 
-import com.xunmei.mediator.domain.dto.error.NorthError;
+import com.xunmei.mediator.domain.dto.north.NorthError;
 
 import java.util.List;
 

+ 89 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/RabbitMsgIdService.java

@@ -0,0 +1,89 @@
+package com.xunmei.mediator.api.service;
+
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.JSON;
+import com.rabbitmq.client.Channel;
+import com.xunmei.mediator.domain.dto.north.NorthMsgId;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.core.AmqpTemplate;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.io.IOException;
+import java.util.Date;
+
+@Service
+@Slf4j
+@EnableAsync
+public class RabbitMsgIdService {
+
+    public static final String QUEUE = "msg_id_brand_id_1.v1";
+
+    /**
+     * 创建消息队列
+     **/
+    @Bean
+    public org.springframework.amqp.core.Queue getQueue() {
+        return new org.springframework.amqp.core.Queue(QUEUE);
+    }
+
+    /**
+     * rabbitmq服务
+     */
+    @Autowired
+    private AmqpTemplate rabbitTemplate;
+
+    @Autowired
+    private INorthMsgIdService northMsgIdService;
+
+    /**
+     * 给mq发送消息
+     *
+     * @param msgId
+     * @param interfacePath
+     * @param interfaceName
+     */
+    @Async("asyncExecutor_list")
+    public void sendMsgId(String msgId, String interfacePath, String interfaceName) {
+        Date date = new Date();
+        String format = DateUtil.format(date, "yyyy-MM-dd");
+        NorthMsgId msg = new NorthMsgId();
+        msg.setMsgId(msgId);
+        msg.setInterfaceName(interfaceName);
+        msg.setInterfacePath(interfacePath);
+        msg.setYmd(format);
+        msg.setMsgDate(date);
+        log.info("发送消息:{}", JSON.toJSON(msg));
+        this.rabbitTemplate.convertAndSend(QUEUE, msg);
+    }
+
+
+    /**
+     * 通过监听的方式接收消息(注意这里方法是 final ,因为Spring开启代码,如果不设置final 会报异常)
+     *
+     * @param message 未折封的消息对象(非必需要)
+     */
+    @RabbitListener(queues = QUEUE)
+    @Transactional(rollbackFor = Exception.class)
+    public void processss(Message message, Channel channel) throws IOException {
+        try {
+            channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        String content = new String(message.getBody());
+        try {
+            NorthMsgId northMsgId = JSON.parseObject(content, NorthMsgId.class);
+            northMsgIdService.saveOrUpdate(northMsgId);
+        } catch (Exception e) {
+            log.error("消费失败原因:主键重复");
+        }
+    }
+
+}

+ 1 - 1
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/NorthErrorServiceImpl.java

@@ -3,7 +3,7 @@ package com.xunmei.mediator.api.service.impl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.mediator.api.mapper.NorthErrorMapper;
 import com.xunmei.mediator.api.service.NorthErrorService;
-import com.xunmei.mediator.domain.dto.error.NorthError;
+import com.xunmei.mediator.domain.dto.north.NorthError;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;

+ 20 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/NorthMsgIdServiceImpl.java

@@ -0,0 +1,20 @@
+package com.xunmei.mediator.api.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.mediator.api.mapper.NorthMsgIdMapper;
+import com.xunmei.mediator.api.service.INorthMsgIdService;
+import com.xunmei.mediator.domain.dto.north.NorthMsgId;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author gaoxiong
+ * @since 2022-10-14
+ */
+@Service
+public class NorthMsgIdServiceImpl extends ServiceImpl<NorthMsgIdMapper, NorthMsgId> implements INorthMsgIdService {
+
+}

+ 1 - 1
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/VideoIntegrityCheckServiceImpl.java

@@ -13,7 +13,7 @@ import com.xunmei.mediator.api.mapper.VideoIntegrityCheckMapper;
 import com.xunmei.mediator.api.service.IVideoDaysCheckService;
 import com.xunmei.mediator.api.service.IVideoIntegrityCheckService;
 import com.xunmei.mediator.api.service.NorthErrorService;
-import com.xunmei.mediator.domain.dto.error.NorthError;
+import com.xunmei.mediator.domain.dto.north.NorthError;
 import com.xunmei.mediator.domain.dto.protection.ReceiveErrorDto;
 import com.xunmei.mediator.domain.dto.redis.RedisKey;
 import com.xunmei.mediator.domain.dto.videoIntegrityCheck.VideoIntegrityCheckDto;

+ 1 - 1
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/domain/dto/error/NorthError.java → soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/domain/dto/north/NorthError.java

@@ -1,4 +1,4 @@
-package com.xunmei.mediator.domain.dto.error;
+package com.xunmei.mediator.domain.dto.north;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.annotation.IdType;

+ 46 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/domain/dto/north/NorthMsgId.java

@@ -0,0 +1,46 @@
+package com.xunmei.mediator.domain.dto.north;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author gaoxiong
+ * @since 2022-10-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("mediator_north_msg_id")
+@ApiModel(value="NorthMsgId对象", description="")
+public class NorthMsgId implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "用msgId作为主键")
+    @TableId(value = "msg_id", type = IdType.INPUT)
+    private String msgId;
+
+    private String interfacePath;
+
+    private String interfaceName;
+
+    private Date msgDate;
+
+    @ApiModelProperty(value = "年月日")
+    private String ymd;
+
+
+}