messagedispatchershuntest.java
来自「JGRoups源码」· Java 代码 · 共 120 行
JAVA
120 行
package org.jgroups.tests;import org.jgroups.*;import org.jgroups.util.RspList;import org.jgroups.blocks.MessageDispatcher;import org.jgroups.blocks.GroupRequest;import org.jgroups.blocks.RequestHandler;import java.io.IOException;import java.util.Vector;/** * Tests message sending and shunning.Use: * <ol> * <li>Start multiple instances * <li>Send a few messages * <li>Shun a member * <li>Send a message from another member (must work !) * </ol> * @author Bela Ban * @version $Id: MessageDispatcherShunTest.java,v 1.2 2005/10/31 11:02:54 belaban Exp $ */public class MessageDispatcherShunTest implements MembershipListener, RequestHandler { JChannel channel; MessageDispatcher disp; public static void main(String[] args) { String props=null; for(int i=0; i < args.length; i++) { String arg=args[i]; if(arg.equals("-props")) { props=args[++i]; continue; } help(); return; } try { new MessageDispatcherShunTest().start(props); } catch(Exception e) { e.printStackTrace(); } } private void start(String props) throws IOException, ChannelException { channel=new JChannel(props); channel.setOpt(Channel.AUTO_RECONNECT, Boolean.TRUE); disp=new MessageDispatcher(channel, null, this, this, false, // deadlock detection is disabled true); // concurrent processing is enabled channel.connect("MessageDispatcherTestGroup"); mainLoop(); } private void mainLoop() throws IOException { while(true) { int c; System.in.skip(System.in.available()); System.out.println("\n[1] Send [2] Shun [3] Print view [q] Quit"); c=System.in.read(); switch(c) { case -1: break; case '1': sendMessage(); break; case '2': shun(); break; case '3': View v=channel.getView(); System.out.println("View: " + v); break; case 'q': channel.close(); return; default: break; } } } private void shun() { System.out.println("shunning this member"); channel.up(new Event(Event.EXIT)); } private void sendMessage() { RspList rsp_list; Message msg=new Message(null, null, "Hello world"); View v=channel.getView(); if(v == null) return; Vector members=new Vector(v.getMembers()); System.out.println("sending to " + members); rsp_list=disp.castMessage(members, msg, GroupRequest.GET_ALL, 0); System.out.println("responses:\n" + rsp_list); } private static void help() { System.out.println("MessageDispatcherShunTest [-help] [-props <props>]"); } public Object handle(Message msg) { return "same to you"; } public void viewAccepted(View new_view) { System.out.println("-- view: " + new_view); } public void suspect(Address suspected_mbr) { } public void block() { }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?