akka 流是不是提供有保证的交付
Posted
技术标签:
【中文标题】akka 流是不是提供有保证的交付【英文标题】:do akka streams provide guaranteed deliveryakka 流是否提供有保证的交付 【发布时间】:2019-12-25 01:58:11 【问题描述】:以下内容来自文档(akka):
交货保证
Stream refs 为其 trainsport 使用正常的 actor 消息传递,因此提供相同级别的基本交付保证。通过需求重新交付和序列错误检测,流引用确实在一定程度上扩展了语义。换句话说:
messages are sent over actor remoting
which relies on TCP (classic remoting or Artery TCP) or Aeron UDP for basic redelivery mechanisms
messages are guaranteed to to be in-order
messages can be lost, however:
a dropped demand signal will be re-delivered automatically (similar to system messages)
a dropped element signal will cause the stream to fail
(链接->https://doc.akka.io/docs/akka/current/stream/stream-refs.html)
读完之后,我很好奇。那么 akka 流是否提供保证交付。 例如。一堆参与者将事件存储在日志中,该日志将批处理消息的流(假设最多 1000 条消息的流程为 1 秒)提供给另一个参与者。这能保证交货吗?
另外,作为一个附带问题。如果系统消息自动重新传递丢弃的消息,这是否意味着事件流可以保证传递?
【问题讨论】:
【参考方案1】:StreamRefs
目前(Akka 2.6.1)除了元素的序列号和要求重新发送信号外,不实现任何可靠性:
接收端有一个缓冲区,如果流发生故障,在发送端看到来自接收端的失败信号之前,除了飞行中的任何元素外,其中的所有元素都将丢失(该信号通过网络,因此不是立即的) )。
【讨论】:
以上是关于akka 流是不是提供有保证的交付的主要内容,如果未能解决你的问题,请参考以下文章