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