首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >黑泽尔卡斯特尤里卡云发现插件不工作

黑泽尔卡斯特尤里卡云发现插件不工作
EN

Stack Overflow用户
提问于 2017-12-13 18:27:35
回答 1查看 551关注 0票数 1

我们已经在Spring应用程序中将Hazelcast作为一个嵌入式缓存来实现,并且需要一种方式让“集群组”中的Hazelcast成员能够动态地发现彼此,这样我们就不必提供可能运行Hazelcast的IP地址/端口。

我们在github:https://github.com/hazelcast/hazelcast-eureka上看到了这个hazelcast插件,它似乎提供了与发现/注册工具相同的Eureka特性。

正如本github文档中所提到的,在引导应用类路径中包含了hazelcast-eureka-one库,我们还禁用了TCP和多播发现,并在hazelcast.xml中添加了以下发现策略:

代码语言:javascript
运行
复制
            <discovery-strategies>
                <discovery-strategy class="com.hazelcast.eureka.one.EurekaOneDiscoveryStrategy" enabled="true">
                    <properties>
                       <property name="self-registration">true</property>
                       <property name="namespace">hazelcast</property>
                    </properties>
                </discovery-strategy>
            </discovery-strategies>

我们的应用程序还提供了配置好的EurekaClient,这就是我们要自动组装并注入到这个插件实现中的东西:

*

代码语言:javascript
运行
复制
Config hazelcastConfig = new FileSystemXmlConfig(hazelcastConfigFilePath);
**EurekaOneDiscoveryStrategyFactory.setEurekaClient(eurekaClient);**
hazelcastInstance = Hazelcast.newHazelcastInstance(hazelcastConfig);

*

问题:我们能够在同一台机器上启动我们的spring引导应用程序的两个实例,我们注意到每个应用程序都启动了嵌入在单独端口上的hazelcast实例(5701,5702)。但是,在集群中运行的程序似乎并不相互识别,这就是我们在第二个实例启动时在应用程序日志中看到的情况:

代码语言:javascript
运行
复制
Members [1] {

    Member [10.41.70.143]:5702 - 7c42eb24-3fa0-45cb-9394-17175cc92b9c this

}

17-12-13 12:22:44.480警告主c.h.i.Node.log(LoggingServiceImpl.java:168) - 10.41.70.143:5702域-服务Config种子端口为5701,集群大小为1。

这似乎表明两个hazelcast实例都是独立运行的,并且不识别集群/组中其他正在运行的实例。

而且,在重新启动之后,我们立即看到这个异常频繁地抛出在两个节点上:

*

代码语言:javascript
运行
复制
java.lang.ClassCastException: com.hazelcast.nio.tcp.MemberWriteHandler cannot be cast to com.hazelcast.nio.ascii.TextWriteHandler
    at com.hazelcast.nio.ascii.TextReadHandler.<init>(TextReadHandler.java:109) ~[hazelcast-3.8.2.jar:3.8.2]
    at com.hazelcast.nio.tcp.SocketReaderInitializerImpl.init(SocketReaderInitializerImpl.java:89) ~[hazelcast-3.8.2.jar:3.8.2]

*

哪一个似乎表明在类路径中的hazelcast库之间存在不兼容性?

EN

回答 1

Stack Overflow用户

发布于 2017-12-14 07:35:15

您的Eureka服务似乎返回了错误的端口。Hazelcast尝试连接到8080和其他在同一范围内的端口,而Hazelcast使用5701。不太清楚为什么会发生这种情况,但感觉好像您从Eureka请求错误的服务名称,最终返回了HTTP (Tomcat?!)端口,而不是应该注册的单独的Hazelcast服务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47799846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档