读书人

Activemq持久化讯息到MySql数据库中

发布时间: 2012-10-24 14:15:58 作者: rapoo

Activemq持久化消息到MySql数据库中

1.添加MySql数据源

????? ?打开Activemq安装目录下的conf/activemq.xml文件,添加MySql数据源。默认情况下Activemq使用KahaDB存储,注解掉KahaDB配置,改为mysql配置如下:

?

<!--
<persistenceAdapter>
??? <kahaDB directory="${activemq.base}/data/kahadb"/>
</persistenceAdapter>
-->
<persistenceAdapter>
??? <jdbcPersistenceAdapter dataSource="#MySQL-DS"/>
</persistenceAdapter>

?

该配置表示,我们将要使用名称为“MySQL-DS”的作为mysql数据源。

2. 配置MySql数据源

????? 在</broker>节点后面,增加MySQL数据源配置:

?

<!-- MySQL DataSource -->
<bean id="MySQL-DS" class="org.apache.commons.dbcp.BasicDataSource" destroy-ethod="close">
??? <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
??? <property name="url" value="jdbc:mysql://127.0.0.1:3306/activemq?relaxAutoCommit=true"/>
??? <property name="username" value="用户名"/>
??? <property name="password" value="登录密码"/>
??? <property name="poolPreparedStatements" value="true"/>
</bean>

?

此处配置类似于spring的Bean配置,id 要与上面的保持一致。

?

3. 配置完成后,将mysql驱动包加入到 Activemq 的 lib目录下,启动Activemq。查看activemq数据库会有三张表:activemq_acks? ,activemq_lock? ,activemq_msgs?

数据表activemq_msgs即为持久化消息表;

?

整个activemq持久消息到mysql数据库配置如下:

?

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:amq="http://activemq.apache.org/schema/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
??? xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
? http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">

??? <!-- Allows us to use system properties as variables in this configuration file -->
??? <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
??????? <property name="locations">
??????????? <value>classpath:/META-INF/credentials.properties</value>
??????? </property>
??? </bean>

??? <!--
??????? The <broker> element is used to configure the ActiveMQ broker.
??? -->
??? <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost">
??????? <!--
??????????? For better performances use VM cursor and small memory limit. For more information, see: http://activemq.apache.org/message-cursors.html Also, if your producer is "hanging", it's probably due to producer flow control. For more information, see:
??????????? http://activemq.apache.org/producer-flow-control.html
??????? -->
??????? <destinationPolicy>
??????????? <policyMap>
??????????????? <policyEntries>
??????????????????? <policyEntry topic=">" producerFlowControl="true" memoryLimit="1mb">
??????????????????????? <pendingSubscriberPolicy>
??????????????????????????? <vmCursor />
??????????????????????? </pendingSubscriberPolicy>
??????????????????? </policyEntry>
??????????????????? <policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb">
??????????????????????? <!--
??????????????????????????? Use VM cursor for better latency For more information, see: http://activemq.apache.org/message-cursors.html <pendingQueuePolicy> <vmQueueCursor/> </pendingQueuePolicy>
??????????????????????? -->
??????????????????? </policyEntry>
??????????????? </policyEntries>
??????????? </policyMap>
??????? </destinationPolicy>

??????? <!--
??????????? The managementContext is used to configure how ActiveMQ is exposed in
??????????? JMX. By default, ActiveMQ uses the MBean server that is started by
??????????? the JVM. For more information, see:
??????????
??????????? http://activemq.apache.org/jmx.html
??????? -->
??????? <managementContext>
??????????? <managementContext createConnector="false" />
??????? </managementContext>

??????? <!--
??????????? Configure message persistence for the broker. The default persistence
??????????? mechanism is the KahaDB store (identified by the kahaDB tag).
??????????? For more information, see:
??????????
??????????? http://activemq.apache.org/persistence.html
??????? -->
??????? <!--
??????? <persistenceAdapter>
??????????? <kahaDB directory="${activemq.base}/data/kahadb"/>
??????? </persistenceAdapter>
??????? -->
??????? <persistenceAdapter>
??????????? <jdbcPersistenceAdapter dataSource="#MySQL-DS" />
??????? </persistenceAdapter>

??????? <!--
??????????? The transport connectors expose ActiveMQ over a given protocol to
??????????? clients and other brokers. For more information, see:
??????????
??????????? http://activemq.apache.org/configuring-transports.html
??????? -->
??????? <transportConnectors>
??????????? <transportConnector name="openwire" uri="tcp://0.0.0.0:61616" />
??????? </transportConnectors>
??? </broker>

??? <!-- MySQL DataSource -->
??? <bean id="MySQL-DS" class="org.apache.commons.dbcp.BasicDataSource" destroy-thod="close">
??? <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
??? <property name="url" value="jdbc:mysql://127.0.0.1:3306/activemq?relaxAutoCommit=true"/>
??? <property name="username" value="用户名"/>
??? <property name="password" value="登录密码"/>
??? <property name="poolPreparedStatements" value="true"/>
</bean>
??? <!--
??????? Enable web consoles, REST and Ajax APIs and demos
??????? It also includes Camel (with its web console), see ${ACTIVEMQ_HOME}/conf/camel.xml for more info
??????
??????? Take a look at ${ACTIVEMQ_HOME}/conf/jetty.xml for more details
??? -->
??? <import resource="jetty.xml"/>

</beans>

?

读书人网 >其他数据库

热点推荐