activemq持久化到mysql
所有的配置都在 activemq.xml中
- 在broker标签中
<persistenceAdapter>
<kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>
这是activemq的默认持久化方式。如果需要持久化到MySQL中,可以屏蔽这句。
然后加上MySQL的
<persistenceAdapter>
<jdbcPersistenceAdapter dataSource="#mysql-ds"/>
</persistenceAdapter>
- 在beans标签中添加MySQL的数据源配置
<bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/activemqdb?relaxAutoCommit=true"/>
<property name="username" value="root"/>
<property name="password" value="love"/>
<property name="maxActive" value="200"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
- 需要把MySQL的jar包放到activemq中lib中
- 可以调用MessageProducer的setDeliveryMode方法设置持久化。根据我的实验,activemq应该是默认的就是持久化,而非非持久化。持久化到MySQL中之后,如果消费了的话,就会自动删除那个消息。
注意:如果你在windows环境下运行的activemq,要做数据库持久化的话,计算机名称不要有下划线。