大家好,我是Tom哥~
Kafka 消息框架,大家一定不陌生,很多人工作中都有接触。它的核心思路,通过一个高性能的MQ服务
来连接生产
和消费
两个系统,达到系统间的解耦,有很强的扩展性。
你可能会有疑问,如果中间某一个环节断掉了,那怎么办?
这种情况,我们称之为消息丢失
,会造成系统间的数据不一致。
那如何解决这个问题?需要从生产端
、MQ服务端
、消费端
,三个维度来处理
1、生产端
生产端的职责就是,确保生产的消息能到达MQ服务端,这里我们需要有一个响应来判断本次的操作是否成功。
Future<RecordMetadata> send(ProducerRecord<K, V> record, Callback callback)
比如,上面的代码就是通过一个Callback
函数,来判断消息是否发送成功,如果失败,我们需要补偿处理。
另外,为了提升发送时的灵活性,kafka提供了多种参数,供不同业务自