gpt4 book ai didi

elasticsearch - 充满 Elasticsearch ,无法获得总是为空的Client

转载 作者:行者123 更新时间:2023-12-03 00:27:25 24 4
gpt4 key购买 nike

我有一个 Storm 拓扑,其中一个 bolt 应该与ElasticSearch交互。

public static Client client;
public static Settings settings;
public SomeBolt(){
settings =
ImmutableSettings.settingsBuilder().put("cluster.name", "elasticsearch").build();
client = new TransportClient(settings)
.addTransportAddress(new InetSocketTransportAddress("someip", 9300));

}

当我在本地模式下运行拓扑时,它很好用,但是当我尝试在集群模式下运行拓扑时,该客户端将获得空值,并且无法执行下一步。

我什至尝试在本地模式的 super 用户计算机中运行它,并且可以正常工作。仅当处于群集模式时,它才能获取TransportClient。

有什么可能的原因吗?

最佳答案

您必须记住,所有喷嘴和 bolt 都必须可序列化,因为它们(可能)会在其构造和启动之间绕网移动。

因此,在构造函数中,您无法(例如)打开任何网络连接(例如在您的情况下创建ES客户端)。
您必须在 bolt 的 prepare 方法上执行此操作。

另外,我建议您将客户端声明为临时的(而不是静态的)。

关于elasticsearch - 充满 Elasticsearch ,无法获得总是为空的Client,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22985102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com