Как включить ssl в реактивном клиенте mongodb при весенней загрузке? - PullRequest
0 голосов
/ 27 июня 2018

В настоящее время у меня возникла проблема при создании реактивного моноклиента, когда я предоставляю URL с опцией ssl = true. Я создаю конфигурационный класс в весенней загрузке, где я создаю Reactive mongoclient, используя следующую опцию: MongoClients.create (Соединения кольца Конн) Здесь, когда я пытаюсь подключиться к БД без настроек ssl, она работает, но с включенной опцией ssl я получаю сообщение об ошибке, сообщающее, что класс NettyEventLoop не найден. Может кто-нибудь предложить, что я могу сделать, чтобы решить эту проблему

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Похоже, что API изменился, поэтому, начиная с драйвера MongoDB v3.8, метод "applyToSslSettings":

import com.mongodb.Block;
import com.mongodb.connection.SslSettings;
import com.mongodb.connection.SslSettings.Builder;
import com.mongodb.connection.netty.NettyStreamFactoryFactory;

import io.netty.channel.nio.NioEventLoopGroup;

@Configuration
public class Config {

    private NioEventLoopGroup eventLoopGroup = new NioEventLoopGroup();

    @Bean
    public MongoClientSettingsBuilderCustomizer sslCustomizer() {

        Block<SslSettings.Builder> sslSettingsBlock = new Block<SslSettings.Builder>() {
            @Override
            public void apply(Builder t) {
                t.applySettings(SslSettings.builder()
                .enabled(true)
                .invalidHostNameAllowed(true)
                .build());
            }
        };

        return clientSettingsBuilder -> clientSettingsBuilder
                .applyToSslSettings(sslSettingsBlock)
                .streamFactoryFactory(NettyStreamFactoryFactory.builder()
                        .eventLoopGroup(eventLoopGroup).build());
    }

    @PreDestroy
    public void shutDownEventLoopGroup() {
        eventLoopGroup.shutdownGracefully();
    }
}
0 голосов
/ 28 июня 2018

Мне удалось преодолеть эту проблему, настроив MongoClientSettingsBuilderCustomizer и NioEventLoop Group. Пожалуйста, найдите ниже код:

private NioEventLoopGroup eventLoopGroup = new NioEventLoopGroup();

 @Bean
           public MongoClientSettingsBuilderCustomizer sslCustomizer() {
                return clientSettingsBuilder -> clientSettingsBuilder
                        .sslSettings(SslSettings.builder()
                                .enabled(true)
                                .invalidHostNameAllowed(true)
                                .build())
                        .streamFactoryFactory(NettyStreamFactoryFactory.builder()
                                .eventLoopGroup(eventLoopGroup).build());
            }
...