redis运行一段时间后,无法订阅到消息

DuskForRain 2018-12-06 12:29:25
场景:使用redis的pubsub的功能实现订阅多个netty服务端发送的消息(有两种情况websocket->redis->netty 和 netty->redis->websocket),然后页面上通过websocket更新相关的数据。

问题:项目刚开始运行是没问题的,但是过了一段时间之后。netty端没办法订阅到websocket发出的消息。

网上的说法:
(1)config set client-output-buffer-limit pubsub 0 0 0 , 这样设置之后就不限制消息缓存的大小,但是我觉得这种不是很合理,官方也不推荐这种方案。 https://blog.csdn.net/luyaoying001/article/details/80264347

(2)https://tcspecial.iteye.com/blog/2316033
我的现象和这篇文章说的很类似,但是他最后给的方案,我还不知道是什么样的原理 ?



那位朋友遇到类似的问题,帮忙提供下思路,非常感谢


...全文
1619 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
掌心的溫度丶 2020-03-25
  • 打赏
  • 举报
回复
tcp-keepalive这个配置影响的,这个配置默认是0 官方建议值为60 单位是秒,
此配置的作用是检查健康的连接的时间,可以理解为心跳机制
如果设置为0则不会检查心跳信息,就会造成连接实际已经断开了。但是客户端不知道,也不会抛异常,还在哪傻傻的blpop。

将 tcp-keepalive 60即可解决这个问题
weixin_38642095 2020-02-10
  • 打赏
  • 举报
回复
我也遇到了,没办法,只能通过定时器每30秒调用一下redis.convertAndSend方法才能保证不断线,感觉比较sb

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧