目录
消息队列中主要分为三部分
- 生产者
- 消息队列
- 消费者
一、消息不漏
1、消费者如何保证不漏
对于我么你使用的dms,是通过异步调用dms的接口进行消息发布并等待dms返回给生产者消息落盘结果,如若异常生产者系统会抛出异常并通过监控主动通知人工查看
kafka中生产者会异步接受kafka的落盘回执,可通过kafka的配置参数设置具体回执通知的时间点。生产者对于异常回执结果可以进行异常通知
2、消息队列如何保证不漏:
保证消息不漏的方法 分片(100万数据分十片,每片10万数据),多副本,多机房(多地域)
kafak 可以设置几个副本落盘成功进行成功的回执通知。
3、消费者如何保证不漏:
消息队列和消费者传递信息有两种方式:消息队列推送,消费者主动读取
dms使用的是主动推送的方式,dms会根据预先配置的订阅组,推送该信息并接收回执,如果3分钟未收到消费者成功接收的回执,有自己的重推机制进行补偿。最大重推次数还未成功的话,会通知异常。
kafka使用的是消费者主动读取的方式,每个消费者自己保存已读消息,和未读消息。可以通过处理消息个数与队列消息总数来判断是否完全消费。
二、消息不重:
1、生产者:
标记信息的推送结果,成功消息不重新推送
2、消息队列:
消息队列信息会重复吗?
3、消费者:
通过业务字段对消息进行幂等
三、保证消息的顺序
通过消息发送和读取串行化可以保持,但是最小消耗还是通过业务逻辑进行顺序控制。