commit 43c8437f41bb41723d270f6e2bc9342ca9a1cb42 Author: fst1996 <2411194573@qq.com> Date: Thu Sep 14 21:05:28 2023 +0800 初始化 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..05d7c76 --- /dev/null +++ b/.gitignore @@ -0,0 +1,47 @@ +###################################################################### +# Build Tools + +.gradle +/build/ +!gradle/wrapper/gradle-wrapper.jar + +target/ +!.mvn/wrapper/maven-wrapper.jar + +###################################################################### +# IDE + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### JRebel ### +rebel.xml +### NetBeans ### +nbproject/private/ +build/* +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ +target/ + +###################################################################### +# Others +*.log +*.xml.versionsBackup +*.swp + +!*/build/*.java +!*/build/*.html +!*/build/*.xml diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..3b7ea31 --- /dev/null +++ b/pom.xml @@ -0,0 +1,50 @@ + + + + menghang-common + com.bawei + 3.6.0 + + 4.0.0 + + 3.6.0 + menghang-common-rabbit + + + + menghang-public + 梦航-public + http://192.168.111.130:8081/repository/maven-public/ + + + + + + menghang-releases + 梦航-releases + http://192.168.111.130:8081/repository/maven-releases/ + + + + + 8 + 8 + UTF-8 + + + + + + com.bawei + menghang-common-core + 3.6.0 + + + + org.springframework.boot + spring-boot-starter-amqp + + + diff --git a/src/main/java/com/bawei/common/rabbit/config/RabbitMQConfig.java b/src/main/java/com/bawei/common/rabbit/config/RabbitMQConfig.java new file mode 100644 index 0000000..2b51ede --- /dev/null +++ b/src/main/java/com/bawei/common/rabbit/config/RabbitMQConfig.java @@ -0,0 +1,46 @@ +package com.bawei.common.rabbit.config; + +import org.springframework.amqp.rabbit.annotation.RabbitListenerConfigurer; +import org.springframework.amqp.rabbit.connection.ConnectionFactory; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistrar; +import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; +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; +import org.springframework.messaging.handler.annotation.support.MessageHandlerMethodFactory; + +@Configuration +public class RabbitMQConfig implements RabbitListenerConfigurer { + + // 可以将json串反序列化为对象 + @Override + public void configureRabbitListeners(RabbitListenerEndpointRegistrar rabbitListenerEndpointRegistrar) { + rabbitListenerEndpointRegistrar.setMessageHandlerMethodFactory(messageHandlerMethodFactory()); + } + + @Bean + MessageHandlerMethodFactory messageHandlerMethodFactory(){ + DefaultMessageHandlerMethodFactory messageHandlerMethodFactory = new DefaultMessageHandlerMethodFactory(); + messageHandlerMethodFactory.setMessageConverter(mappingJackson2MessageConverter()); + return messageHandlerMethodFactory; + } + + @Bean + public MappingJackson2MessageConverter mappingJackson2MessageConverter(){ + return new MappingJackson2MessageConverter(); + } + + /** + * 提供自定义RabbitTemplate,将对象序列化为json串 + * @param connectionFactory + * @return + */ + @Bean + public RabbitTemplate jacksonRabbitTemplate(ConnectionFactory connectionFactory) { + RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory); + rabbitTemplate.setMessageConverter(new Jackson2JsonMessageConverter()); + return rabbitTemplate; + } +} diff --git a/src/main/java/com/bawei/common/rabbit/constant/QueueConstant.java b/src/main/java/com/bawei/common/rabbit/constant/QueueConstant.java new file mode 100644 index 0000000..658f232 --- /dev/null +++ b/src/main/java/com/bawei/common/rabbit/constant/QueueConstant.java @@ -0,0 +1,19 @@ +package com.bawei.common.rabbit.constant; + +/** + * @author DongZl + * @description: 队列常量 + * @Date 2022-10-21 下午 01:59 + */ +public class QueueConstant { + + /** + * 测试队列名称 + */ + public static final String TEST_NAME = "test"; + + /** + * 商品新增队列 + */ + public static final String PRODUCT_ADD = "product_add"; +} diff --git a/src/main/java/com/bawei/common/rabbit/domain/Message.java b/src/main/java/com/bawei/common/rabbit/domain/Message.java new file mode 100644 index 0000000..f76d440 --- /dev/null +++ b/src/main/java/com/bawei/common/rabbit/domain/Message.java @@ -0,0 +1,96 @@ +package com.bawei.common.rabbit.domain; + + +import com.alibaba.fastjson2.JSONObject; +import com.bawei.common.core.utils.uuid.IdUtils; +import com.bawei.common.core.web.domain.BaseEntity; + +import javax.swing.text.html.parser.Entity; +import java.io.Serializable; + +/** + * @author DongZl + * @description: RabbitMq消息体 + * @Date 2022-10-21 上午 09:14 + */ +public class Message implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 消息ID + */ + private String id; + + /** + * 消息创建时间 + */ + private long createTime; + + /** + * 消息主体 + */ + private T body; + + public Message () { + } + + public Message (String id, T body) { + this.id = id; + this.createTime = System.currentTimeMillis(); + this.body = body; + } + + /** + * 自动生成消息ID + * @param body 消息主体 + * @return + */ + public static Message builderMsg(T body){ + return new Message(IdUtils.fastUUID(), body); + } + + /** + * 生成消息主题 + * @param id 唯一标识 + * @param body 消息主体 + * @return + */ + public static Message builderMsg(String id, T body){ + return new Message(id, body); + } + + + public String getId () { + return id; + } + + public void setId (String id) { + this.id = id; + } + + public long getCreateTime () { + return createTime; + } + + public void setCreateTime (long createTime) { + this.createTime = createTime; + } + + public T getBody () { + return body; + } + + public void setBody (T body) { + this.body = body; + } + + @Override + public String toString () { + return "Message{" + + "id='" + id + '\'' + + ", createTime=" + createTime + + ", body=" + JSONObject.toJSONString(body) + + '}'; + } +} diff --git a/src/main/java/com/bawei/common/rabbit/enums/QueueEnum.java b/src/main/java/com/bawei/common/rabbit/enums/QueueEnum.java new file mode 100644 index 0000000..4af9585 --- /dev/null +++ b/src/main/java/com/bawei/common/rabbit/enums/QueueEnum.java @@ -0,0 +1,37 @@ +package com.bawei.common.rabbit.enums; + +import com.bawei.common.rabbit.constant.QueueConstant; + +/** + * @author DongZl + * @description: 队列枚举 + * @Date 2022-10-21 下午 01:44 + */ +public enum QueueEnum { + + + TEST(QueueConstant.TEST_NAME, "测试队列"), + PRODUCT_ADD(QueueConstant.PRODUCT_ADD, "商品新增队列"), + ; + + private String queueName; + + private String queueDesc; + + public String queueName () { + return queueName; + } + + public String queueDesc () { + return queueDesc; + } + + public String queueStr(){ + return new StringBuilder(this.queueName).append("(").append(this.queueDesc).append(")").toString(); + } + + QueueEnum (String queueName, String queueDesc) { + this.queueName = queueName; + this.queueDesc = queueDesc; + } +} diff --git a/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 0000000..42ba023 --- /dev/null +++ b/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.bawei.common.rabbit.config.RabbitMQConfig