Я выкладываю здесь вопрос только для того, чтобы убедиться, что я не лаю не на то дерево.
Как получить количество соединений используется (и бесплатно ) для MongoDB, но с точки зрения клиента (например, Java клиент), используя драйвер 4.x?
Есть сообщения, касающиеся использования serverStatus ( Получите число открытых соединений в mongoDB, используя java), но это предполагает наличие доступа администратора к MongoDB. Использование «обычного пользователя» (пользователя БД с более низкими привилегиями (например, доступ только к одной базе данных)) не может запустить serverStatus (). Но это обеспечивает только представление со стороны сервера (есть N соединений с IP x ).
В других публикациях упоминалось, как настроить размер пула соединений ( например, с использованием MongoClients.create(MongoClientSettings settings)
(см. справку по API 4.x (https://mongodb.github.io/mongo-java-driver/4.0/apidocs/mongodb-driver-sync/com/mongodb/client/MongoClients.html)):
MongoCredential credential = MongoCredential.createCredential(
username,
"admin",
password.toCharArray());
MongoClient mongoClient = MongoClients.create(MongoClientSettings.builder()
.applyToClusterSettings(
builder -> builder.hosts(Arrays.asList(new ServerAddress(hostname, portNumber))))
.credential(credential)
.applyToConnectionPoolSettings(builder -> builder
.minSize(connectionPoolMinimumSize)
.maxSize(connectionPoolMaximumSize))
.readConcern(readConcern)
.readPreference(readPreference)
.writeConcern(writeConcern)
.build());
Но ни один из указанных способов не означает использование используемых и доступных соединений в соединении pool.
Как упомянул Олег, было бы целесообразно использовать ConnectionPoolListener, но он доступен только в драйверах 3.x. Методы ConnectionPoolListener помечены как устаревшие в 4.x (хотя это все еще упоминается в разделе мониторинга JMX (http://mongodb.github.io/mongo-java-driver/4.0/driver-reactive/reference/monitoring/).