千万不要在Spring中手动来处理各种中间件的资源. 例如

redis connection

这些最好使用 Framework 自身带的连接池, 以及相应的模板类. 例如 RedisTemplate

rabbitmq connection 以及 channel

最好使用 RabbitTemplate

原因

发现公司里同事写的有些代码, 是使用手动来管理资源的, 例如 RabbitMQ 的连接 connection 以及 channel .

一般情况下, 可能可以运行比较长的时间, 但一出现问题, 它就会导致内存泄漏, 排查问题起来也极不容易. 因为往往一出现问题, 导致整个中间件的服务器连接过大, 而ssh不上服务器了.

除非是有极有理由的原因, 否则全部统一用 Spring 框架自带的 XxxxTemplate 模板类来进行各种读写操作是最好的.

这个是血淋淋的教训.