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

标签 java cluster-computing jgroups

我的 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/

相关文章:

cassandra - 无法更新 Cassandra 中的复制因子

java - 如何将对象从客户端传递到Map和Reduce?

java - liferay 自定义 portlet 中的最大 language.properties 文件大小

java - 如何在JTextArea java中输入不同的语言?

python - 处理 IPython 集群中的各种资源需求

hadoop - hadoop单节点设置后运行第一个程序

java - Infinispan JGROUPS 强制更改 View

java - 在 OSGi 包中反序列化时发生 ClassNotFoundException

java - 警告 : JGRP000014: Discovery. 超时已被弃用 : GMS. 应使用 join_timeout

java - 甲骨文UCM : How to get the user group and role list?