如何控制spring boot缓存redis的关闭时机呢

我的工程会在启动时,启动一个线程去消费kafka
从kafka取出消息后,会根据消息从redis中拿缓存
我在消费kafka的component上,实现了DisposableBean
希望能够在程序退出的时候,能够执行完最后一圈while
但是,总是在执行最后一圈while时,报错说redis连接不上
不知道怎么能控制缓存的redis连接,在我的消费kafka的component销毁后,再销毁呢

1 个赞

你使用的是springboot提供的redis-starter么?我猜测是不是系统停止服务,redis连接池释放资源。导致最后执行回调函数的时候获取不到连接资源。

我暂时也不知道怎么去控制bean的销毁方法执行顺序。你可以说说看需求,也许可以用其他方式来实现。

redis我是用的spring-boot-starter-data-redis,里面的spring boot封装的缓存注解,然后在执行程序退出收尾工作的时候,redis连接已经被释放了,但是我要调用,就报错了

要是spring没法控制销毁顺序的话,就只能自己建立redis连接了。。

可以定义一个servlet的监听器,在程序要终止运行前执行关闭操作

我觉得这样设计不合理,在bean对象销毁时,需要执行的一般是资源的回收,链接的释放。 你这个是要做一些业务性的功能,可以考虑下其他方式。

1 个赞