java - 无法连接到发现主机 - hazelcast

标签 java tomcat hazelcast

我正在尝试为两个 tomcat 实例之间的发布/订阅设置 hazelcast 主题。首先,我只有一个 servlet,它初始化 Hazelcast 并在 tomcat 启动时创建主题。当通过 HTTP GET 调用时,该 Servlet 还将向主题发布消息。这是 servlet 中的 init() 方法:

Config cfg = new Config();

System.out.println("hzapp: Creating hazelcast instance...");
hzInstance = Hazelcast.newHazelcastInstance(cfg);
System.out.println("hzapp: Created hazelcast instance.");

topic = hzInstance.getTopic("my-topic");

System.out.println("hzapp: Adding listener to the topic...");
topic.addMessageListener(new HzMessageListener());
System.out.println("hzapp: listener added to the topic.");

Servlet 的 doGet(req, res) 方法只是向主题发布一条消息,如下所示:

String message = request.getParameter("message");
System.out.println("hzapp: publishing message: " + message);
topic.publish(message);
System.out.println("hzapp: published message: " + message);

HzMessageListener 不执行任何操作,只是打印收到的消息:

public void onMessage(Message<String> message) {
    System.out.println("hzapp: Message Received: " + message.getMessageObject());
}

现在,我面临的问题是,当我启动 tomcat 时,它给出以下错误:

INFO: Starting Servlet Engine: Apache Tomcat/6.0.36
hzapp: Creating hazelcast instance...
Jan 23, 2014 10:43:26 AM com.hazelcast.instance.DefaultAddressPicker
INFO: Prefer IPv4 stack is true.
Jan 23, 2014 10:43:26 AM com.hazelcast.instance.DefaultAddressPicker
INFO: Picked Address[192.168.1.10]:5702, using socket ServerSocket[addr=/0:0:0:0:0:0:0:0%0,localport=5702], bind any local is true
Jan 23, 2014 10:43:26 AM com.hazelcast.system
INFO: [192.168.1.10]:5702 [dev] Hazelcast Community Edition 3.1.4 (20140111) starting at Address[192.168.1.10]:5702
Jan 23, 2014 10:43:26 AM com.hazelcast.system
INFO: [192.168.1.10]:5702 [dev] Copyright (C) 2008-2013 Hazelcast.com
Jan 23, 2014 10:43:26 AM com.hazelcast.instance.Node
INFO: [192.168.1.10]:5702 [dev] Creating MulticastJoiner
Jan 23, 2014 10:43:26 AM com.hazelcast.core.LifecycleService
INFO: [192.168.1.10]:5702 [dev] Address[192.168.1.10]:5702 is STARTING
Jan 23, 2014 10:43:26 AM com.hazelcast.nio.SocketConnector
INFO: [192.168.1.10]:5702 [dev] Connecting to /192.168.1.10:5701, timeout: 0, bind-any: true
Jan 23, 2014 10:43:26 AM com.hazelcast.nio.TcpIpConnectionManager
INFO: [192.168.1.10]:5702 [dev] 55635 accepted socket connection from /192.168.1.10:5701
Jan 23, 2014 10:43:50 AM com.hazelcast.instance.Node
WARNING: [192.168.1.10]:5702 [dev] Trying to rejoin: 
======================================================
Couldn't connect to discovered master! tryCount: 50
address: Address[192.168.1.10]:5702
masterAddress: Address[192.168.1.10]:5701
multicast: true
connection: null
======================================================

知道这里出了什么问题吗?我使用的是 Hazelcast 版本 3.1.4,并且 WEB-INF/lib 中有 hazelcast-all-3.1.4.jar。

无论我尝试过什么,它都不会超出 Hazelcast.newHazelcastInstance(cfg);

最佳答案

您能否尝试使用 tcp ip 发现而不是多播来确保除了多播之外没有其他问题:

Config config = new Config();
JoinConfig join = config.getNetworkConfig().getJoin();
join.getMulticastConfig().setEnabled(false);
join.getTcpIpConfig().setEnabled(true);

那么我们就缩小了问题的范围。顺便说一句,可能是您的网络不支持多播。这可能就是原因。

关于java - 无法连接到发现主机 - hazelcast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21299970/

相关文章:

java - icepush-basic 示例什么都不做

java - 使用 tomcat 设置 web dav

Hazelcast Jet - 用例

amazon-web-services - 用于 EC2 自动发现的 AWS 凭证

java - 就内存使用而言,使用 float[] 数组还是 16 个 float 哪个更好?

java - JAXB 没有按预期编码

java - Android/Firebase : Glide not working inside one of my fragments

java - 创建一个灵活的临时游戏数据存储系统

java - sessionFactory 的正确使用方法

logging - 如何隐藏 hazelcast INFO 日志?