我的 Jgroups 配置文件包含协议(protocol)/配置
<FD timeout="3000" max_tries="3" />
但是我如何在 Java 代码中使用它。例如,如果有一个集群,当我检测到故障时,我想通过 REST 调用 like /nodeDown/nodeID
来调用外部通知程序服务。
我找不到任何执行此操作的java代码,我看到的只是消息接收和发送,有没有办法可以实现这个?
谢谢
添加更多信息 我已经完成了编写 RecieverAdpater 并重写启动、停止、发送、接收方法的步骤。请在这里找到一些代码,
public void receive(Message msg) {
JGroupsDataPacket pckt = (JGroupsDataPacket) msg.getObject();
if ( pckt.getCmd().equals("cacheUpdate") ){
int uid = pckt.getAffectedUid();
cacheUpdateRoutine(uid);
}
if ( pckt.getCmd().equals("ack") ){
System.out.println("got the mesaage!");
}
logger.log(LogLevel.ERROR, "received msg from " + msg.getSrc() + ": " + msg.getObject());
}
public void send(JGroupsDataPacket pckt){
Message msg = new Message(null, null, pckt);
msg.setFlag(Message.Flag.RSVP);
try {
channel.send(msg);
} catch (Exception e) {
e.printStackTrace();
}
}
我想知道应该去哪里I add code for example to handle the TimeOutException when I'm sending a message with the RSVP flag enabled.
另一个要求是知道,which is the Java callback method which is called when SUSPECT(P) is triggered.
我想捕获并处理机器的故障、超时等。
Is the viewAccepted() the only place where I can handle this? Is there a sample code around this?
也是 http://www.jgroups.org/manual/html/user-channel.html 第 3 节 API 提供了我们可以使用 JGroups 执行的所有 java/编程操作。
再次感谢
我在这里找到了一些文档,我认为这是我应该覆盖的类
public interface MembershipListener {
void viewAccepted(View new_view);
void suspect(Object suspected_mbr);
void block();
void unblock();
}
最佳答案
好的,首先,你有一个 JChannel。您需要使用它来注册 View 回调,如下所示:
JChannel ch;
ch.setReceiver(this);
'this
' 扩展 ReceiverAdapter
并覆盖 viewAccepted()
:
public void viewAccepted(View view) {
// handle new view
}
确定在 View v1 和 v2 之间离开的成员:
List<Address> left_mbrs=View.leftMembers(v1,v2);
关于处理jgroups集群中节点故障的Java代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31925234/