From 30560b90cf2aed9b499f14cc00f7f3166e644e5e Mon Sep 17 00:00:00 2001 From: ywt <3471515127@qq.com> Date: Sun, 6 Oct 2024 15:17:28 +0800 Subject: [PATCH 01/11] =?UTF-8?q?feat():=20=E5=88=9B=E5=BB=BA=E5=AE=9E?= =?UTF-8?q?=E5=8A=9B=E6=95=B0=E9=87=8F=E3=80=81=E8=BD=A6=E8=BE=86=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E3=80=81=E8=BF=94=E5=9B=9E=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E7=A0=81=E3=80=81=E8=BD=A6=E8=BE=86=E9=89=B4=E6=9D=83=E7=9A=84?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E3=80=81=E8=BD=A6=E8=BE=86VIN=E5=AE=9E?= =?UTF-8?q?=E4=BD=93=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../VehicleConnectionController.java | 33 +++++++ .../gateway/aliyun/domain/AliInstance.java | 23 +++++ .../aliyun/domain/AliServerConfig.java | 42 +++++++++ .../gateway/aliyun/domain/ConnectWeight.java | 23 +++++ .../gateway/aliyun/domain/HttpStatus.java | 93 +++++++++++++++++++ .../gateway/aliyun/domain/ServerConfig.java | 51 ++++++++++ .../aliyun/domain/VehicleConnection.java | 30 ++++++ .../vehicle/gateway/aliyun/domain/VinIp.java | 23 +++++ .../domain/req/VehicleConnectionReq.java | 37 ++++++++ .../vehicle/gateway/aliyun/ecs/Sample.java | 3 - 10 files changed, 355 insertions(+), 3 deletions(-) create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/controller/VehicleConnectionController.java create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/AliInstance.java create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/AliServerConfig.java create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/ConnectWeight.java create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/HttpStatus.java create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/ServerConfig.java create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/VehicleConnection.java create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/VinIp.java create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/req/VehicleConnectionReq.java diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/controller/VehicleConnectionController.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/controller/VehicleConnectionController.java new file mode 100644 index 0000000..da4f9e4 --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/controller/VehicleConnectionController.java @@ -0,0 +1,33 @@ +package com.muyu.cloud.vehicle.gateway.aliyun.controller; + + +import com.alibaba.nacos.api.model.v2.Result; +import com.muyu.cloud.vehicle.gateway.aliyun.domain.req.VehicleConnectionReq; +import lombok.extern.log4j.Log4j2; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * + * 车辆连接控制器 + */ +@Log4j2 +@RestController +@RequestMapping +public class VehicleConnectionController { + + + /** + * 获取http连接的参数 + * @param vehicleConnectionReq + * @return + */ + @PostMapping("/receiveMsg/connect") + public Result receiveMsg(@RequestBody VehicleConnectionReq vehicleConnectionReq){ + log.info("=======>"+vehicleConnectionReq); + + return Result.success(); + } +} diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/AliInstance.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/AliInstance.java new file mode 100644 index 0000000..10ebe57 --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/AliInstance.java @@ -0,0 +1,23 @@ +package com.muyu.cloud.vehicle.gateway.aliyun.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AliInstance { + /** + * 实例ID + */ + private String instanceId; + /** + * 实例IP + */ + private String ipAddress; + /** + * 实例状态 + */ + private String status; +} diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/AliServerConfig.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/AliServerConfig.java new file mode 100644 index 0000000..e337c9a --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/AliServerConfig.java @@ -0,0 +1,42 @@ +package com.muyu.cloud.vehicle.gateway.aliyun.domain; + + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 创建实例的数量 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class AliServerConfig { + + /** + * 主键 + */ + private Long id; + /** + * 地域ID + */ + private String regionId; + /** + * 镜像ID + */ + private String imageId; + /** + * 实例规格 + */ + private String instanceType; + /** + * 安全组ID + */ + private String securityGroupId; + /** + * 虚拟交换机ID + */ + private String vSwitchId; +} diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/ConnectWeight.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/ConnectWeight.java new file mode 100644 index 0000000..32710bd --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/ConnectWeight.java @@ -0,0 +1,23 @@ +package com.muyu.cloud.vehicle.gateway.aliyun.domain; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 车辆服务器 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ConnectWeight { + /** + * 车辆服务器ID + */ + private String carServerId; + /** + * 权重值 + */ + private Integer weightValue; +} diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/HttpStatus.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/HttpStatus.java new file mode 100644 index 0000000..748ed18 --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/HttpStatus.java @@ -0,0 +1,93 @@ +package com.muyu.cloud.vehicle.gateway.aliyun.domain; + +/** + * 返回状态码 + */ +public class HttpStatus { + /** + * 操作成功 + */ + private static final int SUCCESS = 200; + + /** + * 对象创建成功 + */ + public static final int CREATED = 201; + + /** + * 请求已经被接受 + */ + public static final int ACCEPTED = 202; + + /** + * 操作已经执行成功 + */ + public static final int NO_CONTENT = 204; + + /** + * 资源已被修改 + */ + public static final int MOVED_PERM = 301; + + /** + * 重定向 + */ + public static final int SEE_OTHER = 303; + + /** + * 资源没有被修改 + */ + public static final int NOT_MODIFIED = 304; + + /** + * 参数列表错误(缺少,格式不匹配) + */ + public static final int BAD_REQUEST = 400; + + /** + * 未授权 + */ + public static final int UNAUTHORIZED = 401; + + /** + * 访问受限,授权过期 + */ + public static final int FORBIDDEN = 403; + + /** + * 资源,服务未找到 + */ + public static final int NOT_FOUND = 404; + + /** + * 不允许的http方法 + */ + public static final int BAD_METHOD = 405; + + /** + * 资源冲突,或者资源被锁 + */ + public static final int CONFLICT = 409; + + /** + * 不支持的数据,媒体类型 + */ + public static final int UNSUPPORTED_TYPE = 415; + + /** + * 系统内部错误 + */ + public static final int ERROR = 500; + + /** + * 接口未实现 + */ + public static final int NOT_IMPLEMENTED = 501; + + /** + * 系统警告消息 + */ + public static final int WARN = 601; + + +} diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/ServerConfig.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/ServerConfig.java new file mode 100644 index 0000000..0235433 --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/ServerConfig.java @@ -0,0 +1,51 @@ +package com.muyu.cloud.vehicle.gateway.aliyun.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +@TableName(value = "server_config") +public class ServerConfig { + + /** + * 主键 + */ + @TableId(value = "id",type = IdType.AUTO) + private Long id; + /** + * 租户id + */ + private String tenantId; + /** + * 主机地址 + */ + private String host; + /** + * 端口 + */ + private String port; + /** + * 负载的地址 + */ + private String url; + /** + * 默认MQTT地址 + */ + private String defaultMqttAddr; + /** + * 默认MQTT主题 + */ + private String defaultMqttTopic; + /** + * 默认MQTT QOS + */ + private Integer defaultMqttQos; +} diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/VehicleConnection.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/VehicleConnection.java new file mode 100644 index 0000000..0857767 --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/VehicleConnection.java @@ -0,0 +1,30 @@ +package com.muyu.cloud.vehicle.gateway.aliyun.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 车辆鉴权的参数 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class VehicleConnection { + /** + * 车辆VIN + */ + private String vehicleVin; + /** + * 时间戳 + */ + private String timestamp; + /** + * 用户名 + */ + private String userName; + /** + * 随机数 + */ + private String nonce; +} diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/VinIp.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/VinIp.java new file mode 100644 index 0000000..2960f8e --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/VinIp.java @@ -0,0 +1,23 @@ +package com.muyu.cloud.vehicle.gateway.aliyun.domain; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 车辆VIN + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class VinIp { + /** + * 车辆的vin + */ + String vin; + /** + * 车辆的ip + */ + String ip; +} diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/req/VehicleConnectionReq.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/req/VehicleConnectionReq.java new file mode 100644 index 0000000..e114d79 --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/req/VehicleConnectionReq.java @@ -0,0 +1,37 @@ +package com.muyu.cloud.vehicle.gateway.aliyun.domain.req; + + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 车辆获取链接地址 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class VehicleConnectionReq { + + /** + * 车辆vin + */ + private String vehicleVin; + + /** + * 时间戳 + */ + private String timestamp; + + /** + * 用户名 + */ + private String userName; + + /** + * 随机数 + */ + private String nonce; +} diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/ecs/Sample.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/ecs/Sample.java index 750ddbb..cbcf7b0 100644 --- a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/ecs/Sample.java +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/ecs/Sample.java @@ -27,9 +27,6 @@ import java.util.List; @Component public class Sample implements ApplicationRunner { - @Autowired - private StringRedisTemplate redisTemplate; - /** From 849d5328ac257d3482d646d4eec5548831f889ac Mon Sep 17 00:00:00 2001 From: ywt <3471515127@qq.com> Date: Sun, 6 Oct 2024 15:52:32 +0800 Subject: [PATCH 02/11] =?UTF-8?q?feat():=20=E8=8E=B7=E5=8F=96http=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E7=9A=84=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../VehicleConnectionController.java | 11 +- .../mapper/VehicleConnectionMapper.java | 9 ++ .../service/VehicleConnectionService.java | 12 ++ .../impl/VehicleConnectionServiceImpl.java | 21 ++++ .../gateway/config/RabbitmqConfig.java | 104 ++++++++++++++++++ .../vehicle/gateway/config/RedisConfig.java | 28 +++++ .../gateway/config/RestTemplateConfig.java | 43 ++++++++ .../mapper/VehicleConnectionMapper.xml | 14 +++ 8 files changed, 240 insertions(+), 2 deletions(-) create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/mapper/VehicleConnectionMapper.java create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/service/VehicleConnectionService.java create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/service/impl/VehicleConnectionServiceImpl.java create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/config/RabbitmqConfig.java create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/config/RedisConfig.java create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/config/RestTemplateConfig.java create mode 100644 cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/mapper/VehicleConnectionMapper.xml diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/controller/VehicleConnectionController.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/controller/VehicleConnectionController.java index da4f9e4..54e828b 100644 --- a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/controller/VehicleConnectionController.java +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/controller/VehicleConnectionController.java @@ -3,7 +3,10 @@ package com.muyu.cloud.vehicle.gateway.aliyun.controller; import com.alibaba.nacos.api.model.v2.Result; import com.muyu.cloud.vehicle.gateway.aliyun.domain.req.VehicleConnectionReq; +import com.muyu.cloud.vehicle.gateway.aliyun.service.VehicleConnectionService; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -15,9 +18,13 @@ import org.springframework.web.bind.annotation.RestController; */ @Log4j2 @RestController -@RequestMapping +@RequestMapping("/vehicleGateway") +@Tag(name = "连接车辆控制层") public class VehicleConnectionController { + @Autowired + private VehicleConnectionService vehicleConnectionService; + /** * 获取http连接的参数 @@ -27,7 +34,7 @@ public class VehicleConnectionController { @PostMapping("/receiveMsg/connect") public Result receiveMsg(@RequestBody VehicleConnectionReq vehicleConnectionReq){ log.info("=======>"+vehicleConnectionReq); - + vehicleConnectionService.getConnect(vehicleConnectionReq); return Result.success(); } } diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/mapper/VehicleConnectionMapper.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/mapper/VehicleConnectionMapper.java new file mode 100644 index 0000000..916480b --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/mapper/VehicleConnectionMapper.java @@ -0,0 +1,9 @@ +package com.muyu.cloud.vehicle.gateway.aliyun.mapper; + +import com.muyu.cloud.vehicle.gateway.aliyun.domain.req.VehicleConnectionReq; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface VehicleConnectionMapper { + void addConnect(VehicleConnectionReq vehicleConnectionReq); +} diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/service/VehicleConnectionService.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/service/VehicleConnectionService.java new file mode 100644 index 0000000..dfbf7cb --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/service/VehicleConnectionService.java @@ -0,0 +1,12 @@ +package com.muyu.cloud.vehicle.gateway.aliyun.service; + +import com.muyu.cloud.vehicle.gateway.aliyun.domain.req.VehicleConnectionReq; + +public interface VehicleConnectionService { + /** + * 获取连接 + * @param vehicleConnectionReq + */ + void getConnect(VehicleConnectionReq vehicleConnectionReq); + +} diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/service/impl/VehicleConnectionServiceImpl.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/service/impl/VehicleConnectionServiceImpl.java new file mode 100644 index 0000000..fac49dd --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/service/impl/VehicleConnectionServiceImpl.java @@ -0,0 +1,21 @@ +package com.muyu.cloud.vehicle.gateway.aliyun.service.impl; + +import com.muyu.cloud.vehicle.gateway.aliyun.domain.req.VehicleConnectionReq; +import com.muyu.cloud.vehicle.gateway.aliyun.mapper.VehicleConnectionMapper; +import com.muyu.cloud.vehicle.gateway.aliyun.service.VehicleConnectionService; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Log4j2 +@Service +public class VehicleConnectionServiceImpl implements VehicleConnectionService { + + @Autowired + private VehicleConnectionMapper vehicleConnectionMapper; + @Override + public void getConnect(VehicleConnectionReq vehicleConnectionReq) { + log.info("车辆连接请求:{}",vehicleConnectionReq.toString()); + vehicleConnectionMapper.addConnect(vehicleConnectionReq); + } +} diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/config/RabbitmqConfig.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/config/RabbitmqConfig.java new file mode 100644 index 0000000..b8e2048 --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/config/RabbitmqConfig.java @@ -0,0 +1,104 @@ +package com.muyu.cloud.vehicle.gateway.config; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.amqp.core.*; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.concurrent.Exchanger; + +/** + * rabbitmq配置类 + */ +@Configuration +public class RabbitmqConfig { + /** + * 日志 + */ + private static final Logger logger = LoggerFactory.getLogger(RabbitmqConfig.class); + /** + * 队列 + */ + private static final String QUEUE_INFORM_EMAIL = "queue_inform_email"; + /** + * 队列 + */ + private static final String QUEUE_INFORM_SMS = "queue_inform_sms"; + /** + * 交换机 + */ + private static final String EXCHANGE_TOPICS_INFORM = "exchange_topics_inform"; + /** + * 路由key + */ + private static final String ROUTINGKEY_EMAIL = "inform.#.email.#"; + /** + * 路由key + */ + private static final String ROUTINGKEY_SMS = "inform.#.sms.#"; + + /** + * 声明交换机,做持久化 + */ + @Bean(EXCHANGE_TOPICS_INFORM) + public Exchange exchangeTopicsInform() { + try{ + Exchange exchange = ExchangeBuilder.topicExchange(EXCHANGE_TOPICS_INFORM).durable(true).build(); + logger.info("创建的交换机为:{}",EXCHANGE_TOPICS_INFORM); + return exchange; + } catch (Exception e) { + logger.error("创建该:{} 交换机失败",EXCHANGE_TOPICS_INFORM,e); + throw e; + } + } + + /** + * 声明QUEUE_INFORM_EMAIL队列 + */ + @Bean(QUEUE_INFORM_EMAIL) + public Queue queueInformEmail() { + try{ + Queue queue = new Queue(QUEUE_INFORM_EMAIL); + logger.info("创建的队列为:{}",QUEUE_INFORM_EMAIL); + return queue; + } catch (Exception e) { + logger.error("创建该:{} 队列失败",QUEUE_INFORM_EMAIL,e); + throw e; + } + } + + /** + * 声明QUEUE_INFORM_SMS队列 + */ + @Bean(QUEUE_INFORM_SMS) + public Queue queueInformSms() { + try{ + Queue queue = new Queue(QUEUE_INFORM_SMS); + logger.info("创建的队列为:{}",QUEUE_INFORM_SMS); + return queue; + } catch (Exception e) { + logger.error("创建该:{} 队列失败",QUEUE_INFORM_SMS,e); + throw e; + } + } + + /** + * ROUTINGKEY_EMAIL队列绑定交换机,指定routingKey + */ + @Bean + public Binding bindingExchangeInformEmail(@Qualifier(QUEUE_INFORM_EMAIL)Queue queue, + @Qualifier(EXCHANGE_TOPICS_INFORM)Exchange exchange) { + return BindingBuilder.bind(queue).to(exchange).with(ROUTINGKEY_EMAIL).noargs(); + } + + /** + * ROUTINGKEY_SMS队列绑定交换机,指定routingKey + */ + @Bean + public Binding bindingExchangeInformSms(@Qualifier(QUEUE_INFORM_SMS)Queue queue, + @Qualifier(EXCHANGE_TOPICS_INFORM)Exchange exchange) { + return BindingBuilder.bind(queue).to(exchange).with(ROUTINGKEY_SMS).noargs(); + } +} diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/config/RedisConfig.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/config/RedisConfig.java new file mode 100644 index 0000000..5531036 --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/config/RedisConfig.java @@ -0,0 +1,28 @@ +package com.muyu.cloud.vehicle.gateway.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +/** + * Redis配置类 + */ +@Configuration +public class RedisConfig { + + @Bean + public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){ + RedisTemplate redisTemplate = new RedisTemplate<>(); + redisTemplate.setConnectionFactory(redisConnectionFactory); + + redisTemplate.setKeySerializer(new StringRedisSerializer()); + redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer(Object.class)); + + redisTemplate.setHashKeySerializer(new StringRedisSerializer()); + redisTemplate.setHashValueSerializer(new StringRedisSerializer()); + return redisTemplate; + } +} diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/config/RestTemplateConfig.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/config/RestTemplateConfig.java new file mode 100644 index 0000000..1d89c16 --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/config/RestTemplateConfig.java @@ -0,0 +1,43 @@ +package com.muyu.cloud.vehicle.gateway.config; + +import lombok.extern.log4j.Log4j2; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.client.ClientHttpRequestFactory; +import org.springframework.http.client.SimpleClientHttpRequestFactory; +import org.springframework.web.client.RestTemplate; + +/** + * rest配置类 + */ +@Log4j2 +@Configuration +public class RestTemplateConfig { + @Bean + public RestTemplate restTemplate(ClientHttpRequestFactory factory){ + return new RestTemplate(factory); + } + + /** + * 创建并配置客户端HTTP请求工厂实例。 + * 注意:这里设置了连接和读取数据的超时时间,分别设为15秒和5秒。 + * 这些值可以根据实际网络状况和应用需求进行调整。 + * + * @return 配置好的客户端请求工厂对象 + */ + @Bean + public ClientHttpRequestFactory simpleClientHttpRequestFactory(){ + try{ + SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); + //设置读取超时时间为5秒 + factory.setReadTimeout(5000); + //设置连接超时时间为15秒 + factory.setConnectTimeout(15000); + return factory; + } catch (Exception e) { + //处理创建工厂或设置超时时间可能出现的异常 + log.info("创建工厂失败:" + e.getMessage()); + throw new RuntimeException("初始化HTTP请求失败",e); + } + } +} diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/mapper/VehicleConnectionMapper.xml b/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/mapper/VehicleConnectionMapper.xml new file mode 100644 index 0000000..5a8505d --- /dev/null +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/mapper/VehicleConnectionMapper.xml @@ -0,0 +1,14 @@ + + + + + + + insert into car_one_click_operation + (vehicle_vin,user_name,nonce,timestamp) + values + (#{vehicleVin},#{userName},#{nonce},#{timestamp}) + + From c5de9a5bed670c294630b9a8bfc28c23bd1624fa Mon Sep 17 00:00:00 2001 From: ywt <3471515127@qq.com> Date: Mon, 7 Oct 2024 10:29:50 +0800 Subject: [PATCH 03/11] =?UTF-8?q?feat():=20=E4=BF=AE=E6=94=B9rabbitmq?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rabbit/callback/ConfirmCallback.java | 44 ++++++++++++ .../rabbit/callback/ReturnsCallback.java | 39 ++++++++++ .../rabbit/config/RabbitAdminConfig.java | 72 +++++++++++++++++++ .../rabbit/config/RabbitListenerConfig.java | 57 +++++++++++++++ .../RabbitMQMessageConverterConfig.java | 26 +++++++ .../aliyun/domain/VehicleConnection.java | 6 +- .../domain/req/VehicleConnectionReq.java | 2 +- .../gateway/aliyun/ecs/DelInstance.java | 4 +- .../vehicle/gateway/aliyun/ecs/Sample.java | 2 +- .../mapper/VehicleConnectionMapper.java | 3 +- .../impl/VehicleConnectionServiceImpl.java | 16 ++++- .../mapper/VehicleConnectionMapper.xml | 4 +- 12 files changed, 266 insertions(+), 9 deletions(-) create mode 100644 cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/callback/ConfirmCallback.java create mode 100644 cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/callback/ReturnsCallback.java create mode 100644 cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitAdminConfig.java create mode 100644 cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitListenerConfig.java create mode 100644 cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitMQMessageConverterConfig.java diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/callback/ConfirmCallback.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/callback/ConfirmCallback.java new file mode 100644 index 0000000..fe4c6b2 --- /dev/null +++ b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/callback/ConfirmCallback.java @@ -0,0 +1,44 @@ +package com.muyu.common.rabbit.callback; + +import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.amqp.rabbit.connection.CorrelationData; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.stereotype.Component; + +/** + * @author Lenovo + * @Description 消息发送到broker确认回调 + */ + +@Slf4j +@Component +public class ConfirmCallback implements RabbitTemplate.ConfirmCallback { + + @Resource + private RabbitTemplate rabbitTemplate; + + /** + * 初始化 + */ + @PostConstruct + public void init() { + this.rabbitTemplate.setConfirmCallback(this); + } + + /** + * 回调确认方法(消息发送之后 消息无论发送成功还是失败都会执行这个回调方法) + * @param correlationData 回调的相关数据 + * @param ack 确认结果(true表示消息已经被broker接收,false表示消息未被broker接收) + * @param cause 失败原因(当ack为false时,表示拒绝接收消息的原因;当ack为true时,该值为空) + */ + @Override + public void confirm(CorrelationData correlationData, boolean ack, String cause) { + if (ack) { + log.info("消息发送到broker成功!"); + } else { + log.info("消息发送到broker失败,失败原因:{}", cause); + } + } +} diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/callback/ReturnsCallback.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/callback/ReturnsCallback.java new file mode 100644 index 0000000..6145c2c --- /dev/null +++ b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/callback/ReturnsCallback.java @@ -0,0 +1,39 @@ +package com.muyu.common.rabbit.callback; + +import jakarta.annotation.PostConstruct; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.amqp.core.ReturnedMessage; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.stereotype.Component; + +/** + * @author Lenovo + * @Description 消息发送失败时回调 + */ + +@Slf4j +@Component +public class ReturnsCallback implements RabbitTemplate.ReturnsCallback { + + @Resource + private RabbitTemplate rabbitTemplate; + + /** + * 初始化 + */ + @PostConstruct + public void init() { + rabbitTemplate.setReturnsCallback(this); + } + + /** + * 消息发送到队列失败时执行 + * @param returnedMessage 返回的消息和元数据 + */ + @Override + public void returnedMessage(ReturnedMessage returnedMessage) { + log.info("消息:{}被交换机:{}回退!回退原因:{}", returnedMessage.getMessage().toString(), + returnedMessage.getExchange(), returnedMessage.getReplyText()); + } +} diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitAdminConfig.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitAdminConfig.java new file mode 100644 index 0000000..d87c912 --- /dev/null +++ b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitAdminConfig.java @@ -0,0 +1,72 @@ +package com.muyu.common.rabbit.config; + +import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; +import org.springframework.amqp.rabbit.connection.ConnectionFactory; +import org.springframework.amqp.rabbit.core.RabbitAdmin; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author Lenovo + * @Description RabbitMQ连接和管理功能配置 + */ + +@Configuration +public class RabbitAdminConfig { + + /** + * RabbitMQ服务器的主机地址 + */ + @Value("${spring.rabbitmq.host}") + private String host; + + /** + * RabbitMQ的用户名 + */ + @Value("${spring.rabbitmq.username}") + private String username; + + /** + * RabbitMQ的密码 + */ + @Value("${spring.rabbitmq.password}") + private String password; + + /** + * RabbitMQ的虚拟主机 + */ + @Value("${spring.rabbitmq.virtualhost}") + private String virtualhost; + + /** + * 创建并初始化RabbitAdmin实例 + * + * @return RabbitAdmin 实例 + */ + @Bean + public RabbitAdmin rabbitAdmin() { + RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory()); + rabbitAdmin.setAutoStartup(true); + return rabbitAdmin; + } + + /** + * 创建RabbitMQ连接工厂 + * + * @return ConnectionFactory 实例 + */ + @Bean + public ConnectionFactory connectionFactory() { + CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); + connectionFactory.setAddresses(host); + connectionFactory.setUsername(username); + connectionFactory.setPassword(password); + connectionFactory.setVirtualHost(virtualhost); + + // 配置发送确认回调时,次配置必须配置,否则即使在RabbitTemplate配置了ConfirmCallback也不会生效 + connectionFactory.setPublisherConfirmType(CachingConnectionFactory.ConfirmType.CORRELATED); + connectionFactory.setPublisherReturns(true); + return connectionFactory; + } +} diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitListenerConfig.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitListenerConfig.java new file mode 100644 index 0000000..0c99e3f --- /dev/null +++ b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitListenerConfig.java @@ -0,0 +1,57 @@ +package com.muyu.common.rabbit.config; + +import org.springframework.amqp.rabbit.annotation.RabbitListenerConfigurer; +import org.springframework.amqp.rabbit.connection.ConnectionFactory; +import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistrar; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.messaging.converter.MappingJackson2MessageConverter; +import org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory; + +/** + * @author Lenovo + * @Description rabbitMQ的监听器配置 + */ + +@Configuration +public class RabbitListenerConfig implements RabbitListenerConfigurer { + + static { + // 设置为信任所有类型的反序列化,确保消息能够正确反序列化 + System.setProperty("spring.amqp.deserialization.trust.all", "true"); + } + + /** + * RabbitMQ连接工厂,用于创建连接 + */ + @Autowired + public ConnectionFactory connectionFactory; + + + /** + * 创建处理器方法工厂的bean + * + * @return DefaultMessageHandlerMethodFactory 实例,用于处理消息的转换和方法调用 + */ + @Bean + public DefaultMessageHandlerMethodFactory handlerMethodFactory() { + DefaultMessageHandlerMethodFactory factory = new DefaultMessageHandlerMethodFactory(); + // 这里的转换器设置实现了 通过 @Payload 注解 自动反序列化message body + factory.setMessageConverter(new MappingJackson2MessageConverter()); + return factory; + } + + /** + * 配置RabbitMQ监听器的消息处理方法工厂。 + * + * @param rabbitListenerEndpointRegistrar 实例,用于注册监听器的配置 + */ + @Override + public void configureRabbitListeners(RabbitListenerEndpointRegistrar rabbitListenerEndpointRegistrar) { + // 注册自定义的消息处理方法工厂 + rabbitListenerEndpointRegistrar.setMessageHandlerMethodFactory(handlerMethodFactory()); + } + +} + diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitMQMessageConverterConfig.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitMQMessageConverterConfig.java new file mode 100644 index 0000000..6096282 --- /dev/null +++ b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitMQMessageConverterConfig.java @@ -0,0 +1,26 @@ + +package com.muyu.common.rabbit.config; + +import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; +import org.springframework.amqp.support.converter.MessageConverter; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author Lenovo + * @Description rabbitMQ消息转换器配置 + */ + +@Configuration +public class RabbitMQMessageConverterConfig { + + /** + * 消息转换配置 + * + * @return 消息转换器 + */ + @Bean + public MessageConverter jsonMessageConverter() { + return new Jackson2JsonMessageConverter(); + } +} diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/VehicleConnection.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/VehicleConnection.java index 0857767..ca6d48a 100644 --- a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/VehicleConnection.java +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/VehicleConnection.java @@ -22,9 +22,13 @@ public class VehicleConnection { /** * 用户名 */ - private String userName; + private String username; /** * 随机数 */ private String nonce; + /** + * 密码 + */ + private String password; } diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/req/VehicleConnectionReq.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/req/VehicleConnectionReq.java index e114d79..cdcaf65 100644 --- a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/req/VehicleConnectionReq.java +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/domain/req/VehicleConnectionReq.java @@ -28,7 +28,7 @@ public class VehicleConnectionReq { /** * 用户名 */ - private String userName; + private String username; /** * 随机数 diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/ecs/DelInstance.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/ecs/DelInstance.java index c9268c5..1b40738 100644 --- a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/ecs/DelInstance.java +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/ecs/DelInstance.java @@ -126,8 +126,8 @@ public class DelInstance implements ApplicationListener { try{ log.info("=======>删除实例"); delInstance(); - redisTemplate.delete("instanceIds"); - redisTemplate.delete("instanceList"); +// redisTemplate.delete("instanceIds"); +// redisTemplate.delete("instanceList"); } catch (Exception e) { throw new RuntimeException(e); } diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/ecs/Sample.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/ecs/Sample.java index cbcf7b0..50c547e 100644 --- a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/ecs/Sample.java +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/ecs/Sample.java @@ -61,7 +61,7 @@ public class Sample implements ApplicationRunner { // 创建创建实例请求对象并设置参数 RunInstancesRequest runInstancesRequest = new RunInstancesRequest() .setRegionId("cn-shanghai") // 设置地域ID - .setImageId("m-uf63dnbv4od71jlezdne")// 设置镜像ID + .setImageId("m-uf66taa8r57ky0pg3e7s")// 设置镜像ID .setInstanceType("ecs.e-c1m1.large")// 设置实例类型 .setSecurityGroupId("sg-uf6hyictocodexptlgiv")// 设置安全组ID .setVSwitchId("vsw-uf6ags5luz17qd6ckn2tb")// 设置虚拟交换机ID diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/mapper/VehicleConnectionMapper.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/mapper/VehicleConnectionMapper.java index 916480b..b573aa1 100644 --- a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/mapper/VehicleConnectionMapper.java +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/mapper/VehicleConnectionMapper.java @@ -1,9 +1,10 @@ package com.muyu.cloud.vehicle.gateway.aliyun.mapper; +import com.muyu.cloud.vehicle.gateway.aliyun.domain.VehicleConnection; import com.muyu.cloud.vehicle.gateway.aliyun.domain.req.VehicleConnectionReq; import org.apache.ibatis.annotations.Mapper; @Mapper public interface VehicleConnectionMapper { - void addConnect(VehicleConnectionReq vehicleConnectionReq); + void addConnect(VehicleConnection vehicleConnection); } diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/service/impl/VehicleConnectionServiceImpl.java b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/service/impl/VehicleConnectionServiceImpl.java index fac49dd..71cca36 100644 --- a/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/service/impl/VehicleConnectionServiceImpl.java +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/java/com/muyu/cloud/vehicle/gateway/aliyun/service/impl/VehicleConnectionServiceImpl.java @@ -1,9 +1,11 @@ package com.muyu.cloud.vehicle.gateway.aliyun.service.impl; +import com.muyu.cloud.vehicle.gateway.aliyun.domain.VehicleConnection; import com.muyu.cloud.vehicle.gateway.aliyun.domain.req.VehicleConnectionReq; import com.muyu.cloud.vehicle.gateway.aliyun.mapper.VehicleConnectionMapper; import com.muyu.cloud.vehicle.gateway.aliyun.service.VehicleConnectionService; import lombok.extern.log4j.Log4j2; +import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -11,11 +13,23 @@ import org.springframework.stereotype.Service; @Service public class VehicleConnectionServiceImpl implements VehicleConnectionService { + @Autowired + private RabbitTemplate rabbitTemplate; + @Autowired private VehicleConnectionMapper vehicleConnectionMapper; + @Override public void getConnect(VehicleConnectionReq vehicleConnectionReq) { log.info("车辆连接请求:{}",vehicleConnectionReq.toString()); - vehicleConnectionMapper.addConnect(vehicleConnectionReq); + + //发送消息 + rabbitTemplate.convertAndSend("exchange_topics_inform","",vehicleConnectionReq.getVehicleVin()); + + VehicleConnection vehicleConnection = new VehicleConnection(); + vehicleConnection.setVehicleVin(vehicleConnectionReq.getVehicleVin()); + vehicleConnection.setUsername(vehicleConnectionReq.getUsername()); + vehicleConnection.setPassword(vehicleConnectionReq.getVehicleVin()+vehicleConnectionReq.getTimestamp()+vehicleConnectionReq.getNonce()); + vehicleConnectionMapper.addConnect(vehicleConnection); } } diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/mapper/VehicleConnectionMapper.xml b/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/mapper/VehicleConnectionMapper.xml index 5a8505d..8ca5630 100644 --- a/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/mapper/VehicleConnectionMapper.xml +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/mapper/VehicleConnectionMapper.xml @@ -7,8 +7,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" insert into car_one_click_operation - (vehicle_vin,user_name,nonce,timestamp) + (vehicle_vin,user_name,password) values - (#{vehicleVin},#{userName},#{nonce},#{timestamp}) + (#{vehicleVin},#{username},#{password}) From 8ac2d539f49c6340907bb5034c4972248bae687a Mon Sep 17 00:00:00 2001 From: ywt <3471515127@qq.com> Date: Mon, 7 Oct 2024 10:48:59 +0800 Subject: [PATCH 04/11] =?UTF-8?q?feat():=20=E4=BA=8C=E6=AC=A1=E4=BF=AE?= =?UTF-8?q?=E6=94=B9rabbitmq=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rabbit/RabbitListenerConfigurer.java | 41 ------------------- ...ot.autoconfigure.AutoConfiguration.imports | 4 +- 2 files changed, 3 insertions(+), 42 deletions(-) delete mode 100644 cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/RabbitListenerConfigurer.java diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/RabbitListenerConfigurer.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/RabbitListenerConfigurer.java deleted file mode 100644 index 51cb359..0000000 --- a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/RabbitListenerConfigurer.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.muyu.common.rabbit; - -import org.springframework.amqp.rabbit.connection.ConnectionFactory; -import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistrar; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.messaging.converter.MappingJackson2MessageConverter; -import org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory; - -@Configuration -public class RabbitListenerConfigurer implements org.springframework.amqp.rabbit.annotation.RabbitListenerConfigurer { - - static { - System.setProperty("spring.amqp.deserialization.trust.all", "true"); - } - - //以下配置RabbitMQ消息服务 - @Autowired - public ConnectionFactory connectionFactory; - - - /** - * 处理器方法工厂 - * @return - */ - @Bean - public DefaultMessageHandlerMethodFactory handlerMethodFactory() { - DefaultMessageHandlerMethodFactory factory = new DefaultMessageHandlerMethodFactory(); - // 这里的转换器设置实现了 通过 @Payload 注解 自动反序列化message body - factory.setMessageConverter(new MappingJackson2MessageConverter()); - return factory; - } - - @Override - public void configureRabbitListeners(RabbitListenerEndpointRegistrar rabbitListenerEndpointRegistrar) { - rabbitListenerEndpointRegistrar.setMessageHandlerMethodFactory(handlerMethodFactory()); - } - -} - diff --git a/cloud-common/cloud-common-rabbit/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-rabbit/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 189ea2c..0b13700 100644 --- a/cloud-common/cloud-common-rabbit/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/cloud-common/cloud-common-rabbit/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1 +1,3 @@ -com.muyu.common.rabbit.RabbitListenerConfigurer \ No newline at end of file +com.muyu.common.rabbit.config.RabbitListenerConfig +com.muyu.common.rabbit.config.RabbitAdminConfig +com.muyu.common.rabbit.config.RabbitMQMessageConverterConfig From 9e1f941be57e2f079bec2a32e4ce08e234c5ad2d Mon Sep 17 00:00:00 2001 From: sy200 <2063514638@qq.com> Date: Mon, 7 Oct 2024 11:15:26 +0800 Subject: [PATCH 05/11] =?UTF-8?q?feat:()=E6=9F=A5=E7=9C=8B=E8=BD=A6?= =?UTF-8?q?=E8=BE=86=E7=BB=91=E5=AE=9A=E5=9B=B4=E6=A0=8F=E7=BB=84=E7=9A=84?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enterprise/controller/VehicleController.java | 14 +++++++++++--- .../com/muyu/enterprise/mapper/VehicleMapper.java | 5 +++++ .../com/muyu/enterprise/service/ElectService.java | 5 ----- .../muyu/enterprise/service/VehicleService.java | 8 ++++++++ .../service/impl/VehicleServiceImpl.java | 8 ++++++++ 5 files changed, 32 insertions(+), 8 deletions(-) diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleController.java index 8999394..9de8d51 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleController.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleController.java @@ -2,6 +2,7 @@ package com.muyu.enterprise.controller; import com.muyu.common.security.utils.SecurityUtils; import com.muyu.common.system.domain.LoginUser; +import com.muyu.domain.FenceGroup; import com.muyu.domain.req.BoundFenceGroupReq; import com.muyu.enterprise.cache.AllVehicleCacheService; import com.muyu.enterprise.cache.VehicleCacheService; @@ -52,9 +53,6 @@ public class VehicleController extends BaseController { @Autowired private AllVehicleCacheService allVehicleCacheService; - @Autowired - private RedisTemplate redisTemplate; - /** * 查询车辆管理列表 @@ -176,4 +174,14 @@ public class VehicleController extends BaseController { return Result.success(templateId); } + /** + * 查看绑定的围栏信息 + */ + @PostMapping("/showBoundFenceGroup/{fenceGroupId}") + @Operation(description = "查看绑定的围栏信息") + public Result> showBoundFenceGroup(@PathVariable("fenceGroupId") Long fenceGroupId) { + List list = vehicleService.showBoundFenceGroup(fenceGroupId); + return Result.success(list); + } + } diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/VehicleMapper.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/VehicleMapper.java index 95cc6f1..1fcbaa5 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/VehicleMapper.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/mapper/VehicleMapper.java @@ -1,6 +1,7 @@ package com.muyu.enterprise.mapper; import com.github.yulichang.base.MPJBaseMapper; +import com.muyu.domain.FenceGroup; import com.muyu.domain.Vehicle; import com.muyu.domain.req.BoundFenceGroupReq; import com.muyu.domain.req.VehicleManageReq; @@ -49,4 +50,8 @@ public interface VehicleMapper extends MPJBaseMapper { }) void boundFenceGroup(BoundFenceGroupReq boundFenceGroupReq); + @Select("SELECT * FROM bound_middle bm LEFT JOIN vehicle v ON bm.vehicle_id=v.vehicle_id WHERE bm.fence_group_id = #{fenceGroupId}") + List showBoundFenceGroup(@Param("fenceGroupId") Long fenceGroupId); + + } diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/ElectService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/ElectService.java index d0b2896..d9006f7 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/ElectService.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/ElectService.java @@ -30,11 +30,6 @@ public interface ElectService extends IService { */ List mapShow(@Param("fenceId") Long fenceId); -// /** -// * 根据id查询车辆 -// */ -// Fence boundFence(@Param("fenceId") Long fenceId); - /** * 查询电子围栏(终版) */ diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/VehicleService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/VehicleService.java index e34cc29..940aeda 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/VehicleService.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/VehicleService.java @@ -1,6 +1,7 @@ package com.muyu.enterprise.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.domain.FenceGroup; import com.muyu.domain.Vehicle; import com.muyu.domain.req.BoundFenceGroupReq; import com.muyu.domain.req.VehicleManageReq; @@ -39,4 +40,11 @@ public interface VehicleService extends IService { */ void boundFenceGroup(BoundFenceGroupReq boundFenceGroupReq); + /** + * 查询绑定围栏组信息 + * @param fenceGroupId + * @return + */ + List showBoundFenceGroup(@Param("fenceGroupId") Long fenceGroupId); + } diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/VehicleServiceImpl.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/VehicleServiceImpl.java index 142377d..321f207 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/VehicleServiceImpl.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/VehicleServiceImpl.java @@ -3,6 +3,7 @@ package com.muyu.enterprise.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.muyu.common.core.utils.StringUtils; +import com.muyu.domain.FenceGroup; import com.muyu.domain.Vehicle; import com.muyu.domain.VehicleType; import com.muyu.domain.req.BoundFenceGroupReq; @@ -14,6 +15,7 @@ import com.muyu.enterprise.service.VehicleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Collections; import java.util.List; /** @@ -76,5 +78,11 @@ public class VehicleServiceImpl vehicleMapper.boundFenceGroup(boundFenceGroupReq); } + @Override + public List showBoundFenceGroup(Long fenceGroupId) { + List fenceGroups = vehicleMapper.showBoundFenceGroup(fenceGroupId); + return fenceGroups; + } + } From dc4f5bbdcbc4032f57841b95ad081783ec468a21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E4=B8=9C=E4=BD=B3?= <14614659+dongjia-li@user.noreply.gitee.com> Date: Mon, 7 Oct 2024 11:45:44 +0800 Subject: [PATCH 06/11] =?UTF-8?q?fix():=E8=A7=A3=E5=86=B3=E6=8A=A5?= =?UTF-8?q?=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/MessageValueServiceImpl.java | 2 +- .../protocol/parsing/test/ParsingMessage.java | 320 +++++++++--------- 2 files changed, 161 insertions(+), 161 deletions(-) diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MessageValueServiceImpl.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MessageValueServiceImpl.java index 7d12c08..d09bd9d 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MessageValueServiceImpl.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MessageValueServiceImpl.java @@ -72,7 +72,7 @@ public class MessageValueServiceImpl messageValue ) ).collect(Collectors.toList()); - allMessageValueCacheService.put(String.valueOf(templateId), collect); +// allMessageValueCacheService.put(String.valueOf(templateId), collect); return collect; } diff --git a/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingMessage.java b/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingMessage.java index d0bbdea..16f327e 100644 --- a/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingMessage.java +++ b/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingMessage.java @@ -1,161 +1,161 @@ -package com.muyu.cloud.protocol.parsing.test; - -import cn.hutool.json.JSONObject; -import com.muyu.domain.Vehicle; -import com.muyu.domain.VehicleType; -import com.muyu.domain.resp.MessageValueListResp; -import com.muyu.enterprise.cache.AllMessageValueCacheService; -import com.muyu.enterprise.cache.VehicleCacheService; -import com.muyu.enterprise.cache.VehicleTypeCacheService; -import lombok.extern.log4j.Log4j2; -import org.apache.kafka.clients.producer.KafkaProducer; -import org.apache.kafka.clients.producer.ProducerRecord; -import org.eclipse.paho.client.mqttv3.*; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import javax.annotation.PostConstruct; -import javax.annotation.Resource; -import java.util.List; - -/** - * @Author: LiDongJia - * @Package: com.muyu.cloud.protocol.parsing.service.impl - * @Project: 2112-car-cloud-server - * @name: ParsingServiceImpl - * @Date: 2024/9/28 14:31 - * @Description: 协议解析实现层 - */ -@Log4j2 -@Component -public class ParsingMessage { - - @Resource - private KafkaProducer kafkaProducer; - - @Autowired - private VehicleCacheService vehicleCacheService; - - @Autowired - private VehicleTypeCacheService vehicleTypeCacheService; - - @Autowired - private AllMessageValueCacheService allMessageValueCacheService; - - /** - * 协议解析 - */ - @PostConstruct - public void mqttClient() { - String topic = "vehicle"; - String broker = "tcp://111.231.50.146:1883"; - String clientId = "JavaSample"; - - try { - // 第三个参数为空,默认持久化策略 - MqttClient sampleClient = new MqttClient(broker, clientId); - MqttConnectOptions connOpts = new MqttConnectOptions(); - connOpts.setCleanSession(true); - System.out.println("Connecting to broker: " + broker); - sampleClient.connect(connOpts); - sampleClient.subscribe(topic, 0); - sampleClient.setCallback(new MqttCallback() { - // 连接丢失 - @Override - public void connectionLost(Throwable throwable) { - - } - - // 连接成功 - @Override - public void messageArrived(String s, MqttMessage mqttMessage) throws Exception { - System.out.println(new String(mqttMessage.getPayload())); - JSONObject entries = this.protocolParsing(new String(mqttMessage.getPayload())); - - ProducerRecord producerRecord = new ProducerRecord<>("zeshi", - entries.toString() ); - kafkaProducer.send(producerRecord); - System.out.println(entries); - } - - /** - * 协议解析 - * @param messageStr - * @return - */ - public JSONObject protocolParsing(String messageStr) { - //根据空格切割数据 - String[] hexArray = messageStr.split(" "); - StringBuilder result = new StringBuilder(); - //遍历十六进制数据转换为字符 - for (String hex : hexArray) { - int decimal = Integer.parseInt(hex, 16); - result.append((char) decimal); - } - //取出车辆VIN码 - String vehicleVin = result.substring(1, 18); - log.info("车辆VIN码: " + vehicleVin); - //根据车辆VIN码查询报文模板ID - Vehicle vehicle = vehicleCacheService.get(vehicleVin); - Long vehicleTypeId = vehicle.getVehicleTypeId(); - VehicleType vehicleType = vehicleTypeCacheService.get(String.valueOf(vehicleTypeId)); - Long templateId = vehicleType.getMessageTemplateId(); - List templateList = allMessageValueCacheService.get(String.valueOf(templateId)); -// //从redis缓存中获取报文模板数据 -// try { -// String redisKey = "messageTemplate" + templateId; -// if (redisTemplate.hasKey(redisKey)) { -// List list = redisTemplate.opsForList().range(redisKey, 0, -1); -// templateList = list.stream() -// .map(obj -> JSON.parseObject(obj.toString(), MessageValueListResp.class)) -// .toList(); -// log.info("Redis缓存查询成功"); -// } else { -// Result> byTemplateId = remoteServiceClient.findByTemplateId(templateId); -// templateList = byTemplateId.getData(); -// templateList.forEach( -// listResp -> -// redisTemplate.opsForList().rightPush( -// redisKey, JSON.toJSONString(listResp) -// ) -// ); -// log.info("数据库查询成功"); -// } -// } catch (Exception e) { -// throw new RuntimeException("获取报文模板失败"); +//package com.muyu.cloud.protocol.parsing.test; +// +//import cn.hutool.json.JSONObject; +//import com.muyu.domain.Vehicle; +//import com.muyu.domain.VehicleType; +//import com.muyu.domain.resp.MessageValueListResp; +//import com.muyu.enterprise.cache.AllMessageValueCacheService; +//import com.muyu.enterprise.cache.VehicleCacheService; +//import com.muyu.enterprise.cache.VehicleTypeCacheService; +//import lombok.extern.log4j.Log4j2; +//import org.apache.kafka.clients.producer.KafkaProducer; +//import org.apache.kafka.clients.producer.ProducerRecord; +//import org.eclipse.paho.client.mqttv3.*; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.stereotype.Component; +// +//import javax.annotation.PostConstruct; +//import javax.annotation.Resource; +//import java.util.List; +// +///** +// * @Author: LiDongJia +// * @Package: com.muyu.cloud.protocol.parsing.service.impl +// * @Project: 2112-car-cloud-server +// * @name: ParsingServiceImpl +// * @Date: 2024/9/28 14:31 +// * @Description: 协议解析实现层 +// */ +//@Log4j2 +//@Component +//public class ParsingMessage { +// +// @Resource +// private KafkaProducer kafkaProducer; +// +// @Autowired +// private VehicleCacheService vehicleCacheService; +// +// @Autowired +// private VehicleTypeCacheService vehicleTypeCacheService; +// +// @Autowired +// private AllMessageValueCacheService allMessageValueCacheService; +// +// /** +// * 协议解析 +// */ +// @PostConstruct +// public void mqttClient() { +// String topic = "vehicle"; +// String broker = "tcp://111.231.50.146:1883"; +// String clientId = "JavaSample"; +// +// try { +// // 第三个参数为空,默认持久化策略 +// MqttClient sampleClient = new MqttClient(broker, clientId); +// MqttConnectOptions connOpts = new MqttConnectOptions(); +// connOpts.setCleanSession(true); +// System.out.println("Connecting to broker: " + broker); +// sampleClient.connect(connOpts); +// sampleClient.subscribe(topic, 0); +// sampleClient.setCallback(new MqttCallback() { +// // 连接丢失 +// @Override +// public void connectionLost(Throwable throwable) { +// +// } +// +// // 连接成功 +// @Override +// public void messageArrived(String s, MqttMessage mqttMessage) throws Exception { +// System.out.println(new String(mqttMessage.getPayload())); +// JSONObject entries = this.protocolParsing(new String(mqttMessage.getPayload())); +// +// ProducerRecord producerRecord = new ProducerRecord<>("zeshi", +// entries.toString() ); +// kafkaProducer.send(producerRecord); +// System.out.println(entries); +// } +// +// /** +// * 协议解析 +// * @param messageStr +// * @return +// */ +// public JSONObject protocolParsing(String messageStr) { +// //根据空格切割数据 +// String[] hexArray = messageStr.split(" "); +// StringBuilder result = new StringBuilder(); +// //遍历十六进制数据转换为字符 +// for (String hex : hexArray) { +// int decimal = Integer.parseInt(hex, 16); +// result.append((char) decimal); // } - //判断报文模板列表不为空 - if (templateList.isEmpty()) { - throw new RuntimeException("报文模版为空"); - } - //存储报文模版解析后的数据 - JSONObject jsonObject = new JSONObject(); - for (MessageValueListResp messageValue : templateList) { - //起始位下标 - Integer startIndex = messageValue.getMessageStartIndex() - 1; - //结束位下标 - Integer endIndex = messageValue.getMessageEndIndex(); - //根据报文模版截取数据 - String value = result.substring(startIndex, endIndex); - //存入数据 - jsonObject.put(messageValue.getMessageLabel(), value); - } - return jsonObject; - } - - // 接收信息 - @Override - public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { - - } - }); - } catch (MqttException me) { - System.out.println("reason " + me.getReasonCode()); - System.out.println("msg " + me.getMessage()); - System.out.println("loc " + me.getLocalizedMessage()); - System.out.println("cause " + me.getCause()); - System.out.println("excep " + me); - me.printStackTrace(); - } - } -} +// //取出车辆VIN码 +// String vehicleVin = result.substring(1, 18); +// log.info("车辆VIN码: " + vehicleVin); +// //根据车辆VIN码查询报文模板ID +// Vehicle vehicle = vehicleCacheService.get(vehicleVin); +// Long vehicleTypeId = vehicle.getVehicleTypeId(); +// VehicleType vehicleType = vehicleTypeCacheService.get(String.valueOf(vehicleTypeId)); +// Long templateId = vehicleType.getMessageTemplateId(); +//// List templateList = allMessageValueCacheService.get(templateId); +//// //从redis缓存中获取报文模板数据 +//// try { +//// String redisKey = "messageTemplate" + templateId; +//// if (redisTemplate.hasKey(redisKey)) { +//// List list = redisTemplate.opsForList().range(redisKey, 0, -1); +//// templateList = list.stream() +//// .map(obj -> JSON.parseObject(obj.toString(), MessageValueListResp.class)) +//// .toList(); +//// log.info("Redis缓存查询成功"); +//// } else { +//// Result> byTemplateId = remoteServiceClient.findByTemplateId(templateId); +//// templateList = byTemplateId.getData(); +//// templateList.forEach( +//// listResp -> +//// redisTemplate.opsForList().rightPush( +//// redisKey, JSON.toJSONString(listResp) +//// ) +//// ); +//// log.info("数据库查询成功"); +//// } +//// } catch (Exception e) { +//// throw new RuntimeException("获取报文模板失败"); +//// } +// //判断报文模板列表不为空 +// if (templateList.isEmpty()) { +// throw new RuntimeException("报文模版为空"); +// } +// //存储报文模版解析后的数据 +// JSONObject jsonObject = new JSONObject(); +// for (MessageValueListResp messageValue : templateList) { +// //起始位下标 +// Integer startIndex = messageValue.getMessageStartIndex() - 1; +// //结束位下标 +// Integer endIndex = messageValue.getMessageEndIndex(); +// //根据报文模版截取数据 +// String value = result.substring(startIndex, endIndex); +// //存入数据 +// jsonObject.put(messageValue.getMessageLabel(), value); +// } +// return jsonObject; +// } +// +// // 接收信息 +// @Override +// public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { +// +// } +// }); +// } catch (MqttException me) { +// System.out.println("reason " + me.getReasonCode()); +// System.out.println("msg " + me.getMessage()); +// System.out.println("loc " + me.getLocalizedMessage()); +// System.out.println("cause " + me.getCause()); +// System.out.println("excep " + me); +// me.printStackTrace(); +// } +// } +//} From 74739614e559e9095ff93f8d5932c86ffe9b4a28 Mon Sep 17 00:00:00 2001 From: sy200 <2063514638@qq.com> Date: Mon, 7 Oct 2024 12:01:41 +0800 Subject: [PATCH 07/11] =?UTF-8?q?feat:()=E4=BF=AE=E6=94=B9=E5=AD=98?= =?UTF-8?q?=E6=8A=A5=E6=96=87=E6=A8=A1=E7=89=88=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JavaSample-tcp111231501461883/.lck | 0 .../cache/AllMessageValueCacheService.java | 4 +- .../controller/MessageValueController.java | 7 ++-- .../service/impl/MessageValueServiceImpl.java | 41 ------------------- .../protocol/parsing/test/ParsingTest.java | 2 + 5 files changed, 9 insertions(+), 45 deletions(-) create mode 100644 JavaSample-tcp111231501461883/.lck diff --git a/JavaSample-tcp111231501461883/.lck b/JavaSample-tcp111231501461883/.lck new file mode 100644 index 0000000..e69de29 diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/AllMessageValueCacheService.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/AllMessageValueCacheService.java index 4d80094..97f3e3c 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/AllMessageValueCacheService.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-cache/src/main/java/com/muyu/enterprise/cache/AllMessageValueCacheService.java @@ -6,10 +6,12 @@ import com.muyu.domain.MessageValue; import com.muyu.domain.req.MessageValueReq; import com.muyu.domain.resp.MessageValueListResp; +import java.util.List; + /** * 报文模版缓存 */ -public class AllMessageValueCacheService extends CacheAbsBacis { +public class AllMessageValueCacheService extends CacheAbsBacis> { @Override diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/MessageValueController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/MessageValueController.java index bf394ca..f262f49 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/MessageValueController.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/MessageValueController.java @@ -48,9 +48,9 @@ public class MessageValueController { @Operation(summary = "报文数据列表", description = "根据报文类别, 报文模版筛选报文数据") public Result> findAll(@RequestBody MessageValueReq messageValueReq) { List list = messageValueService.findAll(messageValueReq); - for (MessageValueListResp messageValueListResp : list) { - allMessageValueCacheService.put(String.valueOf(messageValueListResp.getMessageTemplateId()), messageValueListResp); - } +// for (MessageValueListResp messageValueListResp : list) { +// allMessageValueCacheService.put(String.valueOf(messageValueListResp.getMessageTemplateId()), (List) messageValueListResp); +// } return Result.success(list); } @@ -102,6 +102,7 @@ public class MessageValueController { @Operation(summary = "根据报文模版id查询报文数据", description = "根据报文模版id查询报文数据") public Result> findByTemplateId(@PathVariable("templateId") Long templateId) { List list = messageValueService.findByTemplateId(templateId); + allMessageValueCacheService.put(String.valueOf(templateId), list); return Result.success(list); } diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MessageValueServiceImpl.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MessageValueServiceImpl.java index bab87e8..a95beca 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MessageValueServiceImpl.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/service/impl/MessageValueServiceImpl.java @@ -69,45 +69,4 @@ public class MessageValueServiceImpl ) ).collect(Collectors.toList()); } - - -// @Override -// public JSONObject analysis(String testStr) { -// -// if (testStr.length() < 18){ -// throw new RuntimeException("报文格式不正确"); -// } -// //根据空格切割数据 -// String[] hexArray = testStr.split(" "); -// StringBuilder result = new StringBuilder(); -// for (String hex : hexArray) { -// int decimal = Integer.parseInt(hex, 16); -// result.append((char) decimal); -// } -// log.info(result); -// //取出车辆VIN码 -// String vehicleVin = result.substring(1, 18); -// log.info("车辆VIN:" + vehicleVin); -// //根据车辆VIN码, 查找到报文模版id -// Long templateId = messageValueMapper.getTemplateId(vehicleVin); -// log.info("模版id:" + templateId); -// //获取到报文模版的列表 -// List templateList = messageValueMapper.getTemplateList(templateId); -// //存储报文模板解析后数据 -// JSONObject jsonObject = new JSONObject(); -// for (MessageValueListResp messageValue : templateList) { -// //起始位下标 -// Integer startIndex = messageValue.getMessageStartIndex() - 1; -// //截止位下标 -// Integer endIndex = messageValue.getMessageEndIndex(); -// //根据报文模版截取数据 -// String value = result.substring(startIndex, endIndex); -// //存入数据 -// jsonObject.put(messageValue.getMessageLabel(), value); -// } -// for (Map.Entry stringObjectEntry : jsonObject) { -// log.info(stringObjectEntry.getKey() + ":" + stringObjectEntry.getValue()); -// } -// return jsonObject; -// } } diff --git a/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingTest.java b/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingTest.java index 9d9e31b..b38732a 100644 --- a/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingTest.java +++ b/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingTest.java @@ -38,6 +38,8 @@ public class ParsingTest { @Resource private KafkaProducer kafkaProducer; + + /** * 协议解析 */ From d2b29e6323f25339b00869321971a1eedb59b7e1 Mon Sep 17 00:00:00 2001 From: sy200 <2063514638@qq.com> Date: Mon, 7 Oct 2024 12:11:58 +0800 Subject: [PATCH 08/11] =?UTF-8?q?feat:()=E4=BF=AE=E6=94=B9=E6=8A=A5?= =?UTF-8?q?=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JavaSample-tcp111231501461883/.lck | 0 .../protocol/parsing/test/ParsingTest.java | 155 ------------------ 2 files changed, 155 deletions(-) delete mode 100644 JavaSample-tcp111231501461883/.lck delete mode 100644 cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingTest.java diff --git a/JavaSample-tcp111231501461883/.lck b/JavaSample-tcp111231501461883/.lck deleted file mode 100644 index e69de29..0000000 diff --git a/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingTest.java b/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingTest.java deleted file mode 100644 index 9d9e31b..0000000 --- a/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingTest.java +++ /dev/null @@ -1,155 +0,0 @@ -package com.muyu.cloud.protocol.parsing.test; - -import cn.hutool.json.JSONObject; -import com.alibaba.fastjson.JSON; -import com.muyu.cloud.protocol.parsing.feign.RemoteServiceClient; -import com.muyu.common.core.domain.Result; -import com.muyu.domain.resp.MessageValueListResp; -import lombok.extern.log4j.Log4j2; -import org.apache.kafka.clients.producer.KafkaProducer; -import org.apache.kafka.clients.producer.ProducerRecord; -import org.eclipse.paho.client.mqttv3.*; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.stereotype.Component; - -import javax.annotation.PostConstruct; -import javax.annotation.Resource; -import java.util.List; - -/** - * @Author: LiDongJia - * @Package: com.muyu.cloud.protocol.parsing.service.impl - * @Project: 2112-car-cloud-server - * @name: ParsingServiceImpl - * @Date: 2024/9/28 14:31 - * @Description: 协议解析实现层 - */ -@Log4j2 -@Component -public class ParsingTest { - - @Resource - private RedisTemplate redisTemplate; - - @Autowired - private RemoteServiceClient remoteServiceClient; - - @Resource - private KafkaProducer kafkaProducer; - - /** - * 协议解析 - */ - @PostConstruct - public void mqttClient() { - String topic = "vehicle"; - String broker = "tcp://111.231.50.146:1883"; - String clientId = "JavaSample"; - - try { - // 第三个参数为空,默认持久化策略 - MqttClient sampleClient = new MqttClient(broker, clientId); - MqttConnectOptions connOpts = new MqttConnectOptions(); - connOpts.setCleanSession(true); - System.out.println("Connecting to broker: " + broker); - sampleClient.connect(connOpts); - sampleClient.subscribe(topic, 0); - sampleClient.setCallback(new MqttCallback() { - // 连接丢失 - @Override - public void connectionLost(Throwable throwable) { - - } - - // 连接成功 - @Override - public void messageArrived(String s, MqttMessage mqttMessage) throws Exception { - System.out.println(new String(mqttMessage.getPayload())); - JSONObject entries = this.protocolParsing(new String(mqttMessage.getPayload())); - - ProducerRecord producerRecord = new ProducerRecord<>("zeshi", - entries.toString() ); - kafkaProducer.send(producerRecord); - System.out.println(entries); - } - - /** - * 协议解析 - * @param messageStr - * @return - */ - public JSONObject protocolParsing(String messageStr) { - //根据空格切割数据 - String[] hexArray = messageStr.split(" "); - StringBuilder result = new StringBuilder(); - //遍历十六进制数据转换为字符 - for (String hex : hexArray) { - int decimal = Integer.parseInt(hex, 16); - result.append((char) decimal); - } - //取出车辆VIN码 - String vehicleVin = result.substring(1, 18); - log.info("车辆VIN码: " + vehicleVin); - //根据车辆VIN码查询报文模板ID - Result byVehicleVin = remoteServiceClient.findByVehicleVin(vehicleVin); - Long templateId = byVehicleVin.getData(); - List templateList; - //从redis缓存中获取报文模板数据 - try { - String redisKey = "messageTemplate" + templateId; - if (redisTemplate.hasKey(redisKey)) { - List list = redisTemplate.opsForList().range(redisKey, 0, -1); - templateList = list.stream() - .map(obj -> JSON.parseObject(obj.toString(), MessageValueListResp.class)) - .toList(); - log.info("Redis缓存查询成功"); - } else { - Result> byTemplateId = remoteServiceClient.findByTemplateId(templateId); - templateList = byTemplateId.getData(); - templateList.forEach( - listResp -> - redisTemplate.opsForList().rightPush( - redisKey, JSON.toJSONString(listResp) - ) - ); - log.info("数据库查询成功"); - } - } catch (Exception e) { - throw new RuntimeException("获取报文模板失败"); - } - //判断报文模板列表不为空 - if (templateList.isEmpty()) { - throw new RuntimeException("报文模版为空"); - } - //存储报文模版解析后的数据 - JSONObject jsonObject = new JSONObject(); - for (MessageValueListResp messageValue : templateList) { - //起始位下标 - Integer startIndex = messageValue.getMessageStartIndex() - 1; - //结束位下标 - Integer endIndex = messageValue.getMessageEndIndex(); - //根据报文模版截取数据 - String value = result.substring(startIndex, endIndex); - //存入数据 - jsonObject.put(messageValue.getMessageLabel(), value); - } - return jsonObject; - } - - // 接收信息 - @Override - public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { - - } - }); - } catch (MqttException me) { - System.out.println("reason " + me.getReasonCode()); - System.out.println("msg " + me.getMessage()); - System.out.println("loc " + me.getLocalizedMessage()); - System.out.println("cause " + me.getCause()); - System.out.println("excep " + me); - me.printStackTrace(); - } - } -} From d2462e6456cda0c5071953efdea4ed179df4bad2 Mon Sep 17 00:00:00 2001 From: sy200 <2063514638@qq.com> Date: Mon, 7 Oct 2024 14:31:56 +0800 Subject: [PATCH 09/11] =?UTF-8?q?feat:()=E4=BF=AE=E6=94=B9=E5=AD=98?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/VehicleController.java | 13 +- .../controller/VehicleTypeController.java | 9 +- .../protocol/parsing/test/ParsingMessage.java | 320 +++++++++--------- 3 files changed, 173 insertions(+), 169 deletions(-) diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleController.java index 8999394..125aaed 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleController.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleController.java @@ -52,9 +52,6 @@ public class VehicleController extends BaseController { @Autowired private AllVehicleCacheService allVehicleCacheService; - @Autowired - private RedisTemplate redisTemplate; - /** * 查询车辆管理列表 @@ -67,9 +64,13 @@ public class VehicleController extends BaseController { startPage(); List list = vehicleService.getVehicleList(vehicleManageReq); // 将车辆信息存到Redis - for (VehicleManageResp resp : list) { - allVehicleCacheService.put(resp.getVehicleVin(), resp); - } +// for (VehicleManageResp resp : list) { +// allVehicleCacheService.put(resp.getVehicleVin(), resp); +// } + List vehicleList = vehicleService.list(); + vehicleList.forEach(vehicle -> { + vehicleCacheService.put(vehicle.getVehicleVin(), vehicle); + }); return getDataTable(list); } diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleTypeController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleTypeController.java index 3518600..011604b 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleTypeController.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleTypeController.java @@ -52,9 +52,12 @@ public class VehicleTypeController { @Operation(summary = "车辆类型列表",description = "车辆类型列表") public Result> findAll(){ List list = vehicleTypeService.list(); - for (VehicleType vehicleType : list) { - allVehicleTypeCacheService.put(String.valueOf(vehicleType.getVehicleTypeId()),vehicleType); - } +// for (VehicleType vehicleType : list) { +// allVehicleTypeCacheService.put(String.valueOf(vehicleType.getVehicleTypeId()),vehicleType); +// } + list.forEach(vehicleType -> { + vehicleTypeCacheService.put(String.valueOf(vehicleType.getVehicleTypeId()), vehicleType); + }); return Result.success(); } diff --git a/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingMessage.java b/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingMessage.java index 16f327e..d0bbdea 100644 --- a/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingMessage.java +++ b/cloud-modules/cloud-modules-protocol-parsing/src/main/java/com/muyu/cloud/protocol/parsing/test/ParsingMessage.java @@ -1,161 +1,161 @@ -//package com.muyu.cloud.protocol.parsing.test; -// -//import cn.hutool.json.JSONObject; -//import com.muyu.domain.Vehicle; -//import com.muyu.domain.VehicleType; -//import com.muyu.domain.resp.MessageValueListResp; -//import com.muyu.enterprise.cache.AllMessageValueCacheService; -//import com.muyu.enterprise.cache.VehicleCacheService; -//import com.muyu.enterprise.cache.VehicleTypeCacheService; -//import lombok.extern.log4j.Log4j2; -//import org.apache.kafka.clients.producer.KafkaProducer; -//import org.apache.kafka.clients.producer.ProducerRecord; -//import org.eclipse.paho.client.mqttv3.*; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.stereotype.Component; -// -//import javax.annotation.PostConstruct; -//import javax.annotation.Resource; -//import java.util.List; -// -///** -// * @Author: LiDongJia -// * @Package: com.muyu.cloud.protocol.parsing.service.impl -// * @Project: 2112-car-cloud-server -// * @name: ParsingServiceImpl -// * @Date: 2024/9/28 14:31 -// * @Description: 协议解析实现层 -// */ -//@Log4j2 -//@Component -//public class ParsingMessage { -// -// @Resource -// private KafkaProducer kafkaProducer; -// -// @Autowired -// private VehicleCacheService vehicleCacheService; -// -// @Autowired -// private VehicleTypeCacheService vehicleTypeCacheService; -// -// @Autowired -// private AllMessageValueCacheService allMessageValueCacheService; -// -// /** -// * 协议解析 -// */ -// @PostConstruct -// public void mqttClient() { -// String topic = "vehicle"; -// String broker = "tcp://111.231.50.146:1883"; -// String clientId = "JavaSample"; -// -// try { -// // 第三个参数为空,默认持久化策略 -// MqttClient sampleClient = new MqttClient(broker, clientId); -// MqttConnectOptions connOpts = new MqttConnectOptions(); -// connOpts.setCleanSession(true); -// System.out.println("Connecting to broker: " + broker); -// sampleClient.connect(connOpts); -// sampleClient.subscribe(topic, 0); -// sampleClient.setCallback(new MqttCallback() { -// // 连接丢失 -// @Override -// public void connectionLost(Throwable throwable) { -// -// } -// -// // 连接成功 -// @Override -// public void messageArrived(String s, MqttMessage mqttMessage) throws Exception { -// System.out.println(new String(mqttMessage.getPayload())); -// JSONObject entries = this.protocolParsing(new String(mqttMessage.getPayload())); -// -// ProducerRecord producerRecord = new ProducerRecord<>("zeshi", -// entries.toString() ); -// kafkaProducer.send(producerRecord); -// System.out.println(entries); -// } -// -// /** -// * 协议解析 -// * @param messageStr -// * @return -// */ -// public JSONObject protocolParsing(String messageStr) { -// //根据空格切割数据 -// String[] hexArray = messageStr.split(" "); -// StringBuilder result = new StringBuilder(); -// //遍历十六进制数据转换为字符 -// for (String hex : hexArray) { -// int decimal = Integer.parseInt(hex, 16); -// result.append((char) decimal); +package com.muyu.cloud.protocol.parsing.test; + +import cn.hutool.json.JSONObject; +import com.muyu.domain.Vehicle; +import com.muyu.domain.VehicleType; +import com.muyu.domain.resp.MessageValueListResp; +import com.muyu.enterprise.cache.AllMessageValueCacheService; +import com.muyu.enterprise.cache.VehicleCacheService; +import com.muyu.enterprise.cache.VehicleTypeCacheService; +import lombok.extern.log4j.Log4j2; +import org.apache.kafka.clients.producer.KafkaProducer; +import org.apache.kafka.clients.producer.ProducerRecord; +import org.eclipse.paho.client.mqttv3.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; +import java.util.List; + +/** + * @Author: LiDongJia + * @Package: com.muyu.cloud.protocol.parsing.service.impl + * @Project: 2112-car-cloud-server + * @name: ParsingServiceImpl + * @Date: 2024/9/28 14:31 + * @Description: 协议解析实现层 + */ +@Log4j2 +@Component +public class ParsingMessage { + + @Resource + private KafkaProducer kafkaProducer; + + @Autowired + private VehicleCacheService vehicleCacheService; + + @Autowired + private VehicleTypeCacheService vehicleTypeCacheService; + + @Autowired + private AllMessageValueCacheService allMessageValueCacheService; + + /** + * 协议解析 + */ + @PostConstruct + public void mqttClient() { + String topic = "vehicle"; + String broker = "tcp://111.231.50.146:1883"; + String clientId = "JavaSample"; + + try { + // 第三个参数为空,默认持久化策略 + MqttClient sampleClient = new MqttClient(broker, clientId); + MqttConnectOptions connOpts = new MqttConnectOptions(); + connOpts.setCleanSession(true); + System.out.println("Connecting to broker: " + broker); + sampleClient.connect(connOpts); + sampleClient.subscribe(topic, 0); + sampleClient.setCallback(new MqttCallback() { + // 连接丢失 + @Override + public void connectionLost(Throwable throwable) { + + } + + // 连接成功 + @Override + public void messageArrived(String s, MqttMessage mqttMessage) throws Exception { + System.out.println(new String(mqttMessage.getPayload())); + JSONObject entries = this.protocolParsing(new String(mqttMessage.getPayload())); + + ProducerRecord producerRecord = new ProducerRecord<>("zeshi", + entries.toString() ); + kafkaProducer.send(producerRecord); + System.out.println(entries); + } + + /** + * 协议解析 + * @param messageStr + * @return + */ + public JSONObject protocolParsing(String messageStr) { + //根据空格切割数据 + String[] hexArray = messageStr.split(" "); + StringBuilder result = new StringBuilder(); + //遍历十六进制数据转换为字符 + for (String hex : hexArray) { + int decimal = Integer.parseInt(hex, 16); + result.append((char) decimal); + } + //取出车辆VIN码 + String vehicleVin = result.substring(1, 18); + log.info("车辆VIN码: " + vehicleVin); + //根据车辆VIN码查询报文模板ID + Vehicle vehicle = vehicleCacheService.get(vehicleVin); + Long vehicleTypeId = vehicle.getVehicleTypeId(); + VehicleType vehicleType = vehicleTypeCacheService.get(String.valueOf(vehicleTypeId)); + Long templateId = vehicleType.getMessageTemplateId(); + List templateList = allMessageValueCacheService.get(String.valueOf(templateId)); +// //从redis缓存中获取报文模板数据 +// try { +// String redisKey = "messageTemplate" + templateId; +// if (redisTemplate.hasKey(redisKey)) { +// List list = redisTemplate.opsForList().range(redisKey, 0, -1); +// templateList = list.stream() +// .map(obj -> JSON.parseObject(obj.toString(), MessageValueListResp.class)) +// .toList(); +// log.info("Redis缓存查询成功"); +// } else { +// Result> byTemplateId = remoteServiceClient.findByTemplateId(templateId); +// templateList = byTemplateId.getData(); +// templateList.forEach( +// listResp -> +// redisTemplate.opsForList().rightPush( +// redisKey, JSON.toJSONString(listResp) +// ) +// ); +// log.info("数据库查询成功"); +// } +// } catch (Exception e) { +// throw new RuntimeException("获取报文模板失败"); // } -// //取出车辆VIN码 -// String vehicleVin = result.substring(1, 18); -// log.info("车辆VIN码: " + vehicleVin); -// //根据车辆VIN码查询报文模板ID -// Vehicle vehicle = vehicleCacheService.get(vehicleVin); -// Long vehicleTypeId = vehicle.getVehicleTypeId(); -// VehicleType vehicleType = vehicleTypeCacheService.get(String.valueOf(vehicleTypeId)); -// Long templateId = vehicleType.getMessageTemplateId(); -//// List templateList = allMessageValueCacheService.get(templateId); -//// //从redis缓存中获取报文模板数据 -//// try { -//// String redisKey = "messageTemplate" + templateId; -//// if (redisTemplate.hasKey(redisKey)) { -//// List list = redisTemplate.opsForList().range(redisKey, 0, -1); -//// templateList = list.stream() -//// .map(obj -> JSON.parseObject(obj.toString(), MessageValueListResp.class)) -//// .toList(); -//// log.info("Redis缓存查询成功"); -//// } else { -//// Result> byTemplateId = remoteServiceClient.findByTemplateId(templateId); -//// templateList = byTemplateId.getData(); -//// templateList.forEach( -//// listResp -> -//// redisTemplate.opsForList().rightPush( -//// redisKey, JSON.toJSONString(listResp) -//// ) -//// ); -//// log.info("数据库查询成功"); -//// } -//// } catch (Exception e) { -//// throw new RuntimeException("获取报文模板失败"); -//// } -// //判断报文模板列表不为空 -// if (templateList.isEmpty()) { -// throw new RuntimeException("报文模版为空"); -// } -// //存储报文模版解析后的数据 -// JSONObject jsonObject = new JSONObject(); -// for (MessageValueListResp messageValue : templateList) { -// //起始位下标 -// Integer startIndex = messageValue.getMessageStartIndex() - 1; -// //结束位下标 -// Integer endIndex = messageValue.getMessageEndIndex(); -// //根据报文模版截取数据 -// String value = result.substring(startIndex, endIndex); -// //存入数据 -// jsonObject.put(messageValue.getMessageLabel(), value); -// } -// return jsonObject; -// } -// -// // 接收信息 -// @Override -// public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { -// -// } -// }); -// } catch (MqttException me) { -// System.out.println("reason " + me.getReasonCode()); -// System.out.println("msg " + me.getMessage()); -// System.out.println("loc " + me.getLocalizedMessage()); -// System.out.println("cause " + me.getCause()); -// System.out.println("excep " + me); -// me.printStackTrace(); -// } -// } -//} + //判断报文模板列表不为空 + if (templateList.isEmpty()) { + throw new RuntimeException("报文模版为空"); + } + //存储报文模版解析后的数据 + JSONObject jsonObject = new JSONObject(); + for (MessageValueListResp messageValue : templateList) { + //起始位下标 + Integer startIndex = messageValue.getMessageStartIndex() - 1; + //结束位下标 + Integer endIndex = messageValue.getMessageEndIndex(); + //根据报文模版截取数据 + String value = result.substring(startIndex, endIndex); + //存入数据 + jsonObject.put(messageValue.getMessageLabel(), value); + } + return jsonObject; + } + + // 接收信息 + @Override + public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { + + } + }); + } catch (MqttException me) { + System.out.println("reason " + me.getReasonCode()); + System.out.println("msg " + me.getMessage()); + System.out.println("loc " + me.getLocalizedMessage()); + System.out.println("cause " + me.getCause()); + System.out.println("excep " + me); + me.printStackTrace(); + } + } +} From bfa5391ae133478da59fc922934f3541cc3ec66d Mon Sep 17 00:00:00 2001 From: ywt <3471515127@qq.com> Date: Mon, 7 Oct 2024 16:11:37 +0800 Subject: [PATCH 10/11] =?UTF-8?q?feat():=20=E4=B8=89=E6=AC=A1=E4=BF=AE?= =?UTF-8?q?=E6=94=B9rabbitmq=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...fig.java => RabbitListenerConfigurer.java} | 26 ++----- .../rabbit/callback/ConfirmCallback.java | 44 ------------ .../rabbit/callback/ReturnsCallback.java | 39 ---------- .../rabbit/config/RabbitAdminConfig.java | 72 ------------------- .../RabbitMQMessageConverterConfig.java | 26 ------- ...ot.autoconfigure.AutoConfiguration.imports | 4 +- 6 files changed, 6 insertions(+), 205 deletions(-) rename cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/{config/RabbitListenerConfig.java => RabbitListenerConfigurer.java} (62%) delete mode 100644 cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/callback/ConfirmCallback.java delete mode 100644 cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/callback/ReturnsCallback.java delete mode 100644 cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitAdminConfig.java delete mode 100644 cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitMQMessageConverterConfig.java diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitListenerConfig.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/RabbitListenerConfigurer.java similarity index 62% rename from cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitListenerConfig.java rename to cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/RabbitListenerConfigurer.java index 0c99e3f..51cb359 100644 --- a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitListenerConfig.java +++ b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/RabbitListenerConfigurer.java @@ -1,6 +1,5 @@ -package com.muyu.common.rabbit.config; +package com.muyu.common.rabbit; -import org.springframework.amqp.rabbit.annotation.RabbitListenerConfigurer; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistrar; import org.springframework.beans.factory.annotation.Autowired; @@ -9,30 +8,21 @@ import org.springframework.context.annotation.Configuration; import org.springframework.messaging.converter.MappingJackson2MessageConverter; import org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory; -/** - * @author Lenovo - * @Description rabbitMQ的监听器配置 - */ - @Configuration -public class RabbitListenerConfig implements RabbitListenerConfigurer { +public class RabbitListenerConfigurer implements org.springframework.amqp.rabbit.annotation.RabbitListenerConfigurer { static { - // 设置为信任所有类型的反序列化,确保消息能够正确反序列化 System.setProperty("spring.amqp.deserialization.trust.all", "true"); } - /** - * RabbitMQ连接工厂,用于创建连接 - */ + //以下配置RabbitMQ消息服务 @Autowired public ConnectionFactory connectionFactory; /** - * 创建处理器方法工厂的bean - * - * @return DefaultMessageHandlerMethodFactory 实例,用于处理消息的转换和方法调用 + * 处理器方法工厂 + * @return */ @Bean public DefaultMessageHandlerMethodFactory handlerMethodFactory() { @@ -42,14 +32,8 @@ public class RabbitListenerConfig implements RabbitListenerConfigurer { return factory; } - /** - * 配置RabbitMQ监听器的消息处理方法工厂。 - * - * @param rabbitListenerEndpointRegistrar 实例,用于注册监听器的配置 - */ @Override public void configureRabbitListeners(RabbitListenerEndpointRegistrar rabbitListenerEndpointRegistrar) { - // 注册自定义的消息处理方法工厂 rabbitListenerEndpointRegistrar.setMessageHandlerMethodFactory(handlerMethodFactory()); } diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/callback/ConfirmCallback.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/callback/ConfirmCallback.java deleted file mode 100644 index fe4c6b2..0000000 --- a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/callback/ConfirmCallback.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.muyu.common.rabbit.callback; - -import jakarta.annotation.PostConstruct; -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.springframework.amqp.rabbit.connection.CorrelationData; -import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.stereotype.Component; - -/** - * @author Lenovo - * @Description 消息发送到broker确认回调 - */ - -@Slf4j -@Component -public class ConfirmCallback implements RabbitTemplate.ConfirmCallback { - - @Resource - private RabbitTemplate rabbitTemplate; - - /** - * 初始化 - */ - @PostConstruct - public void init() { - this.rabbitTemplate.setConfirmCallback(this); - } - - /** - * 回调确认方法(消息发送之后 消息无论发送成功还是失败都会执行这个回调方法) - * @param correlationData 回调的相关数据 - * @param ack 确认结果(true表示消息已经被broker接收,false表示消息未被broker接收) - * @param cause 失败原因(当ack为false时,表示拒绝接收消息的原因;当ack为true时,该值为空) - */ - @Override - public void confirm(CorrelationData correlationData, boolean ack, String cause) { - if (ack) { - log.info("消息发送到broker成功!"); - } else { - log.info("消息发送到broker失败,失败原因:{}", cause); - } - } -} diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/callback/ReturnsCallback.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/callback/ReturnsCallback.java deleted file mode 100644 index 6145c2c..0000000 --- a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/callback/ReturnsCallback.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.muyu.common.rabbit.callback; - -import jakarta.annotation.PostConstruct; -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import org.springframework.amqp.core.ReturnedMessage; -import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.stereotype.Component; - -/** - * @author Lenovo - * @Description 消息发送失败时回调 - */ - -@Slf4j -@Component -public class ReturnsCallback implements RabbitTemplate.ReturnsCallback { - - @Resource - private RabbitTemplate rabbitTemplate; - - /** - * 初始化 - */ - @PostConstruct - public void init() { - rabbitTemplate.setReturnsCallback(this); - } - - /** - * 消息发送到队列失败时执行 - * @param returnedMessage 返回的消息和元数据 - */ - @Override - public void returnedMessage(ReturnedMessage returnedMessage) { - log.info("消息:{}被交换机:{}回退!回退原因:{}", returnedMessage.getMessage().toString(), - returnedMessage.getExchange(), returnedMessage.getReplyText()); - } -} diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitAdminConfig.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitAdminConfig.java deleted file mode 100644 index d87c912..0000000 --- a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitAdminConfig.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.muyu.common.rabbit.config; - -import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; -import org.springframework.amqp.rabbit.connection.ConnectionFactory; -import org.springframework.amqp.rabbit.core.RabbitAdmin; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * @author Lenovo - * @Description RabbitMQ连接和管理功能配置 - */ - -@Configuration -public class RabbitAdminConfig { - - /** - * RabbitMQ服务器的主机地址 - */ - @Value("${spring.rabbitmq.host}") - private String host; - - /** - * RabbitMQ的用户名 - */ - @Value("${spring.rabbitmq.username}") - private String username; - - /** - * RabbitMQ的密码 - */ - @Value("${spring.rabbitmq.password}") - private String password; - - /** - * RabbitMQ的虚拟主机 - */ - @Value("${spring.rabbitmq.virtualhost}") - private String virtualhost; - - /** - * 创建并初始化RabbitAdmin实例 - * - * @return RabbitAdmin 实例 - */ - @Bean - public RabbitAdmin rabbitAdmin() { - RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory()); - rabbitAdmin.setAutoStartup(true); - return rabbitAdmin; - } - - /** - * 创建RabbitMQ连接工厂 - * - * @return ConnectionFactory 实例 - */ - @Bean - public ConnectionFactory connectionFactory() { - CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); - connectionFactory.setAddresses(host); - connectionFactory.setUsername(username); - connectionFactory.setPassword(password); - connectionFactory.setVirtualHost(virtualhost); - - // 配置发送确认回调时,次配置必须配置,否则即使在RabbitTemplate配置了ConfirmCallback也不会生效 - connectionFactory.setPublisherConfirmType(CachingConnectionFactory.ConfirmType.CORRELATED); - connectionFactory.setPublisherReturns(true); - return connectionFactory; - } -} diff --git a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitMQMessageConverterConfig.java b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitMQMessageConverterConfig.java deleted file mode 100644 index 6096282..0000000 --- a/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/config/RabbitMQMessageConverterConfig.java +++ /dev/null @@ -1,26 +0,0 @@ - -package com.muyu.common.rabbit.config; - -import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; -import org.springframework.amqp.support.converter.MessageConverter; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * @author Lenovo - * @Description rabbitMQ消息转换器配置 - */ - -@Configuration -public class RabbitMQMessageConverterConfig { - - /** - * 消息转换配置 - * - * @return 消息转换器 - */ - @Bean - public MessageConverter jsonMessageConverter() { - return new Jackson2JsonMessageConverter(); - } -} diff --git a/cloud-common/cloud-common-rabbit/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/cloud-common/cloud-common-rabbit/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 0b13700..3e6824a 100644 --- a/cloud-common/cloud-common-rabbit/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/cloud-common/cloud-common-rabbit/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,3 +1 @@ -com.muyu.common.rabbit.config.RabbitListenerConfig -com.muyu.common.rabbit.config.RabbitAdminConfig -com.muyu.common.rabbit.config.RabbitMQMessageConverterConfig +com.muyu.common.rabbit.RabbitListenerConfigurer From eb5960822e7617f772681bd1ec4c12ecae6d99ae Mon Sep 17 00:00:00 2001 From: sy200 <2063514638@qq.com> Date: Mon, 7 Oct 2024 18:33:41 +0800 Subject: [PATCH 11/11] =?UTF-8?q?feat:()=E4=BF=AE=E6=94=B9=E8=BD=A6?= =?UTF-8?q?=E8=BE=86=E5=88=97=E8=A1=A8=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cloud-common/cloud-common-rabbit/pom.xml | 5 ++++- .../muyu/enterprise/controller/VehicleTypeController.java | 4 ++-- .../src/main/resources/bootstrap.yml | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/cloud-common/cloud-common-rabbit/pom.xml b/cloud-common/cloud-common-rabbit/pom.xml index fa6d383..6f64264 100644 --- a/cloud-common/cloud-common-rabbit/pom.xml +++ b/cloud-common/cloud-common-rabbit/pom.xml @@ -11,6 +11,9 @@ cloud-common-rabbit + + cloud-common-rabbit 模块,提供RabbitMq消息队列的相关配置 + 17 17 @@ -32,4 +35,4 @@ - \ No newline at end of file + diff --git a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleTypeController.java b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleTypeController.java index 011604b..068cd45 100644 --- a/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleTypeController.java +++ b/cloud-modules/cloud-modules-enterprise/cloud-modules-enterprise-server/src/main/java/com/muyu/enterprise/controller/VehicleTypeController.java @@ -48,7 +48,7 @@ public class VehicleTypeController { * 查询所有车辆类型 * @return */ - @RequestMapping(path = "/", method = RequestMethod.POST) + @RequestMapping(path = "/findAll", method = RequestMethod.POST) @Operation(summary = "车辆类型列表",description = "车辆类型列表") public Result> findAll(){ List list = vehicleTypeService.list(); @@ -58,7 +58,7 @@ public class VehicleTypeController { list.forEach(vehicleType -> { vehicleTypeCacheService.put(String.valueOf(vehicleType.getVehicleTypeId()), vehicleType); }); - return Result.success(); + return Result.success(list); } /** diff --git a/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/bootstrap.yml index 73addd9..303ca8a 100644 --- a/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/bootstrap.yml +++ b/cloud-modules/cloud-modules-vehicle-gateway/src/main/resources/bootstrap.yml @@ -7,7 +7,7 @@ nacos: addr: 47.101.49.53:8848 user-name: nacos password: nacos - namespace: warn + namespace: seven # SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all # Spring spring: