Scala 向数据库提供反应式api

Scala 向数据库提供反应式api,scala,akka,amazon-dynamodb,akka-stream,reactive-streams,Scala,Akka,Amazon Dynamodb,Akka Stream,Reactive Streams,如何为不支持流的db提供reactivestreams api?比如说dynamodb。在执行get调用时,dynamodb将返回所有结果。因此,即使我将get调用封装在一个源中,我如何处理来自下游阶段的反压力?另外,如何实现对数据库的写调用?我的水槽会是什么样子?这方面的任何指针都会有帮助。一个选项是使用ActorPublisher实现数据库Source- 见: 只要将这一特性与实现命令界面结合起来,就可以为您提供一个符合反应流的数据发布器,它可以处理下游的反压力。如果下游订阅者获取更多数据,

如何为不支持流的db提供reactivestreams api?比如说dynamodb。在执行get调用时,dynamodb将返回所有结果。因此,即使我将get调用封装在一个源中,我如何处理来自下游阶段的反压力?另外,如何实现对数据库的写调用?我的水槽会是什么样子?这方面的任何指针都会有帮助。

一个选项是使用
ActorPublisher实现数据库
Source
-

见:

只要将这一特性与实现命令界面结合起来,就可以为您提供一个符合反应流的数据发布器,它可以处理下游的反压力。如果下游订阅者获取更多数据,您的发布者将收到一条
请求
消息,如果需要主动向下游推送更多数据,您的发布者将能够访问当前感知的需求。然后,您可以通过从中创建
源文件
,将此发布服务器插入Akka Streams管道:

Source.actorPublisher[Data](MyPublisher.props).runWith(MySink)

为了处理底层数据库本身不是被动的这一事实,您需要在
ActorPublisher

中实现一些缓冲和轮询逻辑,一个选项是使用
ActorPublisher
实现数据库
源代码-

见:

只要将这一特性与实现命令界面结合起来,就可以为您提供一个符合反应流的数据发布器,它可以处理下游的反压力。如果下游订阅者获取更多数据,您的发布者将收到一条
请求
消息,如果需要主动向下游推送更多数据,您的发布者将能够访问当前感知的需求。然后,您可以通过从中创建
源文件
,将此发布服务器插入Akka Streams管道:

Source.actorPublisher[Data](MyPublisher.props).runWith(MySink)
为了处理底层数据库本身不是被动的这一事实,您需要在
ActorPublisher
中实现一些缓冲和轮询逻辑