若支付服务和mq之前网络链接失败/mq挂掉/交易服务挂掉,都有可以让支付订单无法更新,所以导致发送者不可靠,mq本身不可靠,消费者不可靠,消息延迟,针对以下问题
生产者可靠性
支付服务和mq之间有可能连不上,连不上怎么办,可以增加失败重连
配置文件中配置-重连
测试结果-重试后请求3次,间隔1s
卡在那里等着,不会再请求其他内容,阻塞式的重试。200毫秒
生产者确认
发消息会回调
消息到了回通知我们
可以文件配置参数
也可以增加callbark配置
对spring容器的通告
confirmcallback,成功也会通知失败也会通知
每次发消息指定
如何保证生产者消息发送可靠?
首先我们可以在mq中配置生产者的重连机制,连接mq出现网络波动时,会重新连接;这样就可以避免因为网络波动导致消息发送失败
其次如果是其他原因导致的失败,rabbitmq还支持生产者确认机制,只要我们开启了生产者确认,当发送消息到mq时,mq就会给一个ack的回执,如果发送失败时,他会返回nack的回执;我们就可以基于回执的情况来判断,如果失败是不是可以重发消息
通过以上手段就可以基本保障生产者消息的可靠性,但是以上手段都会增加系统的负担和额外的资源开销,无需开启确认机制