Question

Utilisation du client jedis pour enregistrer les données sur Redis localhost.

Une fois que je me connecte à redisHost à l'aide de jedis, je ne me déconnecte pas tant que je reçois des messages. Est-ce un problème ?J'ai essayé de modifier le délai d'expiration par défaut 2000 à 6000 mais toujours la même erreur !

connexion et envoi de données :

if (jedis == null)
      jedis = new Jedis(redisHost);

if (!jedis.isConnected())
      jedis.connect();

if (jedis.isConnected()) 
      jedis.zadd("someKey", doubleTime, "someValue");

Voici la trace de pile de l'erreur de réception :

    redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketException: Software caused connection abort: socket write error
    at redis.clients.jedis.Protocol.sendCommand(Protocol.java:92)
    at redis.clients.jedis.Protocol.sendCommand(Protocol.java:72)
    at redis.clients.jedis.Connection.sendCommand(Connection.java:80)
    at redis.clients.jedis.BinaryClient.zadd(BinaryClient.java:387)
    at redis.clients.jedis.Client.zadd(Client.java:327)
    at redis.clients.jedis.Jedis.zadd(Jedis.java:1468)
    at com.comcast.xre.WebSocketServer.saveLogToDB(WebSocketServer.java:105)
    at com.comcast.xre.WebSocketServer.access$000(WebSocketServer.java:27)
    at com.comcast.xre.WebSocketServer$1$1.onFullTextMessage(WebSocketServer.java:69)
    at io.undertow.websockets.core.AbstractReceiveListener$2.complete(AbstractReceiveListener.java:138)
    at io.undertow.websockets.core.AbstractReceiveListener$2.complete(AbstractReceiveListener.java:134)
    at io.undertow.websockets.core.BufferedTextMessage.read(BufferedTextMessage.java:87)
    at io.undertow.websockets.core.AbstractReceiveListener.readBufferedText(AbstractReceiveListener.java:134)
    at io.undertow.websockets.core.AbstractReceiveListener.bufferFullMessage(AbstractReceiveListener.java:72)
    at io.undertow.websockets.core.AbstractReceiveListener.onText(AbstractReceiveListener.java:52)
    at io.undertow.websockets.core.AbstractReceiveListener.handleEvent(AbstractReceiveListener.java:26)
    at io.undertow.websockets.core.AbstractReceiveListener.handleEvent(AbstractReceiveListener.java:15)
    at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
    at io.undertow.server.protocol.framed.AbstractFramedChannel$FrameReadListener.handleEvent(AbstractFramedChannel.java:632)
    at io.undertow.server.protocol.framed.AbstractFramedChannel$FrameReadListener.handleEvent(AbstractFramedChannel.java:618)
    at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
    at org.xnio.conduits.ReadReadyHandler$ChannelListenerHandler.readReady(ReadReadyHandler.java:66)
    at org.xnio.nio.NioSocketConduit.handleReady(NioSocketConduit.java:87)
    at org.xnio.nio.WorkerThread.run(WorkerThread.java:531)
Caused by: java.net.SocketException: Software caused connection abort: socket write error
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:159)
    at redis.clients.util.RedisOutputStream.flushBuffer(RedisOutputStream.java:31)
    at redis.clients.util.RedisOutputStream.write(RedisOutputStream.java:38)
    at redis.clients.jedis.Protocol.sendCommand(Protocol.java:78)
    ... 23 more
Était-ce utile?

La solution

Le problème venait de la connexion Jedis.Il est connecté mais après quelques messages, la connexion est interrompue.Après chaque sauvegarde dans la base de données, je déconnecte et supprime complètement le client jedis et crée un nouveau client et une nouvelle connexion.Cela semble gênant mais cela résout le problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top