gpt4 book ai didi

elasticsearch - 使用Akka Streams,我如何知道源何时完成?

转载 作者:行者123 更新时间:2023-12-02 23:54:41 25 4
gpt4 key购买 nike

我有一个Alpakka Elasticsearch Sink,我在两次请求之间一直保持联系。收到请求时,我从HTTP请求中创建一个Source,并将其转换为Elasticsearch SourceWriteMessage,然后使用mySource.runWith(theElasticseachSink)运行它。

  • 来源完成后如何获得通知?似乎没有有用的东西实现。
  • 是否会将源代码的完成传递给接收器,这意味着我每次都必须创建一个新的?
  • 如果上面的方法是肯定的,是否可以通过Flow.fromSourceAndSink将它们解耦吗?

  • 我的目标是知道HTTP下载何时完成(包括它经过的 via)并能够重用接收器。

    最佳答案

    您可以根据需要传递流的单个部分,甚至可以传递整个executabe图(那些是不可变的)。 run()调用可实现流程,但不会更改图形或其部分。

    1)
    既然您想知道HttpDownload是何时通过流程的,为什么不使用完整的图形Future [Done]?假设您对elasticsearch的调用是异步的,那么这应该是相等的,因为您的接收器只会触发该调用,而不会等待。
    您也可以使用Source.queue(https://doc.akka.io/docs/akka/2.5/stream/operators/Source/queue.html)并将消息添加到队列中,然后再使用已定义的图形,以便在需要处理时可以添加新消息。这也实现了SourceQueueWithComplete,允许您停止流。
    除此之外,还可以在需要时重用接收器,而无需等待其他流使用它。

    2)如上所述:不,您不需要多次实例化接收器。

    最好的祝福,
    和我

    关于elasticsearch - 使用Akka Streams,我如何知道源何时完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54492285/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com