From d37c46342fa2d3a30ab685d4faaf14ee8842f737 Mon Sep 17 00:00:00 2001 From: jieyuu <645634619@qq.com> Date: Mon, 23 Sep 2024 21:13:06 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=9C=8D=E5=8A=A1=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E9=98=9F=E5=88=97=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../net/jieyuu/config/RabbitMQConfig.java | 128 ++++++++++++++++++ .../service/impl/ProductOrderServiceImpl.java | 6 +- .../src/main/resources/application.yml | 20 +++ 3 files changed, 149 insertions(+), 5 deletions(-) create mode 100644 xdclass-order-service/src/main/java/net/jieyuu/config/RabbitMQConfig.java diff --git a/xdclass-order-service/src/main/java/net/jieyuu/config/RabbitMQConfig.java b/xdclass-order-service/src/main/java/net/jieyuu/config/RabbitMQConfig.java new file mode 100644 index 0000000..1f0b23f --- /dev/null +++ b/xdclass-order-service/src/main/java/net/jieyuu/config/RabbitMQConfig.java @@ -0,0 +1,128 @@ +package net.jieyuu.config; + + +import lombok.Data; +import org.springframework.amqp.core.Binding; +import org.springframework.amqp.core.Exchange; +import org.springframework.amqp.core.Queue; +import org.springframework.amqp.core.TopicExchange; +import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; +import org.springframework.amqp.support.converter.MessageConverter; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.HashMap; +import java.util.Map; + +@Configuration +@Data +public class RabbitMQConfig { + + /** + * 交换机 + */ + @Value("${mqconfig.order_event_exchange}") + private String eventExchange; + + + /** + * 延迟队列 + */ + @Value("${mqconfig.order_close_delay_queue}") + private String orderCloseDelayQueue; + + /** + * 关单队列 + */ + @Value("${mqconfig.order_close_queue}") + private String orderCloseQueue; + + + + /** + * 进入延迟队列的路由key + */ + @Value("${mqconfig.order_close_delay_routing_key}") + private String orderCloseDelayRoutingKey; + + + /** + * 进入死信队列的路由key + */ + @Value("${mqconfig.order_close_routing_key}") + private String orderCloseRoutingKey; + + /** + * 过期时间 + */ + @Value("${mqconfig.ttl}") + private Integer ttl; + + /** + * 消息转换器 + * + * @return + */ + @Bean + public MessageConverter messageConverter() { + return new Jackson2JsonMessageConverter(); + } + + /** + * 自动创建交换机 Topic类型 也可dirct交换机 + * 一个微服务一个交换机 + * + * @return + */ + @Bean + public Exchange orderEventExchange() { + return new TopicExchange(eventExchange, true, false); + } + + /** + * 延迟队列 + * + * @return + */ + @Bean + public Queue orderCloseDelayQueue() { + Map args = new HashMap<>(3); + args.put("x-dead-letter-routing-key", orderCloseRoutingKey); + args.put("x-dead-letter-exchange", eventExchange); + args.put("x-message-ttl", ttl); + return new Queue(orderCloseDelayQueue, true, false, false, args); + } + + /** + * 死信队列 普通队列,用于被监听 + * + * @return + */ + @Bean + public Queue orderCloseQueue() { + return new Queue(orderCloseQueue, true, false, false); + } + + /** + * 延迟队列建立绑定关系 + * + * @return + */ + @Bean + public Binding orderCloseDelayBinding() { + return new Binding(orderCloseDelayQueue, Binding.DestinationType.QUEUE, eventExchange, orderCloseDelayRoutingKey, null); + } + + /** + * 死信队列建立绑定关系 + * + * @return + */ + @Bean + public Binding orderCloseBinding() { + return new Binding(orderCloseQueue, Binding.DestinationType.QUEUE, eventExchange, orderCloseRoutingKey, null); + } + + +} diff --git a/xdclass-order-service/src/main/java/net/jieyuu/service/impl/ProductOrderServiceImpl.java b/xdclass-order-service/src/main/java/net/jieyuu/service/impl/ProductOrderServiceImpl.java index 88b07bb..61191ed 100644 --- a/xdclass-order-service/src/main/java/net/jieyuu/service/impl/ProductOrderServiceImpl.java +++ b/xdclass-order-service/src/main/java/net/jieyuu/service/impl/ProductOrderServiceImpl.java @@ -112,7 +112,7 @@ public class ProductOrderServiceImpl extends ServiceImpl