Aop框架提供了一套符合jms 1.1 规范的JMS接收和发送消息接口框架(参见章节【1.10.JMS组件框架】),支持各种不同的JMS服务器。并且基于这套接口框架实现jms协议rpc远程服务调用,目前框架采用Apache Active MQ jms服务器来作为rpc jms协议实现。Apache active mq的技术资料可参考其官方网站【http://activemq.apache.org/】。你还可以采用其他的jms服务器作为rpc jms协议的实现。在启动jms协议服务前,必须启动jms服务器。
下面详细介绍RPC JMS协议的使用和配置方法。
1.1.1.1 Jms协议配置
Jms协议对应的配置文件为:
/bbossaop/resources/org/frameworkset/spi/manager-rpc-jms.xml
该文件在RPC基本协议配置文件中导入:
/bbossaop/resources/org/frameworkset/spi/manager-rpc-service.xml
<!--
导入jms服务配置
-->
<managerimport file="org/frameworkset/spi/manager-rpc-jms.xml" />
如果使用jms rpc协议,用户只需修改以下几个参数即可:
服务器标识:
<property name="server_uuid" value="yinbiaoping-jms"/>
Jms服务器连接信息:
<property name="connectURL"
value="tcp://172.16.17.218:61624"/>
<property name="username"
value="system" />
<property name="password"
value="manager" />
<property name="usepool"
value="true" />
是否启用重连机制
<property label="是否启用重连机制" name="USE_FAILOVER"
value="true" class="boolean">
下面具体说明配置内容。Jms协议配置包含两部分:协议处理组件和jms协议的连接参数配置。
1.1.1.1.1 jms请求和响应处理组件
<property name="rpc.jms.RPCServerIoHandler" singlable="true" class="org.frameworkset.spi.remote.jms.RPCJMSIOHandler">
<construction>
<!--
设置处理器的名字
-->
<property name="name"
value="RPCJMSIOHandler" class="String"/>
<!--
设置请求的处理器
-->
<property name="request_handler"
refid="attr:rpc.request_handler" />
<!--
设置连接工厂对象
-->
<property name="connectionFactory"
refid="attr:rpc.jms.ConnectionFactory" />
<!--
发送远程请求消息的目标队列
-->
<property name="requestto" value="rpc.request.queue"/>
<!--
接收响应消息的目标队列
-->
<property name="replyto" value="rpc.response.queue"/>
<!--
服务器标识,作为客服端调用的请求地址使用,例如:
服务地址:(jms::00-23-54-5A-E6-3A-jms)/serviceid,标识将rpc调用发送到server_uuid标识为00-23-54-5A-E6-3A-jms的远程主机上面
服务器接收到消息后在根据调用端server_uuid标识将响应发回到调用端,每台服务器的地址标识必须全局唯一,一旦确定后就不要更改
-->
<property name="server_uuid" value="yinbiaoping-jms"/>
</construction>
</property>
一般情况下用户只需要配置和修改server_uuid属性,这个属性配置的值将作为客服端调用服务的远程服务器地址来使用,例如要调用上述服务器中rpc.test组件的url地址为:
(jms::yinbiaoping-jms)/rpc.test
同时客服端也需要配置其server_uuid做为服务器响应的结果的发送地址。采用jms rpc的服务器和客服端的server_uuid必须唯一。
1.1.1.1.2 jms连接工厂配置
<property name="rpc.jms.ConnectionFactory" singlable="true" class="org.frameworkset.mq.AMQConnectionFactory">
<construction>
<property name="connectURL"
value="tcp://172.16.17.218:61624"/>
<property name="username"