From 789e445e70616424cf6ee6d6da195183bb8bd7d9 Mon Sep 17 00:00:00 2001
From: DongZeLiang <2746733890@qq.com>
Date: Fri, 14 Jun 2024 22:48:22 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 32 ++++++++
pom.xml | 35 +++++++++
vehicle-event-client/pom.xml | 27 +++++++
.../client/VehicleEventClientApplication.java | 17 ++++
.../event/client/config/KafkaConfig.java | 39 ++++++++++
.../event/client/config/MsgComponent.java | 77 +++++++++++++++++++
.../src/main/resources/application.yml | 7 ++
vehicle-event-common/pom.xml | 48 ++++++++++++
.../vhilce/event/common/config/MsgConfig.java | 26 +++++++
.../common/constants/VehicleConstant.java | 16 ++++
.../vhilce/event/common/model/EventModel.java | 29 +++++++
...ot.autoconfigure.AutoConfiguration.imports | 1 +
vehicle-event-server/pom.xml | 27 +++++++
.../server/VehicleEventServerApplication.java | 17 ++++
.../server/controller/TestMsgController.java | 35 +++++++++
.../src/main/resources/application.yml | 5 ++
16 files changed, 438 insertions(+)
create mode 100644 .gitignore
create mode 100644 pom.xml
create mode 100644 vehicle-event-client/pom.xml
create mode 100644 vehicle-event-client/src/main/java/com/muyu/vehicle/event/client/VehicleEventClientApplication.java
create mode 100644 vehicle-event-client/src/main/java/com/muyu/vehicle/event/client/config/KafkaConfig.java
create mode 100644 vehicle-event-client/src/main/java/com/muyu/vehicle/event/client/config/MsgComponent.java
create mode 100644 vehicle-event-client/src/main/resources/application.yml
create mode 100644 vehicle-event-common/pom.xml
create mode 100644 vehicle-event-common/src/main/java/com/muyu/vhilce/event/common/config/MsgConfig.java
create mode 100644 vehicle-event-common/src/main/java/com/muyu/vhilce/event/common/constants/VehicleConstant.java
create mode 100644 vehicle-event-common/src/main/java/com/muyu/vhilce/event/common/model/EventModel.java
create mode 100644 vehicle-event-common/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
create mode 100644 vehicle-event-server/pom.xml
create mode 100644 vehicle-event-server/src/main/java/com/muyu/vehicle/event/server/VehicleEventServerApplication.java
create mode 100644 vehicle-event-server/src/main/java/com/muyu/vehicle/event/server/controller/TestMsgController.java
create mode 100644 vehicle-event-server/src/main/resources/application.yml
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..c6ad711
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,32 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+/.idea
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..740f0a3
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,35 @@
+
+
+ 4.0.0
+
+ com.muyu
+ vehicle-event
+ 1.0.0
+ pom
+
+ vehicle-event-server
+ vehicle-event-client
+ vehicle-event-common
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-dependencies
+ 2.7.18
+ import
+ pom
+
+
+
+
+
+ 17
+ 17
+ UTF-8
+
+
+
diff --git a/vehicle-event-client/pom.xml b/vehicle-event-client/pom.xml
new file mode 100644
index 0000000..65f6511
--- /dev/null
+++ b/vehicle-event-client/pom.xml
@@ -0,0 +1,27 @@
+
+
+ 4.0.0
+
+ com.muyu
+ vehicle-event
+ 1.0.0
+
+
+ vehicle-event-client
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+ com.muyu
+ vehicle-event-common
+ 1.0.0
+
+
+
diff --git a/vehicle-event-client/src/main/java/com/muyu/vehicle/event/client/VehicleEventClientApplication.java b/vehicle-event-client/src/main/java/com/muyu/vehicle/event/client/VehicleEventClientApplication.java
new file mode 100644
index 0000000..b590bca
--- /dev/null
+++ b/vehicle-event-client/src/main/java/com/muyu/vehicle/event/client/VehicleEventClientApplication.java
@@ -0,0 +1,17 @@
+package com.muyu.vehicle.event.client;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * @Author: DongZeLiang
+ * @date: 2024/6/14
+ * @Description: 事件系统启动类
+ * @Version: 1.0
+ */
+@SpringBootApplication
+public class VehicleEventClientApplication {
+ public static void main (String[] args) {
+ SpringApplication.run(VehicleEventClientApplication.class, args);
+ }
+}
diff --git a/vehicle-event-client/src/main/java/com/muyu/vehicle/event/client/config/KafkaConfig.java b/vehicle-event-client/src/main/java/com/muyu/vehicle/event/client/config/KafkaConfig.java
new file mode 100644
index 0000000..4fb6411
--- /dev/null
+++ b/vehicle-event-client/src/main/java/com/muyu/vehicle/event/client/config/KafkaConfig.java
@@ -0,0 +1,39 @@
+package com.muyu.vehicle.event.client.config;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Author: DongZeLiang
+ * @date: 2024/6/14
+ * @Description: kafka配置
+ * @Version: 1.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Configuration
+@ConfigurationProperties(prefix = "kafka")
+public class KafkaConfig {
+
+
+ /**
+ * 主题
+ */
+ private String topic;
+
+ /**
+ * 分区
+ */
+ private Integer partition;
+
+ public String queueName(){
+ return topic + "." + partition;
+ }
+
+}
diff --git a/vehicle-event-client/src/main/java/com/muyu/vehicle/event/client/config/MsgComponent.java b/vehicle-event-client/src/main/java/com/muyu/vehicle/event/client/config/MsgComponent.java
new file mode 100644
index 0000000..5ae9064
--- /dev/null
+++ b/vehicle-event-client/src/main/java/com/muyu/vehicle/event/client/config/MsgComponent.java
@@ -0,0 +1,77 @@
+package com.muyu.vehicle.event.client.config;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.muyu.vhilce.event.common.model.EventModel;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.amqp.core.*;
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
+import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
+import org.springframework.amqp.rabbit.listener.api.ChannelAwareMessageListener;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+
+/**
+ * @Author: DongZeLiang
+ * @date: 2024/6/14
+ * @Description: 消息处理配置
+ * @Version: 1.0
+ */
+@Log4j2
+@Component
+public class MsgComponent {
+
+ /**
+ * 队列声明
+ * @param kafkaConfig 名称依据
+ * @return 队列对象
+ */
+ @Bean
+ public Queue initVehicleEventClientQueue(KafkaConfig kafkaConfig){
+ return new Queue(kafkaConfig.queueName(), true, true, true);
+ }
+
+ /**
+ * 绑定
+ * @param vehicleEventExchange 交换机
+ * @param initVehicleEventClientQueue 队列
+ * @return 绑定结果
+ */
+ @Bean
+ public Binding binding1(FanoutExchange vehicleEventExchange,
+ Queue initVehicleEventClientQueue) {
+ return BindingBuilder.bind(initVehicleEventClientQueue).to(vehicleEventExchange);
+ }
+
+ @Bean
+ public SimpleMessageListenerContainer messageListenerContainer(
+ ConnectionFactory connectionFactory,
+ KafkaConfig kafkaConfig
+ ) {
+ SimpleMessageListenerContainer simpleMessageListenerContainer = new SimpleMessageListenerContainer(connectionFactory);
+ //针对哪些队列(参数为可变参数)
+ simpleMessageListenerContainer.setQueueNames(kafkaConfig.queueName());
+ //同时有多少个消费者线程在消费这个队列,相当于线程池的线程数字。
+ simpleMessageListenerContainer.setConcurrentConsumers(3);
+ //最大的消费者线程数
+ simpleMessageListenerContainer.setMaxConcurrentConsumers(5);
+ //设置消息确认方式 NONE=不确认,MANUAL=手动确认,AUTO=自动确认;
+ //自动确认
+ simpleMessageListenerContainer.setAcknowledgeMode(AcknowledgeMode.AUTO);
+ //simpleMessageListenerContainer.setMessageListener(message -> log.info("springboot.rabbitmq-queue接收到的消息:[{}]", message));
+ //手动确认(单条确认)
+ simpleMessageListenerContainer.setAcknowledgeMode(AcknowledgeMode.MANUAL);
+ simpleMessageListenerContainer.setMessageListener((ChannelAwareMessageListener) (message, channel) -> {
+ log.info("springboot.rabbitmq-queue接收到的消息:[{}]",
+ JSONObject.parseObject(new String(message.getBody()), EventModel.class)
+ );
+ if (channel != null) {
+ channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
+ }
+ });
+ //消费端限流
+ simpleMessageListenerContainer.setPrefetchCount(1);
+ return simpleMessageListenerContainer;
+ }
+}
diff --git a/vehicle-event-client/src/main/resources/application.yml b/vehicle-event-client/src/main/resources/application.yml
new file mode 100644
index 0000000..6ba8468
--- /dev/null
+++ b/vehicle-event-client/src/main/resources/application.yml
@@ -0,0 +1,7 @@
+kafka:
+ topic: vehicle.gateway.001
+ partition: 0
+
+spring:
+ rabbitmq:
+ host: 175.24.138.82
diff --git a/vehicle-event-common/pom.xml b/vehicle-event-common/pom.xml
new file mode 100644
index 0000000..273b1ac
--- /dev/null
+++ b/vehicle-event-common/pom.xml
@@ -0,0 +1,48 @@
+
+
+ 4.0.0
+
+ com.muyu
+ vehicle-event
+ 1.0.0
+
+
+ vehicle-event-common
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-amqp
+
+
+
+ org.projectlombok
+ lombok
+
+
+
+ com.alibaba
+ fastjson
+ 2.0.25
+
+
+
+ com.alibaba.fastjson2
+ fastjson2
+ 2.0.50
+
+
+
diff --git a/vehicle-event-common/src/main/java/com/muyu/vhilce/event/common/config/MsgConfig.java b/vehicle-event-common/src/main/java/com/muyu/vhilce/event/common/config/MsgConfig.java
new file mode 100644
index 0000000..8e15c22
--- /dev/null
+++ b/vehicle-event-common/src/main/java/com/muyu/vhilce/event/common/config/MsgConfig.java
@@ -0,0 +1,26 @@
+package com.muyu.vhilce.event.common.config;
+
+import com.muyu.vhilce.event.common.constants.VehicleConstant;
+import org.springframework.amqp.core.FanoutExchange;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Author: DongZeLiang
+ * @date: 2024/6/14
+ * @Description: 消息配置
+ * @Version: 1.0
+ */
+public class MsgConfig {
+
+ /**
+ * 创建交换机
+ * @return 事件交互交换机
+ */
+ @Bean
+ public FanoutExchange vehicleEventExchange() {
+ return new FanoutExchange(VehicleConstant.VEHICLE_EVENT_EXCHANGE);
+ }
+
+
+}
diff --git a/vehicle-event-common/src/main/java/com/muyu/vhilce/event/common/constants/VehicleConstant.java b/vehicle-event-common/src/main/java/com/muyu/vhilce/event/common/constants/VehicleConstant.java
new file mode 100644
index 0000000..284b08c
--- /dev/null
+++ b/vehicle-event-common/src/main/java/com/muyu/vhilce/event/common/constants/VehicleConstant.java
@@ -0,0 +1,16 @@
+package com.muyu.vhilce.event.common.constants;
+
+/**
+ * @Author: DongZeLiang
+ * @date: 2024/6/14
+ * @Description: 事件系统常量
+ * @Version: 1.0
+ */
+public class VehicleConstant {
+
+ /**
+ * 车辆事件系统交换机
+ */
+ public static final String VEHICLE_EVENT_EXCHANGE = "vehicle.event";
+
+}
diff --git a/vehicle-event-common/src/main/java/com/muyu/vhilce/event/common/model/EventModel.java b/vehicle-event-common/src/main/java/com/muyu/vhilce/event/common/model/EventModel.java
new file mode 100644
index 0000000..b4c62d9
--- /dev/null
+++ b/vehicle-event-common/src/main/java/com/muyu/vhilce/event/common/model/EventModel.java
@@ -0,0 +1,29 @@
+package com.muyu.vhilce.event.common.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @Author: DongZeLiang
+ * @date: 2024/6/14
+ * @Description: 事件模型
+ * @Version: 1.0
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class EventModel {
+
+ /**
+ * 车辆VIN
+ */
+ private String vin;
+
+ /**
+ * 消息类型
+ */
+ private String type;
+}
diff --git a/vehicle-event-common/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/vehicle-event-common/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..5d710cb
--- /dev/null
+++ b/vehicle-event-common/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+com.muyu.vhilce.event.common.config.MsgConfig
diff --git a/vehicle-event-server/pom.xml b/vehicle-event-server/pom.xml
new file mode 100644
index 0000000..52352e4
--- /dev/null
+++ b/vehicle-event-server/pom.xml
@@ -0,0 +1,27 @@
+
+
+ 4.0.0
+
+ com.muyu
+ vehicle-event
+ 1.0.0
+
+
+ vehicle-event-server
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+ com.muyu
+ vehicle-event-common
+ 1.0.0
+
+
+
diff --git a/vehicle-event-server/src/main/java/com/muyu/vehicle/event/server/VehicleEventServerApplication.java b/vehicle-event-server/src/main/java/com/muyu/vehicle/event/server/VehicleEventServerApplication.java
new file mode 100644
index 0000000..de1e3bb
--- /dev/null
+++ b/vehicle-event-server/src/main/java/com/muyu/vehicle/event/server/VehicleEventServerApplication.java
@@ -0,0 +1,17 @@
+package com.muyu.vehicle.event.server;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * @Author: DongZeLiang
+ * @date: 2024/6/14
+ * @Description: 事件处理服务端
+ * @Version: 1.0
+ */
+@SpringBootApplication
+public class VehicleEventServerApplication {
+ public static void main (String[] args) {
+ SpringApplication.run(VehicleEventServerApplication.class, args);
+ }
+}
diff --git a/vehicle-event-server/src/main/java/com/muyu/vehicle/event/server/controller/TestMsgController.java b/vehicle-event-server/src/main/java/com/muyu/vehicle/event/server/controller/TestMsgController.java
new file mode 100644
index 0000000..9f8c5c2
--- /dev/null
+++ b/vehicle-event-server/src/main/java/com/muyu/vehicle/event/server/controller/TestMsgController.java
@@ -0,0 +1,35 @@
+package com.muyu.vehicle.event.server.controller;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.muyu.vhilce.event.common.constants.VehicleConstant;
+import com.muyu.vhilce.event.common.model.EventModel;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+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;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Author: DongZeLiang
+ * @date: 2024/6/14
+ * @Description: 测试msg
+ * @Version: 1.0
+ */
+@RestController
+@RequestMapping("/test")
+public class TestMsgController {
+
+ @Autowired
+ private RabbitTemplate rabbitTemplate;
+
+ @PostMapping
+ public String sendMsg(@RequestBody EventModel eventModel){
+ rabbitTemplate.convertSendAndReceive(VehicleConstant.VEHICLE_EVENT_EXCHANGE, "",
+ JSONObject.toJSONString(eventModel)
+
+ );
+ return "成功";
+ }
+
+}
diff --git a/vehicle-event-server/src/main/resources/application.yml b/vehicle-event-server/src/main/resources/application.yml
new file mode 100644
index 0000000..fc15596
--- /dev/null
+++ b/vehicle-event-server/src/main/resources/application.yml
@@ -0,0 +1,5 @@
+spring:
+ rabbitmq:
+ host: 175.24.138.82
+server:
+ port: 9023