Sink.actorRefWithAck是否可以发送批处理消息?

时间:2019-09-27 10:31:22

标签: scala akka actor akka-stream

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

source.grouped(5).to(Sink.actorRefWithAck(...))

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

1 个答案:

答案 0 :(得分:1)

否,对于Sink.actorRefWithAck(),这是不可能的,同时将单个邮件(而不是整个批次)保留在参与者邮箱中。

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