向数据库提供响应式api

时间:2016-10-03 17:10:54

标签: scala akka amazon-dynamodb akka-stream reactive-streams

如何为不支持流式传输的数据库提供reactivestreams api?比如让我们说例如dynamodb。在进行get调用时,dynamodb将返回所有结果。因此,即使我将get调用包装在Source中,如何处理下游阶段的背压?另外我如何实现对db的写调用?我的水槽会是什么样子?任何关于此的指示都会有所帮助。

1 个答案:

答案 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中实现一些缓冲和轮询逻辑。