根据最近的一篇文章,Kafka可以在复制配置下丢弃已确认的消息:
https://aphyr.com/posts/293-call-me-maybe-kafka
如果必须绝对确定消息已传递给消费者,那么此解决方案是否适用于所有情况:
- 建立两个主题,一个用于发送,一个用于接收
- producer在发送主题上发送消息,包括令牌(UUID)
- producer将发送的消息和令牌独立于Kafka
保存到本地存储
- 生产者仅在收到来自消费者的关于接收主题的确认消息时才从本地存储中删除已发送的消息,该消息包含在发送主题上发送的相同令牌。
- 生产者使用相同的令牌定期重新发送消息,直到收到确认。唯一令牌可确保即使邮件被收到两次(第一次未因任何原因得到确认),也会被消费者识别为重复邮件。
即使丢失邮件,它是否也能正常工作?这个模式有名字吗?