- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
在阅读了 mongo 文档中说 MongoClient 的每个实例都处理自己的池之后,我将如何在整个应用程序中只拥有一个实例?
这似乎是使用单例 bean 的场景,但这似乎会破坏连接池的目的。如果一次只有一个用户能够访问包含 MongoClient 实例的 bean,那么肯定不会同时使用池中的多个连接。
我对单例的理解是否错误,或者这确实是正确的方法?
最佳答案
but this seems like it would defeat the purpose of connection pooling.If only one user would be able to access the bean that contains the MongoClient instance at a time, surely multiple connections in the pool would never be used at the same time.
javadoc
说:
The Java MongoDB driver is thread safe. If you are using in a web serving environment, for example, you should create a single MongoClient instance, and you can use it in every request. The MongoClient object maintains an internal pool of connections to the database (default maximum pool size of 100). For every request to the DB (find, insert, etc) the Java thread will obtain a connection from the pool, execute the operation, and release the connection. This means the connection (socket) used may be different each time.
因此,当您创建一个包含客户端的单例时。如 Javadoc 中所述,它可以重复使用。不需要同步,因为它是线程安全的。
how would I go about only having one instance across my whole application?
其中一种实现可能是:
public enum ConnectionFactory {
CONNECTION;
private MongoClient client = null;
private ConnectionFactory() {
try {
client = new MongoClient();
} catch (Exception e) {
// Log it.
}
}
public MongoClient getClient() {
if (client == null)
throw new RuntimeException();
return client;
}
}
并在整个应用程序中使用客户端。 Connection pooling
将由 MongoClient
照管。
MongoClient client = ConnectionFactory.CONNECTION.getClient();
或使用@singleton 注解:
@Singleton
public class SingletonA {
}
关于mongodb - 在 JavaEE Web 服务中使用单个 MongoClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26084965/
const { MongoClient, ObjectID } = require('mongodb'); const debug = require('debug')('mongodb-connec
当我启动我的一些服务时,它会报告此类警告并且服务会停止: /usr/lib64/python2.6/site-packages/pymongo/topology.py:75: UserWarning:
我不喜欢新的 mongo,MongoDB 在 PHP7 中需要几个库。 PHP 5 中的 MongoClient(已弃用)更加舒适和轻便! 我决定启动一个脚本并比较两个版本,结果非常令人惊讶: Mon
我正在尝试实现 MongoDB 连接处理程序,但遇到了一个问题,我的 Database即使我的 MongoClient() 调用成功,调用也会返回 None。 #mongoconn.py from p
我对 MongoDB 有点陌生,我对 MongoClient 类感到困惑,因为在不同的包中有两个( com.mongodb.client.MongoClient 和 com.mongodb.Mongo
我正在尝试熟悉从 C# 程序写入 MongoDB。我已经按照 http://mongodb.github.io/mongo-csharp-driver/1.11/getting_started/ 的建
我正在使用 Celery 和 MongoEngine 作为我的 Django 应用程序的一部分。 当 celery @shared_task 通过 mongoengine 模型类访问 mongodb
我有一个非常简单的 PyMongo 配置,连接到两个主机: from pymongo import MongoClient host = os.getenv('MONGODB_HOST', '127.
这个问题已经有答案了: MongoDB - Java | How to manage the connection (1 个回答) 已关闭 5 年前。 我正在用 Java 开发一个应用程序,该应用程序
我有一个副本集设置,其中包含 1 个主节点 (mongo1.test.com)、1 个辅助节点 (mongo2.test.com) 和 1 个仲裁节点 (mongo3.test.com)。当我使用 M
我是 NodeJS 新手,也是 JS can-kicker 第一次尝试 DI。以下是我在决定问我之前看过的问题,因为它们显示相同的错误:[1] [2] 运行我的入口点产生: this.client =
使用 java MongoClient 库,如何在集合中查找文档并仅返回特定的对象?我知道这对于 1 个对象 是可能的,但不确定多个。 对于 1 个对象: DBCursor cursor = db.g
这是我的服务器告诉我的内容: MongoClient.connect('mongodb://:@ds235778.mlab.com:35778/satr-wars-quotes', (err, cli
我有一个使用 MongoDB 作为数据库的 ASP.Net MVC 应用程序。网站和数据库位于不同的服务器上。 目前,我有一个看起来像这样的类: public class Mongo { pr
我无法做到这一点: from pymongo import MongoClient 我明白了: >>> import pymongo >>> from pymongo import MongoClie
我正在尝试让这段代码运行: tilbud; ?> 每次我遇到同样的错误: Fatal error: Class 'MongoClient' not found in C:\xampp\htdocs\c
我正在努力更好地理解 this documentation关于如何重用 MongoClient 的实例。 我们通过在构造函数中传递连接字符串来创建 MongoClient 实例,this is the
我正在使用 Mongo DB java 驱动程序连接到 mongo 实例。下面是我用来创建 MongoClient 实例的代码。 try { new MongoClient("
什么是 Mongoclient?它在下面的语句中做了什么? var MongoClient = require('mongodb').MongoClient; 最佳答案 您示例中的 MongoClie
假设我有一个副本集,其中包含一个主 P 和三个辅助 S1、S2 和 S3 。假设应用程序使用此 constructor 创建一个 Mongo 客户端。 。 种子列表为{P、S1、S2}。请注意,该列表
我是一名优秀的程序员,十分优秀!