在activemq.xml中加入
<persistenceAdapter>
<!-- <kahaDB directory="${activemq.data}/kahadb"/> -->
<jdbcPersistenceAdapter dataSource="#mysql-ds"/>
</persistenceAdapter>
<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:3306/数据库表名?relaxAutoCommit=true"/>
<property name = "username" value = "数据库用户名"/>
<property name = "password" value = "数据库密码"/>
<property name = "maxActive" value = "200" />
<property name = "poolPreparedStatements" value = "true" />
</bean>
在lib下放入
commons-dbcp-1.4.jar
commons-pool-1.6.jar
mysql-connector-java-5.1.26-bin.jar
//持久化数据,表示producer通过send发送的数据会存储到数据库中,直到消费者消费掉
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
//非持久化数据,表示producer通过send发送的数据不会存储到数据库中,会暂时存储到内存中,直到消费者消费掉
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
producer.send(Destination arg0, Message arg1, int DeliveryMode是否持久化, int 优先级 ,long 存活时间/毫秒);
//当设置优先级时 还需要再activemq.xml中配置如下:
<policyEntries>
<policyEntry queue="first" prioritizedMessages = "true" />
</policyEntries>
//存活时间倒计时结束后会放入到DLQ队列中
//优先级有0-9,其中0-4为普通消息,5-9为加急消息。通常情况下会优先处理加急消息,但当数据量比较大时则不能100%保证