如何在 MongoDB 异步驱动程序中限制线程池大小

How to limit thread pool size in MongoDB async driver

根据 JAVA-2561,自 3.6 版以来,可以限制 MongoDB 异步驱动程序创建的线程数。

但是,我找不到任何关于如何操作的文档。

这项工作似乎已在 this commit 中完成。希望这有帮助。

在检查了 D.SM 链接的提交后,我发现您需要在创建 AsynchronousSocketChannelStreamFactoryFactory 时指定一个 AsynchronousChannelGroup,然后您将其提供给客户端设置:

var channelGroup = AsynchronousChannelGroup.withFixedThreadPool (10, Thread::new);
return MongoClients.create (MongoClientSettings.builder ()
    .streamFactoryFactory (AsynchronousSocketChannelStreamFactoryFactory.builder ()
        .group (channelGroup)
        .build ())
    .build ());

AsynchronousChannelGroup 有几种静态工厂方法,请使用最符合您需要的一种。

使用 4.0.4 MongoDB 驱动程序(至少),如果未指定组,则使用 JVM 系统范围的默认组,该组是无界的。