rabbitmq中confirm模式通过yml文件中的publisher-confirm-type: correlated设置后,还需要调用confirmSelect()方法吗
时间: 2024-02-16 12:04:16 浏览: 68
RabbitMQ消息模式之Confirm确认消息
5星 · 资源好评率100%
是的,即使在yml文件中设置了`publisher-confirm-type: correlated`来启用了RabbitMQ中的Confirm模式,也需要在发送消息前调用`confirmSelect()`方法来开启Confirm模式。在Spring AMQP中,可以通过在`RabbitTemplate`中设置`confirmCallback`和`returnCallback`来监听Confirm消息的返回结果和返回失败的消息,同时在需要发送消息的时候,调用`confirmSelect()`方法来开启Confirm模式。例如:
```java
@Configuration
public class RabbitConfig {
@Autowired
private RabbitTemplate rabbitTemplate;
@PostConstruct
public void init() {
rabbitTemplate.setConfirmCallback(new ConfirmCallback() {
@Override
public void confirm(CorrelationData correlationData, boolean ack, String cause) {
// Confirm消息发送成功或失败后的回调处理
}
});
rabbitTemplate.setReturnCallback(new ReturnCallback() {
@Override
public void returnedMessage(Message message, int replyCode, String replyText, String exchange, String routingKey) {
// Confirm消息发送失败后的回调处理
}
});
rabbitTemplate.setMandatory(true);
rabbitTemplate.setConfirmSelect();
}
}
```
需要注意的是,在使用Confirm模式时,需要设置`mandatory`为`true`,否则当消息发送失败时,不会调用`ReturnCallback`接口的方法。同时,在`RabbitTemplate`中需要设置`confirmCallback`和`returnCallback`来监听Confirm消息的返回结果和返回失败的消息。
阅读全文