消息队列常见问题之如何保证消费的可靠性传输

你用了消息队列,你知道这个消息队列如何保证消息的可靠性传输吗

消息可靠性传输,是非常重要,消息如果丢失,可能带来严重后果,一般从是个角度去分析
producer端:
	不采用oneway发送,使用同步或者异步方式发送,做好重试,但是重试的Message key必须唯一
	投递的日志需要保存,关键字段,投递时间、投递状态、重试次数、请求体、响应体

broker端:
	多主多从架构,需要多机房
	同步双写、异步刷盘 (同步刷盘则可靠性更高,但是性能差点,根据业务选择)
	机器断电重启:异步刷盘,消息丢失;同步刷盘消息不丢失
	硬件故障:可能存在丢失,看队列架构
	
consumer端
	消息队列一般都提供的ack机制,发送者为了保证消息肯定消费成功,只有消费者明确表示消费成功,队列才会认为消息消费成功,中途断电、抛出异常等都不会认为成功——即都会重新投递,每次在确保处理完这个消息之后,在代码里调用ack,告诉消息队列消费成功
消费端务必做好幂等性处理
消息消费务必保留日志,即消息的元数据和消息体,

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值