Ehcache与terracotta集群配置

奶牛老爹 2016-04-24

原文地址如下:

从启动结果中可以看到NodeID[XXXXXX]joinedthecluster,节点已加入集群,代表terracotta结群建立成功,下面运行测试代码:

A服务器:

Java代码收藏代码

<spanstyle="font-size:medium;">importnet.sf.ehcache.Cache;

importnet.sf.ehcache.CacheManager;

importnet.sf.ehcache.Element;

publicclassEhcacheDemo{

privatestaticfinalCacheManagerCACHE_MANAGER=CacheManager.create();

publicstaticCachegetCache(StringcacheName){

returnCACHE_MANAGER.getCache(cacheName);

}

publicstaticObjectgetObjectValue(Stringkey){

Elemente=getCache("demoCache").get(key);

Objectval=null;

if(e==null){

System.out.println("缓存中不存在,读取数据");

/**用于测试集群是否正常工作,当缓存中的数据超时时加入新数据,同时将B服务器中的terracotta服务器关闭,测试B服务器中的程序是否能够获取数据

*

**/

EhcacheDemo.put("name","11111");

EhcacheDemo.put("password","333");

}else{

val=e.getObjectValue();

}

returnval;

}

publicstaticvoidput(Stringkey,Objectval){

Elemente=newElement(key,val);

getCache("demoCache").put(e);

}

publicstaticvoiddelete(Stringkey){

getCache("demoCache").remove(key);

}

publicvoidclose(){

CACHE_MANAGER.shutdown();

}

/**

*@paramargs

*/

publicstaticvoidmain(String[]args){

EhcacheDemo.put("name","sssssss");

EhcacheDemo.put("password","22222");

Threadt=newThread(newRunnable(){

@Override

publicvoidrun(){

while(true){

try{

Thread.currentThread().sleep(10000L);

}catch(InterruptedExceptione){

e.printStackTrace();

}

System.out.println(EhcacheDemo.getObjectValue("name")+""+getObjectValue("password"));

}

}

});

t.start();

}

}

</span>

B服务器:

Java代码收藏代码

<spanstyle="font-size:medium;">importnet.sf.ehcache.Cache;

importnet.sf.ehcache.CacheManager;

importnet.sf.ehcache.Element;

publicclassEhcacheDemo{

privatestaticfinalCacheManagerCACHE_MANAGER=CacheManager.create();

publicstaticCachegetCache(StringcacheName){

returnCACHE_MANAGER.getCache(cacheName);

}

publicstaticObjectgetObjectValue(Stringkey){

Elemente=getCache("demoCache").get(key);

Objectval=null;

if(e==null){

System.out.println("缓存中不存在,读取数据");

}else{

val=e.getObjectValue();

}

returnval;

}

publicstaticvoidput(Stringkey,Objectval){

Elemente=newElement(key,val);

getCache("demoCache").put(e);

}

publicstaticvoiddelete(Stringkey){

getCache("demoCache").remove(key);

}

publicvoidclose(){

CACHE_MANAGER.shutdown();

}

/**

*@paramargs

*/

publicstaticvoidmain(String[]args){

EhcacheDemo.put("name","sssssss");

EhcacheDemo.put("password","22222");

Threadt=newThread(newRunnable(){

@Override

publicvoidrun(){

while(true){

try{

Thread.currentThread().sleep(10000L);

}catch(InterruptedExceptione){

e.printStackTrace();

}

System.out.println(EhcacheDemo.getObjectValue("name")+""+getObjectValue("password"));

}

}

});

t.start();

}

}

</span>

A与B服务器中的程序有一点区别,详见注释部分,主要为了测试集群是否工作正常,当一个节点挂掉之后,B服务器上的测试程序是否能获取新的缓存数据。

同时运行2个测试程序后,我们可以观察terracotta是否正常工作,运行ehcache\terracotta\bin下的dev-console.bat并连接到2个服务器的terracotta服务器:

相关推荐