用于处理jgroups集群中的节点故障的Java代码

时间:2015-08-10 17:03:04

标签: java cluster-computing jgroups

我的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();
}

1 个答案:

答案 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);