`
谷超
  • 浏览: 163399 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JGroups

    博客分类:
  • J2EE
阅读更多

JGroups实现了组通讯的组件。

JGroups使用场合:

服务器集群

多服务器通讯

服务器复制

分布式缓存

更多JGroups信息可以参考whitesock的javaeye博客

无论是JGroups还是前面文章提到的ActiveMQ都是能够实现网络通信的。下面分享一个使用JGroups进行聊天的例子程序,大家感受下使用JGroups进行简单编程的例子

 

package ttstest;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.List;

import org.jgroups.JChannel;
import org.jgroups.Message;
import org.jgroups.ReceiverAdapter;
import org.jgroups.View;
import org.jgroups.util.Util;

public class SimpleChat {
	private JChannel channel;
	private List<String> state = new LinkedList<String>();
	private String userName = System.getProperty("user.name", "guchao");

	public void start() throws Exception {
	channel = new JChannel("./conf/udp.xml");
		channel.setReceiver(new ReceiverAdapter() {
			//回调方法,用来接收消息Message
			public void receive(Message msg) {
				System.out.println(msg.getSrc() + ": " + msg.getObject());
				synchronized(state) {
					state.add((String)msg.getObject());
				}
			}
			//回调方法,该方法能够得到新的view信息
			public void viewAccepted(View view) {
				System.out.println("view accepted: " + view);
			}

			public byte[] getState() {
				synchronized(state) {
					try {
						return Util.objectToByteBuffer(state);
					}
					catch(Exception e) {
						e.printStackTrace();
						return null;
					}
				}
			}

			@SuppressWarnings("unchecked")
			public void setState(byte[] new_state) {
				try {
					List<String> list=(List<String>)Util.objectFromByteBuffer(new_state);
					synchronized(state) {
						state.clear();
						state.addAll(list);
					}
					System.out.println("received state (" + list.size() + " messages in chat history):");
					for(String str: list) {
						System.out.println(str);
					}
				}
				catch(Exception e) {
					e.printStackTrace();
				}
			}
		});
		channel.connect("ChatCluster");
		channel.getState(null, 10000);

		//
		sendMessage();

		//
		channel.close();
	}

	private void sendMessage() throws Exception {
		boolean succeed = false;
		BufferedReader br = null;
		try {
			br = new BufferedReader(new InputStreamReader(System.in));
			while(true) {
				System.out.print(">");
				System.out.flush();
				String line = br.readLine();
				if(line != null && line.equals("exit")) {
					break;
				} else {
					Message msg = new Message(null, null, "[" + userName + "]" + line);
					channel.send(msg);
				}
			}
			succeed = true;
		} finally {
			if(br != null) {
				try {
					br.close();
				} catch (Exception e) {
					if(succeed) {
						throw e;
					}
				}
			}
		}
	}

	public static void main(String args[]) throws Exception {
		new SimpleChat().start();
	}
}

 

聪明的你应该可以发现,上面的这个例子通过jgroups发送消息的方式同步服务器的内存!!

2
0
分享到:
评论

相关推荐

    JavaEE源代码 jgroups-2.2.8

    JavaEE源代码 jgroups-2.2.8JavaEE源代码 jgroups-2.2.8JavaEE源代码 jgroups-2.2.8JavaEE源代码 jgroups-2.2.8JavaEE源代码 jgroups-2.2.8JavaEE源代码 jgroups-2.2.8JavaEE源代码 jgroups-2.2.8JavaEE源代码 ...

    Android代码-jgroups-android

    JGroups - A Framework for Group Communication in Java ======================================================== March 3, 1998 Bela Ban 4114 Upson Hall Cornell University Ithaca, NY 14853 bba@...

    JGroups的Raft实现jgroups-raft.zip

    jgroups-raft 项目是 JGroups 框架对 Raft 的实现。Maven:&lt;groupId&gt;org.jgroups &lt;artifactId&gt;jgroups-raft &lt;version&gt;0.2&lt;/version&gt;Raft 是一个容易理解的共识算法。在容错和性能方面它相当于 Paxos(Google 的一致...

    jgroups-2.2.7.jar

    jgroups-2.2.7.jar jgroups-2.2.7.jar

    JGroups(Java多播通讯框架) v4.0.0.CR1.zip

    JGroups(Java多播通讯框架)简介 JGroups是一个可靠的群组通讯Java工具包。它基于IP组播(IP multicast),但在可靠性,组成员管理上对它作了扩展。 JGroups的可靠性体现在: 1,对所有接收者的消息的无丢失传输...

    jgroups-3.0.2

    JGroups是一个开源的纯java编写的可靠的群组通讯工具。其是一个可靠的组播通讯工具集(需要说明的是,这并不是说必须要使用IP Multicast,JGroups也可以使用TCP来实现)。其工作模式基于IP多播,但可以在可靠性和群组...

    JGroups_集群.pdf

    JGroups_集群.pdf

    jgroups.part1

    jgroups.part1

    jgroups-3.2

    JGroups是一个开源的纯java编写的可靠的群组通讯工具。其是一个可靠的组播通讯工具集(需要说明的是,这并不是说必须要使用IP Multicast,JGroups也可以使用TCP来实现)。其工作模式基于IP多播,但可以在可靠性和群组...

    jgroups-2.6.8.GA.jar

    jgroups-2.6.8.GA.jar jgroups-2.6.8.GA.jar

    基于JGroups的共享电子白板系统的研究与实现

    基于JGroups的共享电子白板系统的研究与实现

    Jgroups中的UNICAST3协议中文翻译

    Jgroups是一款组播工具,基于IP多播的可靠的组播中间件

    Ehcache通过Jgroups做集群

    Ehcache通过使用Jgroups做集群配置,更改每一个不同的jgroups.xml文件的端口号和IP,如果一台机器就使用127.0.0.1即可。配置好之后,把每台机器起来,就可以测试了。

    jgroups.part3

    jgroups.part3

    Java多播通讯框架 JGroups

    Java多播通讯框架 JGroups

    jgroups-2.2.8.jar

    jgroups-2.2.8.jar.........

    jgroups-2.5.1-jdk14.jar

    jgroups-2.5.1-jdk14.jar,网络通信工具包,版本号2.5.1

    jgroups源代码

    jgroups源代码,想要学习jgroups开源框架的童鞋可以看看

    Jgroups 教程

    JGROUPs 的重要用法全部都在里面了

    JGroups-2.6.2.bin.zip

    介绍部分摘自XMPP Jabber即时通讯开发实践 http://hi.baidu.com/jabber/blog/item/7e879852a23efd0f0cf3e3ea.html&lt;br&gt;JGroups 适合使用场合 服务器集群cluster、多服务器通讯、服务器replication(复制)等,...

Global site tag (gtag.js) - Google Analytics