我正在使用Akka流,并且遇到Sink.actorRefWithAck
。我了解它会发送一条消息,并且仅在收到上一条消息的确认后才尝试从流中拉入另一个元素。有没有办法使用此接收器批处理消息?示例:提取五个消息,仅在确认前五个消息后才提取下五个消息。我想过类似的事情
source.grouped(5).to(Sink.actorRefWithAck(...))
但是这将要求接收者更改以使用序列,而我们假设这是不可能的。
答案 0 :(得分:1)
否,对于Sink.actorRefWithAck()
,这是不可能的,同时将单个邮件(而不是整个批次)保留在参与者邮箱中。
更急切地在参与者收件箱中排队消息的一种想法是使用source.mapAsync(n)(ask-actor).to(Sink.ignore)
。这会将n
发送给演员,然后第一个收到演员的响应后,它将拉动并加入新元素。