gpt4 book ai didi

java - JGroups 不能在不同的机器上工作

转载 作者:行者123 更新时间:2023-12-01 14:18:21 27 4
gpt4 key购买 nike

我通过 jgroups 创建了一个到集群的连接器。我的连接器实例在同一台计算机上运行时可以正常工作并获取其他消息,但当它们在两台不同的计算机上运行时它们不会捕获其他消息。我的 JGroups 连接器类:

public class JGroupsMulticastConnector implements Sender, Listener {
JChannel basicChannel = null;
String clusterName = "";

public JGroupsMulticastConnector( String clusterName) {
this.clusterName = clusterName;
try {
basicChannel = new JChannel();

} catch (Exception e) {
MyLogger.error(e, name);
}
}

public void init() {
try {
basicChannel.connect(clusterName);
basicChannel.setReceiver(new ReceiverAdapter(){
@Override
public void receive(org.jgroups.Message msg) {
System.out.println(name+":"+"Got a Message");
super.receive(msg);
}
});

} catch (Exception e) {
MyLogger.error(e, name);
}
}

public void shutdown() {

basicChannel.disconnect();
}

@Override
public void send(Message msg) {
basicChannel.send(msg);
}

}

最佳答案

如果它在同一台机器上运行,则您的代码没问题。问题很可能在于发现 - 节点无法找到彼此。

查看您配置的堆栈并检查您正在使用的发现协议(protocol)。如果您使用 TCPPING ( http://www.jgroups.org/javadoc/org/jgroups/protocols/TCPPING.html ),则需要重新配置节点的 IP 地址。

最有可能的是 MPING ( http://www.jgroups.org/javadoc/org/jgroups/protocols/MPING.html ),它使用多播来发现节点。确保在这些节点之间发送多播消息。通常,防火墙会丢弃此多播通信(您可以暂时关闭防火墙进行测试)。

此外,请检查您的网络组件是否未丢弃多播通信。

关于java - JGroups 不能在不同的机器上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17905503/

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