Как передать собственных исполнителей в библиотеку Redis Lettuce?

У меня есть код ниже для асинхронного получения данных из Redis. По умолчанию вызов get () в библиотеке салата использует пул потоков nio-event.

Код 1:

StatefulRedisConnection<String, String> connection = redisClient.connect();
RedisAsyncCommands<String, String> command = connection.async();
CompletionStage<String> result = command.get(id)
        .thenAccept(code -> 
                     logger.log(Level.INFO, "Thread Id " + Thread.currentThread().getName());
                     //Sample code to print thread ID

Напечатанный идентификатор темы: lettuce-nioEventLoop-6-2.

Код 2:

CompletionStage<String> result = command.get(id)
            .thenAcceptAsync(code -> {
                         logger.log(Level.INFO, "Thread Id " + Thread.currentThread().getName());
              //my original code
}, executors);

Напечатанный идентификатор потока: pool-1-thread-1.

Мои вопросы:

  1. Есть ли возможность пройти моих исполнителей?
  2. Рекомендуется ли использовать пул потоков nio-event для получения (с помощью вызова get ()) данных из Redis?

Версия салата: 5.2.2.RELEASE

спасибо ашок


person Ashok    schedule 21.04.2020    source источник


Ответы (1)


класс io.lettuce.core.RedisClient имеет метод-создатель:

    public static RedisClient create(ClientResources clientResources, String uri) {
        assertNotNull(clientResources);
        LettuceAssert.notEmpty(uri, "URI must not be empty");
        return create(clientResources, RedisURI.create(uri));
    }

Вы можете построить свой ClientResources за ClientResources#builder() и передать все, что захотите. Обратитесь к JavaDoc, вы можете можно настроить:

  • EventLoopGroupProvider для получения определенных EventLoopGroups
  • EventExecutorGroup для выполнения внутренних вычислительных задач
  • Таймер для расписания
  • EventBus для диспетчеризации клиентских событий
  • EventPublisherOptions
  • CommandLatencyCollector для сбора сведений о задержке. Требуется библиотека HdrHistogram.
  • DnsResolver для сбора сведений о задержке. Требуется библиотека LatencyUtils.
  • Задержка повторного подключения.
  • Трассировка для отслеживания команд Redis.
person Yue Gu    schedule 30.05.2020