我的Jgroups配置文件包含protocol / config
<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 / programmatic事。
再次感谢
我在这里找到了一些文档,我认为这是我应该覆盖的课程
public interface MembershipListener {
void viewAccepted(View new_view);
void suspect(Object suspected_mbr);
void block();
void unblock();
}
答案 0 :(得分:1)
好的,首先,你有一个JChannel。您需要使用它来注册视图回调,如下所示:
JChannel ch;
ch.setReceiver(this);
'this
'扩展 ReceiverAdapter
和覆盖 viewAccepted()
:
public void viewAccepted(View view) {
// handle new view
}
确定视图v1和v2之间的成员:
List<Address> left_mbrs=View.leftMembers(v1,v2);