bbossgroups 2.0-RC中對jgroups已經更新到Jgroups 2.10.0版本,是以對aop中基于JGroups的rpc也做了相應的調整,本文詳細講解新的使用方法:
1.配置檔案目錄調整:
jgroups本身協定配置檔案和存放目錄(tcp,udp)
/bbossaop/resources/org/frameworkset/spi/jgroups/jgroups-tcp.xml
/bbossaop/resources/org/frameworkset/spi/jgroups/jgroups-udp.xml
manager-rpc-service.xml中針對JGroups的相應配置為:
<!--
jgroups叢集協定配置
-->
<property name="cluster_name" value="Cluster"/>
<property name="cluster_protocol" value="udp"/>
<property name="cluster_protocol.tcp.configfile" value="org/frameworkset/spi/jgroups/jgroups-tcp.xml"/>
<property name="cluster_protocol.udp.configfile" value="org/frameworkset/spi/jgroups/jgroups-udp.xml"/>
2.JGroups協定單獨啟動方法沒有改變,還是以下的方法:
RPCHelper.getRPCHelper().startJGroupServer();
基于bboss開發的平台中啟動jgroups的方法,manager-rpc-service.xml中的相關項做如下設定即可:
<property name="rpc.default.protocol"
value="jgroup"/>
<property name="rpc.startup.protocols"
<property name="rpc.security" >
<map>
<property name="rpc.login.module" enable="false" class="org.frameworkset.spi.security.SimpleLoginModule"/>
<property name="rpc.authority.module" enable="false" class="org.frameworkset.spi.security.SimpleAuthorityModule"/>
<property name="data.encrypt.module" enable="false" class="org.frameworkset.spi.security.SimpleEncryptModule"/>
</map>
</property>
每個節點應用的udp協定檔案jgroups-udp.xml中的多點傳播位址設定成一樣的即可:
mcast_addr="232.10.10.10"
位址值可以根據需要進行修改。
3.客服端相關接口及使用方法
擷取叢集節點位址集合方法:
Vector<Address> addresses = JGroupHelper.getJGroupHelper().getAppservers();
擷取遠端服務元件方法:
* 單點傳播
Address address_ = addresses.get(0);
RPCTestInf testInf = (RPCTestInf)ApplicationContext.getApplicationContext().getBeanObject("(jgroup::" + address_ + ")/rpc.test");
調用遠端方法:
Object value = testInf.getCount();
* 多點傳播
Address address_0 = addresses.get(0);
Address address_1 = addresses.get(1);
RPCTestInf testInf = (RPCTestInf)BaseSPIManager.getBeanObject("(jgroup::"+address_0+";"+address_0+")/rpc.test");
擷取address_0的結果:
Object ret_0 = BaseSPIManager.getRPCResult(address_0.toString(), value ,Target.BROADCAST_TYPE_JRGOUP);
擷取address_1的結果:
Object ret_1 = BaseSPIManager.getRPCResult("address_1.toString(), ret,Target.BROADCAST_TYPE_JRGOUP);
* 多點傳播
RPCTestInf testInf = (RPCTestInf)BaseSPIManager.getBeanObject("(jgroup::all)/rpc.test");
周遊所有結果:
int size = BaseSPIManager.getRPCResultSize(ret);
for(int j = 0; j < size; j ++)
{
Object ret = BaseSPIManager.getRPCResult(j, ret);
System.out.println("ret:" + j + " = "+ret_1186);
}