如何为不支持流式传输的数据库提供reactivestreams api?比如让我们说例如dynamodb。在进行get调用时,dynamodb将返回所有结果。因此,即使我将get调用包装在Source中,如何处理下游阶段的背压?另外我如何实现对db的写调用?我的水槽会是什么样子?任何关于此的指示都会有所帮助。
答案 0 :(得分:0)
一种选择是使用Source
-
ActorPublisher
请参阅:http://doc.akka.io/docs/akka/2.4.11/scala/stream/stream-integrations.html#ActorPublisher
只需混合使用此特征并实现命令界面,即可为您提供符合反应流的数据发布者,可以处理下游背压。如果下游订阅者提取更多数据,您的发布者将收到Request
消息,如果需要主动推送更多数据,则可以访问当前感知需求。然后,您可以通过从中创建Source
将此发布者插入您的Akka Streams管道:
Source.actorPublisher[Data](MyPublisher.props).runWith(MySink)
为了处理底层数据库本身不是被动的事实,你需要在ActorPublisher
中实现一些缓冲和轮询逻辑。