是否可以使用Sink.actorRefWithAck发送批量消息?

问题描述 投票:0回答:1

我正在使用Akka流,并且遇到了Sink.actorRefWithAck。我了解它会发送一条消息,并且仅在收到上一条消息的确认后才尝试从流中拉入另一个元素。有没有办法使用此接收器批处理消息?示例:提取五个消息,仅在确认前五个消息后才提取下五个消息。我考虑过类似的事情

Sink.actorRefWithAck

但是这将要求接收者改变以使用序列,让我们假设这是不可能的。

scala akka actor akka-stream
1个回答
0
投票

否,对于source.grouped(5).to(Sink.actorRefWithAck(...)) ,这是不可能的,同时要使单个邮件而不是整个批次都在actor邮箱中排队。

更急切地在演员收件箱中将消息排队的一种想法是使用Sink.actorRefWithAck()。这会将source.mapAsync(n)(ask-actor).to(Sink.ignore)发送给演员,然后第一个收到演员的响应后,它将拉入并排队一个新元素。

© www.soinside.com 2019 - 2024. All rights reserved.