java偏移量是什么_java – 在Apache Kafka中读取消息偏移量

我对Kafka很新,我们正在使用Kafka 0.8.1.

我需要做的是从主题中消费一条消息.为此,我将不得不用Java编写一个使用者,它将使用来自主题的消息,然后将该消息保存到数据库.保存消息后,将向Java使用者发送一些确认.如果确认为真,则应从主题中消耗下一条消息.如果confirmldgement为false(这意味着由于某些错误消息,从主题中读取,无法保存到数据库中),则应再次读取该消息.

在此示例中,offset在run方法中计算为“readOffset”.我需要玩那个吗?对于例如我可以使用LatestTime()而不是EarliestTime(),如果是false,我会在使用offset-1之前将偏移重置为1.

这是我应该怎么做?

解决方法:

我认为你可以使用高级消费者(http://kafka.apache.org/documentation.html#highlevelconsumerapi),这应该比SimpleConsumer更容易使用.我不认为消费者需要重新读取Kafka关于数据库故障的消息,因为消费者已经拥有这些消息并且可以将它们重新发送到数据库或执行其认为合适的任何其他操作.

高级消费者存储从Zookeeper中的特定分区读取的最后一个偏移量(基于消费者组名称),以便当消费者进程终止并稍后重新启动时(可能在其他主机上),它可以继续处理消息离开了.可以定期将此偏移量自动保存到Zookeeper(请参阅使用者属性auto.commit.enable和auto.commit.interval.ms),或通过调用ConsumerConnector.commitOffsets让应用程序逻辑保存它.另见https://cwiki.apache.org/confluence/display/KAFKA/Consumer+Group+Example.

我建议你在收到DB确认后关闭自动提交并自行提交补偿.因此,您可以确保在消费者失败的情况下从Kafka重新读取未处理的消息,并且所有提交给Kafka的消息最终将至少一次到达DB(但不​​是“恰好一次”).

标签:consumer,offset,java,apache-kafka

来源: https://codeday.me/bug/20190722/1506419.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值