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

使用DynamoDb将CompletableFuture包装到Mono

尉迟跃
2023-03-14

我知道java DynamoDB的SDK被认为是异步非阻塞的,但我的问题是:

Q、 dynamo更新是否仍需要与operator publishOn在另一个线程上,以便在反应性上下文中更安全?

<代码>单声道。fromFuture(table.update())。publishOn()

共有1个答案

秦胡媚
2023-03-14

假设您使用的是AWS Java SDK v2,则无需担心将其委托给线程池。AWS SDK已经确保您不会阻止重要线程。有关详细信息,请参阅文档:

用于Java 2的AWS SDK。x使用异步事件驱动网络应用程序框架Netty来处理I/O线程。用于Java 2的AWS SDK。x在Netty背后创建ExecutorService,以完成从HTTP客户端请求返回到Netty客户端的未来。如果开发人员选择停止或Hibernate线程,这种抽象可以降低应用程序中断异步进程的风险。默认情况下,为每个异步客户端生成50个线程,并在ExecutorService内的队列中进行管理。

实际上,它使用的线程数甚至超过了真正反应式应用程序所需的线程数。幸运的是,SDK还提供了在需要时选择退出该行为的选项。

还有一件值得注意的事情是,CompletableFuture(可完成的未来)是渴望的,而不是被动型的。因此,最好使用lambda版本的fromFuture方法:

Mono.fromFuture(() -> table.update())
 类似资料:
  • 问题内容: 康达4.2.13 MacOSX 10.12.1 我正在尝试将软件包安装到使用anaconda创建的新环境(虚拟)中。 在Anaconda文档中,这说得很好。它的完成方法与virtualenv相同。 激活要放置程序的环境,然后pip安装程序… 我在Ananconda中创建了一个空环境,如下所示: 激活它: 然后,我可以在终端中看到我正在环境中工作。当我尝试使用安装软件包时,出现了问题:

  • 假设我有一个DynamoDB表,比如 每个项目都有一个名称,属于一个客户,所以我也有一个索引 假设我有以下数据: 现在,我想查询特定客户的所有项目,并过滤部分名称的结果(本质上是一个搜索操作)。例如,给我所有属于客户42且名称中包含“果汁”的项目(橙汁和苹果汁是预期结果)。 如果我查询,我将得到一个错误,说不支持。我可以理解这个限制,因为意味着必须扫描所有项目(在给定的散列键内),但是,你可以用查

  • [机译]Conda 4.2.13 MacOSX 10.12.1 我正在尝试将程序包从安装到使用anaconda创建的新环境(虚拟)中。在Anaconda文档中,它说这很好。这与virtualenv的做法相同。 激活你想要放置程序的环境,然后安装一个程序。。。 我在Anaconda中创建了一个空环境,如下所示: 激活它: 然后,我可以在终端中看到我正在我的env中工作。问题来了,当我尝试安装一个包使

  • 目前,我的应用程序需要一些应该附加到日志消息中的值。由于它在SL4J下使用Log4J2,我的第一个想法是对Log4J记录器进行包装,在那里我可以向输出中添加新值。 一些博客指出我应该写一个日志,一个LoggerFactory和一个活页夹。但它们已经相当过时(2011年),并且不希望这些代码与当前的lib一起工作。 我还看到了一些关于线程上下文的东西,看起来像我想要构建这个测试。 所以我的问题是什么

  • 问题内容: 我正在尝试让我的Jframe完全匹配我的图像尺寸,以便当我尝试通过绘制矩形来获取某个区域的Rectangle2D坐标时,它为我提供了它在屏幕上出现的位置的真实坐标。实际图像。 此解决方案的目标是将PDF转换为图像,使用可视映射器识别特定区域,然后使用PDFBox(PDFTextStripperbyArea)针对该区域进行提取。 以下代码给出的坐标未提取所需区域。 这是代码: 有人可以帮

  • 我正在从数据库中读取pdf文件列表,对它们进行解析,并用它们执行一些任务 当我阅读这个pdf列表时,我发现从pdf中提取图像需要花费更多的时间,而且我不需要阻止我的主线程来阅读图像。所以我想在一个单独的线程中执行提取图像 我想从一个又一个pdf中读取图像,而不是一次将所有pdf加载到内存中(由于内存问题)。所以我只想要两条线;一个应该是主线程(从pdf中读取一些文本并执行其他操作),另一个应该是提