SpringBoot 集成redis和elasticsearch遇到的坑

本文介绍在已集成Redis的SpringBoot项目中引入Elasticsearch时遇到的问题及解决方案。主要错误为实例化TransportClient时处理器数量已被设置,解决办法是在启动前设置System属性es.set.netty.runtime.available.processors为false。此问题源于项目中同时使用了Netty,导致处理器数量在Elasticsearch初始化前被其他组件设置。

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

SpringBoot 集成redis和elasticsearch遇到的坑


起因是因为我在一个已经集成了redis的spring boot项目上引入了spring-data-elasticsearch包,启动项目报如下的错误。

Failed to instantiate [org.elasticsearch.client.transport.TransportClient]: Factory method 'esTransportClientInit' threw exception; nested exception is java.lang.IllegalStateException: availableProcessors is already set to [8], rejecting [8]

解决办法:

@SpringBootApplication
public class ApplicationMain {
    public static void main(String[] args) {
        System.setProperty("es.set.netty.runtime.available.processors","false");
        SpringApplication.run(ApplicationMain.class, args);
    }
}

原因:(摘自其他小伙伴的博客)
程序的其他地方使用了Netty,这里指redis。这影响在实例化传输客户端之前初始化处理器的数量。 实例化传输客户端时,我们尝试初始化处理器的数量。 由于在其他地方使用Netty,因此已经初始化并且Netty会对此进行防范,因此首次实例化会因看到的非法状态异常而失败。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值