如果我没有明确调用它们,那么如何在 jgroups 中调用 ReceiverAdapter

我编写了以下类来创建 JGroup 集群:


public class TestClient extends ReceiverAdapter {

JChannel channel;


private void start() throws Exception {

    channel=new JChannel().setReceiver(this);

    channel.connect("ChatCluster");

    eventLoop();

    channel.close();

}


private void eventLoop() {

    while(true) {

    }

}


public void viewAccepted(View new_view) {

    System.out.println("** view: " + new_view);

    System.out.println("Get Coord"+new_view.getCoord());

    System.out.println(new_view.getMembers());

}


public void receive(Message msg) {

    System.out.println(msg.getSrc() + ": " + msg.getObject());


}


public void getState(OutputStream output) throws Exception {


}


public void setState(InputStream input) throws Exception {


}

}

ReceiverAdapter 是一个 Jgroups 定义的类:


public class ReceiverAdapter implements Receiver {

public ReceiverAdapter() {

}


public void receive(Message msg) {

}


public void receive(MessageBatch batch) {

    Iterator var2 = batch.iterator();


    while(var2.hasNext()) {

        Message msg = (Message)var2.next();


        try {

            this.receive(msg);

        } catch (Throwable var5) {

            ;

        }

    }


}


public void getState(OutputStream output) throws Exception {

}


public void setState(InputStream input) throws Exception {

}


public void viewAccepted(View view) {

}


public void suspect(Address mbr) {

}


public void block() {

}


public void unblock() {

}

}

我的问题是如何在视图更改或发送/接收消息时调用 ReceiverAdapter 类中的这些方法,因为我不需要显式调用这些方法。JGroups 是否实现了某种事件侦听器?


慕婉清6462132
浏览 237回答 1
1回答

HUWWW

如果我正确理解了您的问题,我认为您已经解决了您的问题。您需要将您的 Receiver 实现显式传递给您想要使用它的 JChannel:Receiver receiver = new MyReceiverImplementation(); JChannel jChannel = new JChannel().connect("clusterName").receiver(receiver);JGroups 不会自动寻找要注入的接收器。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java