SpringBoot整合ElasticSearch与Redis的异常解决

本文详细介绍了在SpringBoot项目中整合ElasticSearch与Redis时遇到的错误,具体表现为Bean instantiation via factory method失败,原因是其他地方(如Redis)使用了Netty导致初始化处理器数量冲突。解决方案包括在启动类中加入特定配置以及在ElasticConfig中指定装配顺序,以避免Netty配置冲突。通过这些步骤,成功解决了启动和服务运行时的问题。
摘要由CSDN通过智能技术生成

一、错误描述

[org/springframework/boot/autoconfigure/data/elasticsearch/ElasticsearchAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.elasticsearch.client.transport.TransportClient]: Factory method 'elasticsearchClient' threw exception;
nested exception is java.lang.IllegalStateException: availableProcessors is already set to [4], rejecting [4]


查阅资料,这个归纳的原因比较合理。
原因分析:程序的其他地方使用了Netty,这里指redis。这影响在实例化传输客户端之前初始化处理器的数量。 实例化传输客户端时,我们尝试初始化处理器的数量。 由于在其他地方使用Netty,因此已经初始化并且Netty会对此进行防范,因此首次实例化会因看到的非法状态异常而失败。

二、解决方案

首先尝试在SpringBoot启动类中加入:

System.setProperty("es.set.netty.runtime.available.processors", "false");

能够解决错误,服务正常启动,但是启动测试类时会报错!

所以需要在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值