diff --git a/.gitignore b/.gitignore
index 09bdfea..c8574b8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,7 @@
target/
!.mvn/wrapper/maven-wrapper.jar
+out
######################################################################
# IDE
diff --git a/cloud-common/cloud-common-rabbit/pom.xml b/cloud-common/cloud-common-rabbit/pom.xml
new file mode 100644
index 0000000..fa6d383
--- /dev/null
+++ b/cloud-common/cloud-common-rabbit/pom.xml
@@ -0,0 +1,35 @@
+
+
+ 4.0.0
+
+ com.muyu
+ cloud-common
+ 3.6.3
+
+
+ cloud-common-rabbit
+
+
+ 17
+ 17
+ UTF-8
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-amqp
+
+
+
+
+ com.muyu
+ cloud-common-core
+
+
+
+
\ No newline at end of file
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
new file mode 100644
index 0000000..51cb359
--- /dev/null
+++ b/cloud-common/cloud-common-rabbit/src/main/java/com/muyu/common/rabbit/RabbitListenerConfigurer.java
@@ -0,0 +1,41 @@
+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
new file mode 100644
index 0000000..189ea2c
--- /dev/null
+++ b/cloud-common/cloud-common-rabbit/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+com.muyu.common.rabbit.RabbitListenerConfigurer
\ No newline at end of file
diff --git a/cloud-common/cloud-common-redis/src/main/java/com/muyu/common/redis/configure/FastJson2JsonRedisSerializer.java b/cloud-common/cloud-common-redis/src/main/java/com/muyu/common/redis/configure/FastJson2JsonRedisSerializer.java
index 5959aad..f575143 100644
--- a/cloud-common/cloud-common-redis/src/main/java/com/muyu/common/redis/configure/FastJson2JsonRedisSerializer.java
+++ b/cloud-common/cloud-common-redis/src/main/java/com/muyu/common/redis/configure/FastJson2JsonRedisSerializer.java
@@ -9,6 +9,7 @@ import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.SerializationException;
import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
/**
* Redis使用FastJson序列化
@@ -16,7 +17,8 @@ import java.nio.charset.Charset;
* @author muyu
*/
public class FastJson2JsonRedisSerializer implements RedisSerializer {
- public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
+
+ public static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;
static final Filter AUTO_TYPE_FILTER = JSONReader.autoTypeFilter(Constants.JSON_WHITELIST_STR);
diff --git a/cloud-common/pom.xml b/cloud-common/pom.xml
index 1db526f..d00dfc6 100644
--- a/cloud-common/pom.xml
+++ b/cloud-common/pom.xml
@@ -19,6 +19,7 @@
cloud-common-datasource
cloud-common-system
cloud-common-xxl
+ cloud-common-rabbit
cloud-common
diff --git a/cloud-modules/cloud-modules-system/pom.xml b/cloud-modules/cloud-modules-system/pom.xml
index 994df2c..4116679 100644
--- a/cloud-modules/cloud-modules-system/pom.xml
+++ b/cloud-modules/cloud-modules-system/pom.xml
@@ -76,6 +76,11 @@
com.muyu
cloud-common-xxl
+
+
+ com.muyu
+ cloud-common-rabbit
+
diff --git a/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/rabbit/RabbitTest.java b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/rabbit/RabbitTest.java
new file mode 100644
index 0000000..791711f
--- /dev/null
+++ b/cloud-modules/cloud-modules-system/src/main/java/com/muyu/system/rabbit/RabbitTest.java
@@ -0,0 +1,53 @@
+package com.muyu.system.rabbit;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.muyu.system.domain.SysConfig;
+import jakarta.annotation.PostConstruct;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.amqp.core.Queue;
+import org.springframework.amqp.rabbit.annotation.RabbitHandler;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Log4j2
+@RestController
+@RequestMapping("/rabbit/test")
+public class RabbitTest {
+
+ @Autowired
+ private RabbitTemplate rabbitTemplate;
+
+ @Bean
+ public Queue initQueue(){
+ return new Queue("rabbit.test.init");
+ }
+
+ @RabbitListener(queues = "rabbit.test.init")
+ public void msg(SysConfig sysConfig){
+ log.info("消息队列:[{}], 消息内容:[{}]", "rabbit.test.init", JSONObject.toJSONString(sysConfig));
+ }
+
+ @PostConstruct
+ public void init(){
+ new Thread(() -> {
+ try {
+ Thread.sleep(5000);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ SysConfig sysConfig = SysConfig.builder()
+ .configId(1L)
+ .configKey("ceshi-key")
+ .configName("测试名称")
+ .configType("测试类型")
+ .configValue("测试值")
+ .build();
+ rabbitTemplate.convertAndSend("rabbit.test.init",sysConfig);
+ }).start();
+ }
+
+}
diff --git a/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml b/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml
index 6df6d3e..b5e11d5 100644
--- a/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml
+++ b/cloud-modules/cloud-modules-system/src/main/resources/bootstrap.yml
@@ -8,9 +8,13 @@ nacos:
user-name: nacos
password: nacos
namespace: muyu-cloud
-
+# SPRING_AMQP_DESERIALIZATION_TRUST_ALL=true spring.amqp.deserialization.trust.all
# Spring
spring:
+ amqp:
+ deserialization:
+ trust:
+ all: true
main:
allow-bean-definition-overriding: true
application:
@@ -49,6 +53,8 @@ spring:
- application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
# xxl-job 配置文件
- application-xxl-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
+ # rabbit 配置文件
+ - application-rabbit-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
logging:
level:
com.muyu.system.mapper: DEBUG
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 0aa75ce..b30f0df 100644
--- a/pom.xml
+++ b/pom.xml
@@ -259,6 +259,13 @@
cloud-common-xxl
${muyu.version}
+
+
+
+ com.muyu
+ cloud-common-rabbit
+ ${muyu.version}
+