others-how to solve 'RedisMessageListenerContainer : Connection failure occurred' error when using redis in springboot apps ?

Problem

When we start a springboot application with redis connection, we get this error :

vm 1    | 2021-02-26 09:08:42.910 ERROR 4060 --- [    container-1] o.s.d.r.l.RedisMessageListenerContainer  : Connection failure occurred. Restarting subscription task after 5000 ms
^Cwrapper  | INT trapped.  Shutting down.

The core error is :

RedisMessageListenerContainer  : Connection failure occurred. Restarting subscription task after 5000 ms

Why do this error happen? The springboot app is correctly configured, I promise!!!

Environment

  • Springboot 1.x and 2.x
  • JDK 8

Configuration

Let’s check the configuration properties of the springboot app:

redisHost=12.43.2.1 
redisPort=6379

spring.redis.host=${redisHost}
spring.redis.port=${redisPort}

You can see that , our redis server’s IP address is 12.43.2.1, the port is the default redis port 6379.

Debug

First, we check the network connection from the client to the redis server:

telnet 12.43.2.1 6379

Trying 12.43.2.1...
Connected to 12.43.2.1.
Escape character is '^]'.
quit
+OK
Connection closed by foreign host.

So the redis connection from client to server is ok, the redis server’s network connection is ready to be used. Why our application can not connect to it?

Reason

After check for almost an hour, I found the cause of the problem, there is a space character behind the ip address of the redis server!

Solution

We should remove the space from the ip address:

The original(For display purpose , I use [space] to denote the space character):

redisHost=12.43.2.1[space]
redisPort=6379

After modify:

redisHost=12.43.2.1
redisPort=6379

Run the app again, No error messages ,It works!