У меня есть служба Redis, работающая на локальном хосте: 6379, и микросервис spring-boot подключается к этой службе Redis, считывая имя хоста и порт из файла application.properties.
@Configuration
public class RedisConfiguration {
/**
* redis host.
*/
@Value("${spring.redis.host}")
private String redisHost;
/**
* redis port.
*/
@Value("${spring.redis.port}")
private int redisPort;
@Bean
JedisConnectionFactory jedisConnectionFactory() {
RedisStandaloneConfiguration redisConf = new RedisStandaloneConfiguration(redisHost, redisPort);
return new JedisConnectionFactory(redisConf);
}
В файле application.properties указаны следующие свойства:
spring.redis.host=localhost
spring.redis.port=6379
Это работает Прекрасно, когда я запускаю микросервис в профиле по умолчанию, то есть он использует application.properties по умолчанию из папки /src/main/resources
.
Теперь проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю микросервис в тестовом профиле, он должен получить файл свойств с сервера конфигурации, который клонирует его из репозитория github.
В этом случае служба Redis показывает такую ошибку
[ERROR][2019-05-30 15:48:33,761][pool-1-thread-4|org.springframework.data.redis.listener.RedisMessageListenerContainer:handleSubscriptionException:651] Connection failure occurred. Restarting subscription task after 5000 ms
Эта ошибка возникает только тогда, когда я получаю файл свойств из службы конфигурации.
Application-test.properties в репозитории github также имеет правильные конфигурации Redis.
Пожалуйста, помогите мне решить эту проблему.
Наконец, после долгих отладок я узнал, что пошло не так. Это было связано с нежелательным пробелом в конце spring.redis.host=localhost
, который вызывал эту проблему.
Да, такая же проблема возникла и у меня. Я последовал вашему ответу, и теперь он работает нормально. Я очистил ненужное пространство в конце spring.redis.host = локальный хост, и в моем случае локальный хост были в двойных кавычках. Я также удалил это.