Spring data Neo4j 定时检测连接有效性

在Docker环境中,由于超过300s的外部长连接会被自动断开,文章讲述了如何使用Spring Data Neo4j (SDN)配置连接有效性检测以应对这个问题。通过研究Neo4j的文档和源码,发现需要配置connectionlivenessCheckTimeout和verify参数。然而,仅靠这些并未解决问题。进一步研究发现,BoltDriver的MaxConnectionLifetime配置也很关键,将其调整后,解决了连接异常。由于SDN不支持所有Neo4jDriver配置,需要手动初始化相关对象以完成设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        最近微服务迁移到docker,docker平台对于超过300s的外部长连接会自动断开,所以要求应用具备自我检测长连接的能力。这其实不是什么难事,mysql,redis等常用的组件都提供自我检测连接的功能,只需要多加几个配置即可,相信SDN也具备这样的能力。大致查看了Neo4j的文档和SDN的一些源码之后,发现可以配置connectionlivenessCheckTimeout和verify来实现。本以为轻松解决这个问题,谁知道查看日志还是出现了连接异常,反复设置了好几个值之后还是报错,看样子光有这两个参数是不够的。继续查找资料,看源码,终于解决了这个问题。

        先贴一张架构图:

      

        从上图可以看出,层次结构为:SDN--->OGM--->Neo4jDriver。对connectionlivenessCheckTimeout尝试设置不同的值均未解决问题之后,我怀疑可能是缺少BoltDriver层的某些配置,于是继续去查,还真查到了一个MaxConnectionLifetime,这个值默认为一个小时,问题应该明朗了,将此值调小,应该就能解决问题。坑爹的是,层层封装到SDN之后,Neo4jDriver某些配置值SDN不支持配置。没办法,只能手动初始化这些对象,贴一下代码:

@Bean
public Neo4jTransactionManager transactionManager() {
    return new Neo4jTransactionManager(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值