0

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

:发电机更新是否仍然需要在另一个线程上使用 operator publishOn才能在反应性上下文中更安全?

Mono.fromFuture(table.update()).publishOn();

4

1 回答 1

0

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

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

实际上,它甚至使用了比真正反应式应用程序所需的更多线程。幸运的是,如果需要,SDK 还提供了选择退出该行为的选项。

另一件需要注意的事情CompletableFuture是与响应式类型不同的是渴望Mono。出于这个原因,最好使用该fromFuture方法的 lambda 版本:

Mono.fromFuture(() -> table.update())
于 2022-02-10T18:24:17.523 回答