0

上下文:客户端向服务器发送调用以执行作业。对于每项工作,我都会创建一个新的 MongoClient(使用 Morphia):

MongoClient mongoClient = new MongoClient("000.00.000.000", 27017);
Morphia morphia = new Morphia();
Datastore ds = morphia.createDatastore(mongoClient, "myDatastore");
//operations on the datastore: save, find, update...

问题:这是好的做法/完全错误吗?或者我应该为整个应用程序只创建一个 MongoClient / Morphia 实例作为全局变量,并让它被每个作业调用?(如此处所述

4

1 回答 1

1

Mongo Java 驱动程序的文档说:

Java MongoDB 驱动程序是线程安全的。例如,如果您在 Web 服务环境中使用,您应该创建一个 MongoClient 实例,并且可以在每个请求中使用它。MongoClient 对象维护到数据库的内部连接池(默认池大小为 10)。对于对 DB 的每个请求(查找、插入等),Java 线程将从池中获取连接,执行操作并释放连接。这意味着每次使用的连接(套接字)可能不同。

所以......每个应用程序一个 MongoClient,而不是每个调用的工作。

于 2013-09-14T18:33:36.950 回答