PS:写了一半,忘记保存,没了……
周五部署了一套SPringMVC到自己的服务器上,之后原本想再部署一套Redis集群服务,结果redis一直编译报错,折腾到深夜两点多,第二天还有事,就暂时放弃了,周六周日又没在上海,一直没来的基整理博客,周日晚上七八点钟才回来,收拾一下就已经挺晚了,本来想第二天补上的,但是后边晚上还有事,再说承诺的是一周至少一篇的,想想还是写点吧!
====================分割线====================
切入正题:
以前曾经使用过得消息订阅系统有阿里的RocketMQ,以及Apache的kafka,唯独ActiveMQ没有使用过,所以这次部署一套ActiveMQ试试。
首先,第一步:
1 安装ActiveMQ
(1)、下载ActiveMQ,从官网下载:http://activemq.apache.org/activemq-5156-release.html
windows、Linux 自己看着办,我先在本地部署试试,所以下载的是win版的,
(2)、解压缩到给定目录,我放在了 D:\Tool 下面,之后进入/bin目录,看到有32位和64位两种选择,进入64win,管理员启动activemq.bat
(3)、启动成功后,浏览器打开http://127.0.0.1:8161/admin/,输入用户名、密码,默认都是admin,会显示如下界面:这就说明ActiveMQ启动成功
2、新建SpringMVC项目,部署到服务器上之后,可以通过页面访问,
(1)新建项目activemq,目录如下
(2)导入依赖
<!-- Spring JMS -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- xbean 如<amq:connectionFactory /> -->
<dependency>
<groupId>org.apache.xbean</groupId>
<artifactId>xbean-spring</artifactId>
<version>3.16</version>
</dependency>
<!-- ActiiveMQ -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
<version>5.7.0</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
<version>5.7.0</version>
</dependency>
(3)新建ActiveMQ.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:amq="http://activemq.apache.org/schema/core"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://activemq.apache.org/schema/core
http://activemq.apache.org/schema/core/activemq-core-5.12.1.xsd">
<!-- ActiveMQ 连接工厂 -->
<amq:connectionFactory id="amqConnectionFactory"
brokerURL="tcp://localhost:61616"
userName="admin"
password="admin" />
<!-- 提高效率,配置JMS连接工厂 -->
<bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
<constructor-arg ref="amqConnectionFactory" />
<property name="sessionCacheSize" value="2000" />
</bean>
<!-- 定义消息队列(Queue)-->
<!-- <bean id="QueueDestination" class="org.apache.activemq.command.ActiveMQQueue">
<!– 设置消息队列的名字 –>
<constructor-arg value="Queue-gavin"/>
</bean>-->
<!--定义主题(Topic)-->
<bean id="topicDestination" class="org.apache.activemq.command.ActiveMQTopic">
<constructor-arg value="Topic-gavin"/>
</bean>
<!-- 配置JMS模板(Queue),Spring提供的JMS工具类,利用它发送、接收消息。 -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory" />
<property name="defaultDestination" ref="topicDestination" />
<property name="receiveTimeout" value="10000" />
<!-- true是topic,false是queue,默认是false -->
<property name="pubSubDomain" value="true" />
</bean>
</beans>
其中 brokerURL="tcp://localhost:61616" ,61616是ActiveMQ的默认请求端口
(4)创建生产者、消费者
(5)创建Action,生产者和消费者的请求入口
(6)差点忘了,applicationContext.xml 需要引入ActiveMQ.xml 文件,
即增加一行:<import resource="ActiveMQ.xml" />
3、运行
(1)使用tomcat容器,运行项目,得到初始页面
(2)请求http://localhost:8080/activemq/pro?cnt=5,cnt=5,就是说生产者生产了4条消息
(3)请求http://localhost:8080/activemq/con 即执行消费
此时我们可以从ActiveMQ控制台看到结果如下:
主题为:Topic-gavin的消息有4条,并且已全部消费;
这时我们再来看下程序后台输出的日志,
生产者日志如下:
消费者日志如下:
至此,ActiveMQ服务已经正常运行
现在只是在本地运行起来了,还没部署到服务器上,也没深入去研究他的收发机制,暂时先到这里了,
收工,睡觉!