gpt4 book ai didi

akka-stream - 阿卡流 : Best practice to initialise and dispose resources of a sink

转载 作者:行者123 更新时间:2023-12-01 12:13:22 26 4
gpt4 key购买 nike

我有一个场景,我想将图表的结果写入 CSV。这包括文件的创建、文件编写器的初始化( I'm using this library ),最后,在流完成后,我想再次处理/关闭编写器。

理想情况下,我想将此逻辑封装在接收器中,但我想知道添加初始化和处置逻辑的最佳实践/ Hook 。

最佳答案

给定任何类型的资源,而不仅仅是一个文件,它消耗数据元素以及needs to be closed :

type Data = ???

trait DataConsumer extends Function1[Data, Unit] with AutoCloseable

可以创建一个Sink,使用watchTermination 完成后关闭消费者。 Flow 的方法可以放在前面:

def createDataConsumerSink(dataConsumer: DataConsumer) : Sink[Data,_] = 
Flow[Data].watchTermination()( (_, f) => f foreach (_ => dataConsumer.close()))
.to(Sink.foreach[Data](dataConsumer.apply))

关于akka-stream - 阿卡流 : Best practice to initialise and dispose resources of a sink,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50174849/

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