| ?Aurora???Apache ActiveMQ2011-12-26 14:36:28by ???
Apache ActiveMQ 是Apache出品,最流行的、功能强劲的开源消息组件。ActiveMQ完全支持JMS1.1和J2EE 1.4规范。
1. 多种语言和协议编写客户端。语言: Java, C, C++, C#, Ruby, Perl, Python, PHP。应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP
2. 完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务)
3. 对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性
4. 通过了常见J2EE服务器(如 Tomcat,Geronimo,JBoss 4,GlassFish,WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上
5. 支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA
6. 支持通过JDBC和journal提供高速的消息持久化
7. 从设计上保证了高性能的集群,客户端-服务器,点对点
8. 支持Ajax
9. 支持与Axis的整合
10. 可以很容易得调用内嵌JMS provider,进行测试
* 首先去
activemq下载5.42版本(5.5以上版本只支持JDK1.6以上),
* 解压apache-activemq-5.4.2-bin.zip(或者apache-activemq-5.4.2-bin.tar.gz )目录如下:
+bin (windows下面的bat和unix/linux下面的sh)
+conf (activeMQ配置目录,包含最基本的activeMQ配置文件)
+data (默认是空的)
+docs (index,replease版本里面没有文档,-.-b不知道为啥不带)
+example (几个例子)
+lib (activemMQ使用到的lib)
-activemq-all-5.4.2.jar(ActiveMQ的binary)
-LICENSE.txt
-NOTICE.txt
-README.txt
-user-guide.html
你可以使用bin\activemq.bat(activemq) 启动.
几个小提示:
1. 这个仅仅是最基础的ActiveMQ的配置,很多地方都没有配置因此不要直接使用这个配置用于生产系统
2. 有的时候由于端口被占用,导致ActiveMQ错误,ActiveMQ可能需要以下端口1099(JMX),61616(默认的TransportConnector)
3. 如果没有物理网卡,或者MS的LoopBackAdpater Multicast会报一个错误
启动activeMQ后,再打开两个命令窗口,都进入activemq\example
* 一个运行:ant consumer
* 一个运行:ant producer
如果成功发送/接收了消息就OK了。
1. 获得aurora activemq的支持jar(从
https://aurora-project.googlecode.com/svn/trunk/aurora-plugin/aurora/plugin/amq
编译获得)、以及从activemq/lib中复制activemq-core-5.4.2.jar、geronimo-jms-1.1-spec-1.1.1.jar 放入%WEB_HOME%/web-inf/lib中
2. 在%WEB_HOME%/web-inf/下添加amq.config,内容参考如下
<?xml version="1.0" encoding="UTF-8"?>
<amq:AMQ-client-instance xmlns:amq="aurora.plugin.amq" xmlns:jms="aurora.plugin.jms"
url="failover:(tcp://localhost:61616,tcp://192.168.11.66:61616)">
<jms:messageHandlers>
<jms:defaultMessageHandler name="handler1" procedure="init.load_priviledge_check_data"/>
</jms:messageHandlers>
<jms:consumers >
<jms:consumer topic="test1">
<jms:events>
<jms:event message="resource_update" handler="handler1"/>
</jms:events>
</jms:consumer>
</jms:consumers>
</amq:AMQ-client-instance>
说明 failover是amq内置的一种集群协议,它支持自动重连机制,即如果localhost机器意外中断,会自动重连到remotehost1。此处我们可以定义多台主机。
3.修改apache-activemq-5.4.2\conf\activemq.xml文件,以配合实现客户端的重连机制
<beans
xmlns="http://www.springframework.org/schema/beans"...>
<!--其他配置-->
<broker xmlns="http://activemq.apache.org/schema/core"...>
<persistenceAdapter>
<jdbcPersistenceAdapter dataDirectory="${activemq.base}/data" dataSource="#oracle-ds"/>
</persistenceAdapter>
</broker>
<bean id="oracle-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:AMQDB"/>
<property name="username" value="scott"/>
<property name="password" value="tiger"/>
<property name="maxActive" value="200"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
</beans>
在启动amq后,会在数据中自动创建三种表
* ACTIVEMQ_ACKS 接收应答表
* ACTIVEMQ_MSGS 发送信息表
* ACTIVEMQ_LOCK 主机锁表
amq服务器的重连机制如下:
如客户端所配置的,我们有两台主机,一台是localhost,一台是remotehost1。两台机器的activemq.xml连接同一个数据库(即配置信息相同)。
启动服务的时候,同时去数据库中抢夺资源锁,谁先抢到,谁就是主机,没抢到处于等待状态,等这台主机意外宕机后,再去抢锁,同样是谁先抢到,就谁是主机。
4. 调用:在svc中输入<jms:jms-message-dispatch message="resource_update" xmlns:jms="aurora.plugin.jms"/>
5. 启动
1. 启动activeMQ
2. 重启Web服务
|
Comments
0 Responses to the article暂时没有评论。