基于jgroup封装,方便rpc调用,失效通知

jgroup的优势、劣势,我这里就不想做过多的讨论了。

如果你使用jgroup,不妨看看我对其进行的简单封装,

之前也没做做过什么开源的项目,做为一次尝试吧,最终还是决定拿出来和大家一起分享,欢迎拍砖。

 

SIP-GROUP 是基于jgroup的封装

使用rpc调用

服务端规定客户端调用的接口,客户端就可以直接调用该接口,不用关心内部的实现,就像调用本地的接口一样的方便。

失效通知

服务端不需要额外的编码,直接调用groupBus.flushEntry(String region, String key),客户端就能接受到相应的消息

 

源代码地址https://code.google.com/p/sip-group/

 

下面我们来具体谈一下使用方法:

rpc调用

一.服务端的使用

1.首先定义存根,即供客户端远程调用的接口(interface)

public interface CacheManager{
         String say(String word);
}
 

2.对该存根进行实现,和实现普通的接口没有区别。

public class CacheRPCServerImpl  implements CacheManager{
          public  String say(String word){
                  return "hello "+word;
          }


          ....
}
 

3.修改存根的实现类,继承com.sohu.sip.group.impl.AbstractCacheRPCServer

public class CacheRPCServerImpl extends AbstractCacheRPCServer implements  CacheManager{
      ......
}
 

 

4.在服务端启动时,初始化,并调用init() 方法。销毁时,调用destroy() 方法

 

 

5.如果使用spring,则只需要在配置中添加

<bean id="cacheRPCServer" class="com.sohu.sip.adsender.service.impl.CacheRPCServerImpl" 
    	init-method="init" destroy-method="destroy">
</bean>

 

6.在classpath下添加配置文件sipgroup-admin.properties

#server max thread count
scheduler.max.threads=500   #服务端最大的进程数
#rpc
cache.rpc.multicast.ip=230.12.21.132   #组播地址(服务端客户端保持一致)
cache.rpc.server.port=10020      #服务端对外提供rpc服务的端口
cache.rpc.group.name=AdsenderRPCGroup   #服务名称(服务端客户端保持一致)

 

 

二、客户端的使用

1.将服务端的存根(interface),保存到本地。

       如:interface CacheManager

 

2.使用工厂模式初始化存根

 

ClientProxyFactory factory =new ClientProxyFactory();
CacheManager remotecacheManager = (CacheManager)factory.getObject("com.sohu.sip.adsender.group.CacheManager");

 

3.如果使用spring,则只需要在配置中添加

<bean id="remoteFactory"  
        class="com.sohu.sip.group.client.ClientProxyFactory" abstract="false"  
        lazy-init="default" autowire="default" dependency-check="default">  
    </bean> 
    
    <bean id="remoteCacheManager" factory-bean="remoteFactory" factory-method="getObject">
    	<constructor-arg>  
            <value>com.sohu.tech.vote.group.CacheManager</value>  
        </constructor-arg>
    </bean> 
 

4.在classpath下添加配置文件sipgroup-client.properties

#rpc
cache.rpc.multicast.ip=230.12.21.132   #保持与服务端一致
cache.rpc.timeout=10000        #超时设置
cache.rpc.server.port=10020   #服务端提供的端口
cache.rpc.server.ip=192.168.0.100    #服务端的ip
cache.rpc.group.name=AdsenderRPCGroup   #保持与服务端一致
 

 

5.客户端可以直接调用生产出来的remoteCacheManager,

 

6.测试,客户端调用

String str= remoteCacheManager.say("world")

 返回的str为

hello world

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值