From 6043c55ce5a3c4f146e20286a707f67d09384674 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 28 六月 2024 16:00:07 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 src/main/java/com/ycl/jxkg/rabbitmq/RabbitMQConfig.java |   91 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 91 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ycl/jxkg/rabbitmq/RabbitMQConfig.java b/src/main/java/com/ycl/jxkg/rabbitmq/RabbitMQConfig.java
new file mode 100644
index 0000000..91bf54c
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/rabbitmq/RabbitMQConfig.java
@@ -0,0 +1,91 @@
+package com.ycl.jxkg.rabbitmq;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.core.Binding;
+import org.springframework.amqp.core.BindingBuilder;
+import org.springframework.amqp.core.DirectExchange;
+import org.springframework.amqp.core.Queue;
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/6/28 13:39
+ */
+@Slf4j
+@Configuration
+public class RabbitMQConfig {
+
+    @Autowired
+    private ConnectionFactory connectionFactory;
+
+    // 鍒涘缓鏅�氶槦鍒�
+    @Bean
+    public Queue examQueue() {
+        Map<String, Object> args = new HashMap<>();
+        // 璁剧疆姝讳俊浜ゆ崲鏈�
+        args.put("x-dead-letter-exchange", "dlxExchange");
+        return new Queue("jxkg", true, false, false, args);
+    }
+
+    // 鍒涘缓姝讳俊浜ゆ崲鏈�
+    @Bean
+    public DirectExchange dlxExchange() {
+        return new DirectExchange("dlxExchange");
+    }
+
+    // 鍒涘缓鑰冭瘯浣跨敤鐨勬淇¢槦鍒�
+    @Bean
+    public Queue examDlxQueue() {
+        return new Queue("examDlxQueue", true);
+    }
+
+    // 鍒涘缓浼氳浣跨敤鐨勬淇¢槦鍒�
+    @Bean
+    public Queue meetDlxQueue() {
+        return new Queue("meetDlxQueue", true);
+    }
+
+     // 缁戝畾鑰冭瘯姝讳俊闃熷垪鍒版淇′氦鎹㈡満
+     @Bean
+     public Binding examDlxBinding(Queue examDlxQueue, DirectExchange dlxExchange) {
+         return BindingBuilder.bind(examDlxQueue).to(dlxExchange).with("exam");
+     }
+
+    // 缁戝畾浼氳姝讳俊闃熷垪鍒版淇′氦鎹㈡満
+    @Bean
+    public Binding meetDlxBinding(Queue meetDlxQueue, DirectExchange dlxExchange) {
+        return BindingBuilder.bind(meetDlxQueue).to(dlxExchange).with("meet");
+    }
+
+    @Bean
+    public RabbitTemplate rabbitTemplate() {
+        RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
+
+        // 璁剧疆鍥為��鍥炶皟锛屽彧鑳藉叏灞�璁剧疆涓�涓�
+        rabbitTemplate.setReturnCallback((message, replyCode, replyText, exchange, routingKey) -> {
+            log.error("娑堟伅鍙戦�佸け璐ワ紝鐩爣浜ゆ崲鏈猴細{}锛岃矾鐢憋細{}锛岄敊璇俊鎭細{}", exchange, routingKey, replyText);
+        });
+        // 璁剧疆纭鍥炶皟锛屽叏灞�璁剧疆涓�涓紝鏍规嵁鍏宠仈鏁版嵁(CorrelationData)杩涜瀵瑰簲澶勭悊
+        rabbitTemplate.setConfirmCallback((correlationData, ack, cause) -> {
+            if (ack) {
+                MyCorrelationData myCorrelationData = (MyCorrelationData) correlationData;
+                System.out.println(myCorrelationData);
+                // 鎴愬姛
+                log.info("娑堟伅鎴愬姛鍙戦�佸埌浜ゆ崲鏈�");
+            } else {
+                // 澶辫触
+                // todo 鏍规嵁娑堟伅涓嶅悓锛屽鐞嗕笉鍚�
+                log.error("娑堟伅鍙戦�佸け璐�");
+            }
+        });
+        return rabbitTemplate;
+    }
+
+}

--
Gitblit v1.8.0