Java-код для обработки сбоя узла в кластере jgroups

Мой конфигурационный файл Jgroups содержит протокол /config

<FD timeout="3000" max_tries="3" />

Но как мне использовать это в коде Java. Например, если есть кластер, и когда я обнаруживаю сбой, я хочу вызвать внешнюю службу уведомлений через вызов REST, like /nodeDown/nodeID Я не могу найти какой-либо Java-код, который делает это, все, что я вижу, это получение и отправка сообщений, есть ли способ, которым я могу это реализовать?

Спасибо

Добавив еще немного информации, я сделал шаг написания RecieverAdpater и переопределил метод start, stop, send, recieve. Пожалуйста, найдите код здесь,

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 предоставляют все java/ программные вещи, которые мы можем сделать с JGroups.

еще раз спасибо

Я нашел некоторую документацию здесь, я думаю, что это класс, который я должен переопределить

public interface MembershipListener {
    void viewAccepted(View new_view);
    void suspect(Object suspected_mbr);
    void block();
    void unblock();
}

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);
Другие вопросы по тегам