美文网首页
rabbitmq 注解配置使用(三)消息确认(路由,队列)

rabbitmq 注解配置使用(三)消息确认(路由,队列)

作者: 蘑菇Ai布丁 | 来源:发表于2018-11-29 14:30 被阅读0次

在使用rabbitmq的时候,我们怎么保证发送的消息一定就成功到达了路由,有怎么保证路由里的消息成功到达了队列。

在rabbitmq中提供了这样的回调机制。

一:路由消息接收回调,在rabbitmq中提供了一个接口ConfirmCallback,里面的confirm方法提供了路由确认的各种参数,我们只需要写一个确认类实现这个接口

@Component

public class RabbitTemplateConfigimplements RabbitTemplate.ConfirmCallback {

@Autowired

    private RabbitTemplaterabbitTemplate;

@PostConstruct

    public void init(){

rabbitTemplate.setConfirmCallback(this);//指定 ConfirmCallback

    }

@Override

    public void confirm(CorrelationData correlationData,boolean ack, String cause) {

System.out.println("消息唯一标识:"+correlationData);

System.out.println("确认结果:"+ack);

System.out.println("失败原因:"+cause);

}

}

里面的返回信息说明了各个参数的意义

二:对应这路由确认,rabbitmq也提供了ReturnCallback类,来确认队列接收消息的回调

@Component

public class RabbitTemplateReturnConfigimplements RabbitTemplate.ReturnCallback {

@Autowired

    private RabbitTemplaterabbitTemplate;

@PostConstruct

    public void init(){

rabbitTemplate.setReturnCallback(this);//指定 ReturnCallback

    }

@Override

    public void returnedMessage(Message message,int replyCode, String replyText, String exchange, String routingKey) {

System.out.println("消息主体 message : "+message);

System.out.println("消息主体 message : "+replyCode);

System.out.println("描述:"+replyText);

System.out.println("消息使用的交换器 exchange : "+exchange);

System.out.println("消息使用的路由键 routing : "+routingKey);

}

}

这样我们就可以监听到我们的消息在路由和队列中的发送状态了。

相关文章

网友评论

      本文标题:rabbitmq 注解配置使用(三)消息确认(路由,队列)

      本文链接:https://www.haomeiwen.com/subject/pjqfcqtx.html