elasticsearch5.6.1.整合springboot 遇到的坑
[ERROR]Failed to instantiate [org.elasticsearch.client.transport.TransportClient]: Factory method ‘elasticsearchClient’ threw exception; nested exception is java.lang.IllegalStateException: availableProcessors is already set to [8], rejecting [8]
翻譯:[錯誤]未能例項化[org.elasticsearch.client.transport.TransportClient]:工廠方法“elasticsearchClient”引發異常;巢狀異常為java.lang.IllegalStateException:availableProcessors已設定為[8],拒絕[8]
在spring同時整合redis(簡訊服務),ES(elasticsearch,查詢服務)時,會丟擲以上異常
解決方案
方案1.啟動類上加上一段程式碼
System.setProperty("es.set.netty.runtime.available.processors","false");
-----------------------
spring boot 整合redis和elasticsearch遇到的坑
起因是因為我在一個已經集成了redis的spring boot專案上引入了spring-data-elasticsearch包,配好環境之後開始報如下的錯誤。
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]
解決辦法:
@SpringBootApplication
public class SpringBootExampleApplication {
public static void main(String[] args) {
System.setProperty("es.set.netty.runtime.available.processors","false");
SpringApplication.run(SpringbootexampleApplication.class, args);
}
}
原因:程式的其他地方使用了Netty,這裡指redis。這影響在例項化傳輸客戶端之前初始化處理器的數量。 例項化傳輸客戶端時,我們嘗試初始化處理器的數量。 由於在其他地方使用Netty,因此已經初始化並且Netty會對此進行防範,因此首次例項化會因看到的非法狀態異常而失敗。