当前位置: 首页 > 知识库问答 >
问题:

为数据库提供反应式 API

须旭
2023-03-14

如何为不支持流式处理的数据库提供反应式流 API?比如说dymodb。执行 get 调用时,dynamodb 将返回所有结果。因此,即使我将 get 调用包装在源中,如何处理来自下游阶段的背压?另外,如何实现写入 db 中的写入调用?我的水槽会是什么样子?任何关于此的指针都会有所帮助。

共有1个答案

廖绍辉
2023-03-14

一种选择是使用ActorPublisher-实现您的数据库Source-

请参见: http://doc.akka.io/docs/akka/2.4.11/scala/stream/stream-integrations.html#ActorPublisher

只需混合这种特性并实现命令界面,就可以为您提供一个符合reactive streams的数据发布器,该发布器可以处理下游背压。如果下游订阅者获取更多数据,您的发布者将收到一条请求消息,如果需要主动向下游推送更多数据,则可以访问当前感知的需求。然后,您可以通过从中创建<code>源代码</code>将此发布服务器插入您的Akka Streams管道:

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

为了处理底层数据库本身没有反应的事实,您需要在< code>ActorPublisher中实现一些缓冲和轮询逻辑。

 类似资料:
  • 问题内容: 我已经使用Vert.x工具包来创建反应性应用程序,并支持MySQL和Postgres等关系数据库。我知道Spring为某些NoSQL数据库(例如Cassandra和Mongo)提供了响应式支持,但他们愿意为关系数据库提供相同的支持吗? 问题答案: Spring Framework是一个用于提高开发人员生产力的库,Spring的投资组合项目(例如Spring Data,Spring Se

  • 在 Pagination 和 Sorting 部分, 我们已经介绍了如何允许终端用户选择一个特定的数据页面,根据一些字段对它们进行展现与排序。 因为分页和排序数据的任务是很常见的,所以Yii提供了一组封装好的data provider类。 数据提供者是一个实现了 yii\data\DataProviderInterface 接口的类。 它主要用于获取分页和数据排序。它经常用在 data widge

  • 用户数据文件时在元数据服务中的一个特殊的键,它保存了一份能给虚拟机实例中的云服务使用的文件。比如,cloud-init程序便使用了用户数据文件,这个程序是一个源自Ubuntu的开源包,能用在多个Linux发行版上,它可以接管云实例的初始化过程。 您可以将用户数据写在一份本地文件中,然后在创建实例时用--user-data <user-data-file>参数将其传入。 $ nova boot --

  • 正在执行查询,但未得到任何结果。 路由器:-api/v1/service/appt/usr/{usr_id} 存储库代码, 从日志中查询, 项目表中的数据, 邮递员请求, 不确定这有什么问题。它不会返回记录。

  • 我尝试创建一些基于反应式堆栈(反应器WebFlux)的基本Spring 5应用程序。 我的下一个目标是实现能够: 保存书籍。 查找所有图书。 我的存储库需要涵盖以下场景: 方案 A: 没有人订阅FindAll 有人保存了一本书(id=1) Client1订阅FindAll 书籍(id=1)被推送到Client1(Client1保持订阅状态,流未完成!) 有人保存了一本书(id=2) 书籍(id=2

  • Oracle .NET 团队正在评估 EF Core 支持,但还没有宣布任何时间点。你可以在 Oracle EF Core 提供程序请求 上进行表决。 请直接向 Oracle 社区站点 询问关于此提供商的任何问题,包括发布时间表。