一、yml配置
server:
port: 8021
spring:
application:
name: rabbitmq-provider
rabbitmq:
host: 192.168.68.68
port: 5672
username: guest
password: guest
virtual-host: /
二、死信队列配置文件
import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
@Configuration
public class DelayedRabbitConfig {
public static final String DELAYED_QUEUE = "delayed_queue";
public static final String DELAYED_EXCHANGE = "delayed_exchange";
public static final String DEAD_LETTER_QUEUE = "dead_letter_queue";
public static final String DEAD_LETTER_EXCHANGE = "dead_letter_exchange";
@Bean
public Queue delayedQueue() {
Map<String, Object> argumentsMap = new HashMap<>();
argumentsMap.put("x-dead-letter-exchange", DEAD_LETTER_EXCHANGE);
argumentsMap.put("x-dead-letter-routing-key", "dead.letter.123123");
argumentsMap.put("x-message-ttl", 10000);
return QueueBuilder.durable(DELAYED_QUEUE).withArguments(argumentsMap).build();
}
@Bean
public Exchange delayedExchange() {
return ExchangeBuilder.topicExchange(DELAYED_EXCHANGE).durable(true).autoDelete().build();
}
@Bean
public Binding bindingQueueExchange(@Qualifier("delayedQueue") Queue queue, @Qualifier("delayedExchange") Exchange exchange) {
return BindingBuilder.bind(queue).to(exchange).with("delayed.#").noargs();
}
@Bean
public Queue deadLetterQueue() {
return QueueBuilder.durable(DEAD_LETTER_QUEUE).build();
}
@Bean
public Exchange deadLetterExchange() {
return ExchangeBuilder.topicExchange(DEAD_LETTER_EXCHANGE).durable(true).autoDelete().build();
}
@Bean
public Binding bindingQueueExchangeDlx(@Qualifier("deadLetterQueue") Queue queue, @Qualifier("deadLetterExchange") Exchange exchange) {
return BindingBuilder.bind(queue).to(exchange).with("dead.letter.#").noargs();
}
}
三、测试
@Test
void testSendDealMessage() {
rabbitTemplate.convertAndSend(DelayedRabbitConfig.DELAYED_EXCHANGE,
"delayed.message",
"我是一个死信信息,嘎嘎嘎嘎嘎");
}