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