【问题标题】:Is batch message sending possible with Sink.actorRefWithAck?Sink.actorRefWithAck 可以批量发送消息吗?
【发布时间】:2019-09-27 10:31:22
【问题描述】:

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

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

但这需要接收器更改以使用序列,我们假设这是不可能的。

【问题讨论】:

    标签: scala akka actor akka-stream


    【解决方案1】:

    不,这对于Sink.actorRefWithAck() 是不可能的,同时保持单个消息在参与者邮箱而不是整个批次中排队。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      • 2019-01-28
      • 2021-11-03
      • 2016-04-06
      • 1970-01-01
      相关资源
      最近更新 更多