【问题标题】:Akka-Streams: At-Least-Once-Delivery behaviour with Kafka and CassandraAkka-Streams:Kafka 和 Cassandra 的至少一次交付行为
【发布时间】:2015-05-27 07:33:37
【问题描述】:

我从 Akka Streams 开始,到目前为止一切顺利。但是,我遇到了一个我不知道如何处理的用例。该场景是一个流,其中 ActorPublisher 作为源消费来自 Kafka 的消息,订阅者作为接收器更新 Cassandra 表。

Kafka ~> 一些映射操作 ~> Cassandra

关键是,每次成功处理并插入 Cassandra 的消息时,我都想明确地向 Kafka 确认,以便在发生灾难和服务失败时,我可以重新读取消息,即某种的至少一次交付行为。就 Akka Streams 而言,我该如何解决这个问题?是受支持的方案吗?

确实,我总是可以为 Kafka 消费者配置自动提交行为,但我更愿意控制我阅读消息的方式。

更新

关于这个话题,我们目前正在评估 Reactive Kafka,他们在 kafka 中包含了从 0.8 版本开始的手动提交(这些人的荣誉)。这个特性可以让我们实现我们需要的 alod 行为。

【问题讨论】:

    标签: scala cassandra akka apache-kafka reactive-streams


    【解决方案1】:

    我认为您可以使用 PushPullStage 进行自定义流处理,如 akka streams documentation 中所述

    【讨论】:

    • 这听起来是对流式处理过程进行细粒度控制的正确方法。我去看看。谢谢!。
    • @JuanJoséVázquezDelgado。我正在研究一个类似的用例。 Storm 有这些消息传递保证,但如果 Akka 流能够为 Kafka 提供至少一次的消息传递保证,那么它看起来很有趣。你有机会调查这个吗?您有什么有趣的结论或发现可以与我们分享吗?
    • 我将尝试将 this approach 付诸实践,正如 Akka 列表中提到的那样。想出解决方案后,我会立即更新此线程。感谢您的关注。
    猜你喜欢
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 2015-04-11
    • 2018-10-18
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    相关资源
    最近更新 更多