Spring Boot Reactive Redis 2 фабрики соединений, вызывающие сбой проверки работоспособности - PullRequest
0 голосов
/ 14 апреля 2019

При использовании Reactive Redis с Webflux существует 2 фабрики соединений Redis. Реактивный и нереактивный. Нереактивное состояние отображается как "DOWN", что приводит к сбою проверки остального состояния.

Почему существуют 2 фабрики соединений?

build.gradle.kts

dependencies {
    compile("org.springframework.boot:spring-boot-starter-data-redis-reactive:2.1.4.RELEASE")

    implementation("org.springframework.boot:spring-boot-starter-actuator")
    implementation("org.springframework.boot:spring-boot-starter-data-mongodb-reactive")
    implementation("org.springframework.boot:spring-boot-starter-security")
    implementation("org.springframework.boot:spring-boot-starter-webflux")
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("io.jsonwebtoken:jjwt:0.9.1")
    implementation("org.json:json:20180813")
    runtimeOnly("org.springframework.boot:spring-boot-devtools")

    testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.3.1")
    testImplementation("org.springframework.boot:spring-boot-starter-test")
    testImplementation("de.flapdoodle.embed:de.flapdoodle.embed.mongo")
    testImplementation("io.projectreactor:reactor-test")
    testImplementation("org.springframework.security:spring-security-test")
    testImplementation("org.junit.jupiter:junit-jupiter-api:5.3.1")
}

RedisConfig.kt

@Configuration
@EnableConfigurationProperties
class RedisConfig(@Value("\${redis.host}") private val redisHost: String,
                  @Value("\${redis.port}") private val redisPort: Int) {

    @Bean
    fun reactiveRedisConnectionFactory(): ReactiveRedisConnectionFactory {
        return LettuceConnectionFactory(redisHost, redisPort)
    }

    @Bean
    fun keyCommands(reactiveRedisConnectionFactory: ReactiveRedisConnectionFactory): ReactiveKeyCommands {
        return reactiveRedisConnectionFactory.reactiveConnection.keyCommands()
    }

    @Bean
    fun stringCommands(reactiveRedisConnectionFactory: ReactiveRedisConnectionFactory): ReactiveStringCommands {
        return reactiveRedisConnectionFactory.reactiveConnection.stringCommands()
    }

}

локальный: 8080 / привод / здоровье

{
    "status": "DOWN",
    "details": {
        "mongo": {
            "status": "UP",
            "details": {
                "version": "4.0.8"
            }
        },
        "diskSpace": {
            "status": "UP",
            "details": {
                "total": 101241290752,
                "free": 96678289408,
                "threshold": 10485760
            }
        },
        "redis": {
            "status": "DOWN",
            "details": {
                "reactiveRedisConnectionFactory": {
                    "status": "UP",
                    "details": {
                        "version": "5.0.4"
                    }
                },
                "redisConnectionFactory": {
                    "status": "DOWN",
                    "details": {
                        "error": "org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to localhost:6379"
                    }
                }
            }
        }
    }
}

1 Ответ

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

Не уверен, почему при использовании реактивного Redis есть две фабрики соединений, однако я нашел временный обходной путь для прохождения проверки работоспособности.

Я использовал свои собственные свойства для настройки redis redis.hostи redis.port.

Если переключиться на использование spring.redis.host и spring.redis.port, он также настроит вторую фабрику нереактивных соединений одновременно.Поскольку они оба теперь могут подключаться к Redis, проверка работоспособности пройдет.

{
    "status": "UP",
    "details": {
        "mongo": {
            "status": "UP",
            "details": {
                "version": "4.0.4"
            }
        },
        "diskSpace": {
            "status": "UP",
            "details": {
                "total": 499763888128,
                "free": 381951664128,
                "threshold": 10485760
            }
        },
        "redis": {
            "status": "UP",
            "details": {
                "reactiveRedisConnectionFactory": {
                    "status": "UP",
                    "details": {
                        "version": "5.0.4"
                    }
                },
                "redisConnectionFactory": {
                    "status": "UP",
                    "details": {
                        "version": "5.0.4"
                    }
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...