Есть ли способ установить тайм-аут в Java с реактивным Redis?

Я использую ReactiveRedisConnection для настройки подключения к локальному контейнеру Redis.

Но в будущем приложение будет размещаться на веб-сервере, а Redis - на другом сервере.

Есть ли возможность установить тайм-аут для запроса?

2 ответа

Решение

После некоторых исследований и тестов я обнаружил, что вместо этого для запроса запроса должен быть установлен тайм-аут.

Итак, класс конфигурации:

@Bean
public ReactiveRedisTemplate<String, String> reactiveRedisTemplateString
(ReactiveRedisConnectionFactory connectionFactory) {
    return new ReactiveRedisTemplate<>
              (connectionFactory, RedisSerializationContext.string());
}

и в сервисе:

@Autowired
private ReactiveRedisTemplate<String, Response> repository;
public Mono<String> execute(String value){
        return repository.opsForHash().entries("KEY_TO_SEARCH")
                .timeout(Duration.ofMillis(TIMEOUT))
                .collect(Collectors.toMap("CODE_HERE");

Изменить: Спасибо всем, кто помог здесь.

Тайм-аут можно настроить в вашей реализации реактивного подключения. Если вы используете салат для Redis Connection, вы можете сделать следующее.

@Bean
public ReactiveRedisConnectionFactory reactiveRedisConnectionFactory() {
    return new LettuceConnectionFactory(new RedisStandaloneConfiguration(), LettuceClientConfiguration.builder().commandTimeout(Duration.ofSeconds(2)).build());
}

А затем используйте connectionFactory создать ReactiveRedisTemplate.

@Bean
public ReactiveRedisTemplate<String, String> reactiveRedisTemplateString
  (ReactiveRedisConnectionFactory connectionFactory) {
    return new ReactiveRedisTemplate<>(connectionFactory, RedisSerializationContext.string());
}
Другие вопросы по тегам