🚧 生产者端消息确认机制结束
This commit is contained in:
parent
9d8778d56c
commit
74b0a31c1e
|
@ -0,0 +1,39 @@
|
|||
package cn.bunny.mq.mqdemo.config;
|
||||
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.amqp.core.ReturnedMessage;
|
||||
import org.springframework.amqp.rabbit.connection.CorrelationData;
|
||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Slf4j
|
||||
@Configuration
|
||||
@RequiredArgsConstructor
|
||||
public class RabbitConfiguration implements RabbitTemplate.ConfirmCallback, RabbitTemplate.ReturnsCallback {
|
||||
|
||||
private final RabbitTemplate rabbitTemplate;
|
||||
|
||||
@PostConstruct
|
||||
public void initRabbitTemplate() {
|
||||
rabbitTemplate.setConfirmCallback(this);
|
||||
rabbitTemplate.setReturnsCallback(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void confirm(CorrelationData correlationData, boolean ack, String cause) {
|
||||
System.out.println("============correlationData <回调函数打印> = " + correlationData);
|
||||
System.out.println("============ack <输出> = " + ack);
|
||||
System.out.println("============cause <输出> = " + cause);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void returnedMessage(ReturnedMessage returnedMessage) {
|
||||
// 发送到队列失败才会走这个
|
||||
log.error("消息主体:{}", returnedMessage.getMessage().getBody());
|
||||
log.error("应答码:{}", returnedMessage.getReplyCode());
|
||||
log.error("消息使用的父交换机:{}", returnedMessage.getExchange());
|
||||
log.error("消息使用的路由键:{}", returnedMessage.getRoutingKey());
|
||||
}
|
||||
}
|
|
@ -14,7 +14,10 @@ class MqDemoApplicationTests {
|
|||
@Autowired
|
||||
private RabbitTemplate rabbitTemplate;
|
||||
|
||||
/* 测试发送消息 */
|
||||
/**
|
||||
* 1. 测试发送消息,示例代码
|
||||
* 2. 测试成功的情况
|
||||
*/
|
||||
@Test
|
||||
void publishTest() {
|
||||
String exchangeDirect = RabbitMQMessageListenerConstants.EXCHANGE_DIRECT;
|
||||
|
@ -25,4 +28,26 @@ class MqDemoApplicationTests {
|
|||
rabbitTemplate.convertAndSend(exchangeDirect, routingKeyDirect, JSON.toJSONString(bunny));
|
||||
}
|
||||
|
||||
/* 测试失败交换机的情况 */
|
||||
@Test
|
||||
void publishExchangeErrorTest() {
|
||||
String exchangeDirect = RabbitMQMessageListenerConstants.EXCHANGE_DIRECT;
|
||||
String routingKeyDirect = RabbitMQMessageListenerConstants.ROUTING_KEY_DIRECT;
|
||||
rabbitTemplate.convertAndSend(exchangeDirect, routingKeyDirect, "----失败的消息发送----");
|
||||
|
||||
Bunny bunny = Bunny.builder().rabbitName("Bunny").age(2).build();
|
||||
rabbitTemplate.convertAndSend(exchangeDirect + "~", routingKeyDirect, JSON.toJSONString(bunny));
|
||||
}
|
||||
|
||||
|
||||
/* 测试失败队列的情况 */
|
||||
@Test
|
||||
void publishQueueErrorTest() {
|
||||
String exchangeDirect = RabbitMQMessageListenerConstants.EXCHANGE_DIRECT;
|
||||
String routingKeyDirect = RabbitMQMessageListenerConstants.ROUTING_KEY_DIRECT;
|
||||
rabbitTemplate.convertAndSend(exchangeDirect, routingKeyDirect, "----失败的队列发送----");
|
||||
|
||||
Bunny bunny = Bunny.builder().rabbitName("Bunny").age(2).build();
|
||||
rabbitTemplate.convertAndSend(exchangeDirect, routingKeyDirect + "~", JSON.toJSONString(bunny));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue