2010-08-19 71 views
3

我目前正在进行迁移Web应用程序以在群集中运行。此应用程序使用缓存。如果用户保存某些内容,则会重新加载这些缓存中的一部分。我想通知群集的其他节点关于此,以便所有节点刷新其缓存。如何在tomcat 6.0集群环境中实现缓存同步?

看来,tomcat服务器有一个组消息内置。(部落) 我想知道如果我可以使用此消息传递给我的任务,以及如何让事件监听器运行一整天。

与亲切的问候 迈克尔

+0

如何缓存目前实施的?的Ehcache?还是手写的东西? – skaffman 2010-08-19 12:13:49

+0

缓存(s)是手写的,部分使用servletcontext或文件系统以及静态字段。 – Michael 2010-08-27 13:30:34

回答

0

它可以使用它,也没有必要启动一个线程等。 发送类实例需要tomcat lib目录中的消息类的jar。

欢呼 Michae

0

可以使用Hazelcast主题。这是一个非常轻量级的pub/sub消息。每个节点都将听取该主题。当用户在任何节点上保存smth时,只需输入一些消息“REFRESH”。在接收每个节点可以做任何你想要的。 下面是代码来做到这一点:

String REFRESH = "REFRESH"; 
ITopic<String> topic = Hazelcast.getTopic("myTopic"); 
topic.addMessageListener(new MessageListener<String>() { 
     public void onMessage(String msg) { 
      if(REFRESH.equals(msg){ 
      //do refresh 
      } 
     } 
    }); 

当用户保存某事//。
topic.publish(REFRESH);

0

如果您正在使用手写CACHE,则可以使用消息广播/接收同步缓存B/W群集的所有节点,因此可以使用JGROUP

为前节点A更新高速缓存,它只是撒施消息给其他节点以补充(refresh)缓存