如何在 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 系统范围的默认组,该组是无界的。
根据 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 系统范围的默认组,该组是无界的。