как дать mongodb socketkeepalive в приложении весенней загрузки? - PullRequest
0 голосов
/ 18 февраля 2019

При весенней загрузке, если мы хотим подключиться к mongodb, мы можем создать файл конфигурации для mongodb или записать источник данных в application.properties

Я следуювторой способ

Для меня я получаю эту ошибку

"Timeout while receiving message; nested exception is com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message

.

spring.data.mongodb.uri = mongodb://mongodb0.example.com:27017/admin

Я получаю эту ошибку, если я не использую свое приложение для 6/ 7 часов и после этого Если я попытаюсь нажать любой контроллер, чтобы получить данные из Mongodb.После 1/2 попытки я могу получить

Вопрос - Это нормальное поведение mongodb? Так, в моем случае это закрывает сокет через определенные часы

Я читал некоторые блоги, где было написано, что вы можете дать socket-keep-alive , чтобы пул соединений не закрывался

При подключении mongodb при весенней загрузке,мы можем передать параметры в uri, например,

spring.data.mongodb.uri = mongodb://mongodb0.example.com:27017/admin/?replicaSet=test&connectTimeoutMS=300000

Итак, я хочу дать socket-keep-alive параметры для spring.data.mongodb.uri как репликацию здесь.

Я искал официальный сайт , но не смог найти ни одного

1 Ответ

0 голосов
/ 18 февраля 2019

Вы можете передать эту опцию, используя MongoClientOptionsFactoryBean .

public MongoClientOptions mongoClientOptions() {
    try {
        final MongoClientOptionsFactoryBean bean = new MongoClientOptionsFactoryBean();
        bean.setSocketKeepAlive(true);
        bean.afterPropertiesSet();
        return bean.getObject();
    } catch (final Exception e) {
        throw new BeanCreationException(e.getMessage(), e);
    }
}

Вот пример этой конфигурации с расширением AbstractMongoConfiguration :

@Configuration
public class DataportalApplicationConfig extends AbstractMongoConfiguration {

    //@Value: inject property values into components
    @Value("${spring.data.mongodb.uri}")
    private String uri;
    @Value("${spring.data.mongodb.database}")
    private String database;

    /**
     * Configure the MongoClient with the uri
     *
     * @return MongoClient.class
     */
    @Override
    public MongoClient mongoClient() {
        return new MongoClient(new MongoClientURI(uri,mongoClientOptions().builder()));
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...