【ActiveMQ学习系列】整合Spring使用
- ActiveMQ支持的传输协议:client端和broker端的通讯协议。TCP、UDP 、NIO、SSL、Http(s)、vm
- ActiveMQ持久化存储

- kahaDB 默认的存储方式


<persistenceAdapter>
<kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>
-
AMQ 基于文件的存储方式
- 写入速度很快,容易恢复。
- 文件默认大小是32M
- JDBC 基于数据库的存储:实现JDBC持久化存储
- 修改默认配置

-
- 添加bean(配置数据库连接)

-
- 添加jar包依赖


-
- 重新启动成功后,数据库中生成3张表
- ACTIVEMQ_ACKS : 存储持久订阅的信息
- ACTIVEMQ_LOCK : 锁表(用来做集群的时候,实现master选举的表)
- ACTIVEMQ_MSGS : 消息表
- JDBC Message store with activeMQ journal
- 引入了快速缓存机制,缓存到Log文件中。
- 性能会比jdbc store要好。
- JDBC Message store with activeMQ journal 不能应用于master/slave模式。
- Memory 基于内存的存储。
- ActiveMQ的网络连接:ActiveMQ如果要实现扩展性和高可用性的要求的话,就需要用到网络连接模式
静态网络连接
修改activemq.xml,增加如下内容

解决丢失的消息配置(5.6版本以后的消息回流)

动态网络连接
- ActiveMQ结合Spring开发:Spring提供了对JMS的支持,需要添加Spring 支持JMS的包
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.15.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.4.2</version>
</dependency>
<?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:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd" default-autowire="byName"> <!--连接工厂配置 --> <bean id="connectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop"> <property name="connectionFactory"> <bean class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL"> <value>tcp://47.107.121.215:61616</value> </property> </bean> </property> <property name="maxConnections" value="50"/> </bean> <!--发送地点配置 --> <bean id="destination" class="org.apache.activemq.command.ActiveMQQueue"> <constructor-arg index="0" value="spring-queue"/> </bean> <!--jms操作配置 --> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="connectionFactory"/><!--工厂 --> <property name="defaultDestination" ref="destination"/><!--地点 --> <property name="messageConverter"> <bean class="org.springframework.jms.support.converter.SimpleMessageConverter"/> </property> </bean> </beans>
package com.karat.cn; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.core.MessageCreator; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.Session; import javax.jms.TextMessage; /** * p2p测试 * @author 开发 */ public class SpringJmsSender { public static void main(String[] args) { send(); getText(); } //生产者 public static void send(){ ClassPathXmlApplicationContext context= new ClassPathXmlApplicationContext( "classpath:service-jms.xml"); JmsTemplate jmsTemplate=(JmsTemplate) context.getBean("jmsTemplate"); jmsTemplate.send(new MessageCreator() { public Message createMessage(Session session) throws JMSException { TextMessage message=session.createTextMessage(); message.setText("Hello"); return message; } }); } //消费者 public static void getText(){ ClassPathXmlApplicationContext context= new ClassPathXmlApplicationContext( "classpath:service-jms.xml"); JmsTemplate jmsTemplate=(JmsTemplate) context.getBean("jmsTemplate"); String msg=(String)jmsTemplate.receiveAndConvert(); System.out.println(msg); } }
- ActiveMQ监控
ActiveMQ自带的管理界面的功能十分简单,只能查看ActiveMQ当前的Queue和Topics等简单信息,不能监控ActiveMQ自身运行的JMX信息等 hawtio HawtIO 是一个新的可插入式 HTML5 面板,设计用来监控 ActiveMQ, Camel等系统;ActiveMQ在5.9.0版本曾将hawtio嵌入自身的管理界面,但是由于对hawtio的引入产生了争议,在5.9.1版本中又将其移除,但是开发者可以通过配置,使用hawtio对ActiveMQ进行监控。
本文介绍了通过两种配置方式,使用hawtio对ActiveMQ进行监控。 1.从http://hawt.io/getstarted/index.html 下载hawtio的应用程序 2.下载好后拷贝到ActiveMQ安装目录的webapps目录下,改名为hawtio.war并解压到到hawtio目录下 3.编辑ActiveMQ安装目录下conf/jetty.xml文件,在第75行添加以下代码 <bean class="org.eclipse.jetty.webapp.WebAppContext"> <property name="contextPath" value="/hawtio" /> <property name="war" value="${activemq.home}/webapps/hawtio" /> <property name="logUrlOnStart" value="true" /> </bean> 4.修改bin/env文件 -Dhawtio.realm=activemq -Dhawtio.role=admins -Dhawtio.rolePrincipalClasses=org.apache.activemq.jaas.GroupPrincipal 需要注意的是-Dhawtio的三个设定必须放在ACTIVEMQ_OPTS设置的最前面(在内存参数设置之后),否则会出现验证无法通过的错误(另外,ACTIVEMQ_OPTS的设置语句不要回车换行) 5.启动activeMQ服务。访问http://ip:8161/hawtio.

浙公网安备 33010602011771号