用java代码如何设置activemq消息持久化到数据库中?
2个回答
推荐于2018-04-14
展开全部
ActiveMQ持久化消息的二种方式;
1、持久化为文件
这个装ActiveMQ时默认就是这种,只要设置消息为持久化就可以了。涉及到的配置和代码有:
<persistenceAdapter>
<kahaDB directory="${activemq.base}/data/kahadb"/>
</persistenceAdapter>
producer.Send(request, MsgDeliveryMode.Persistent, level, TimeSpan.MinValue);
2、持久化为MySql
首先需要把MySql的驱动放到ActiveMQ的Lib目录下,我用的文件名字是:mysql-connector-java-5.0.4-bin.jar
接下来修改配置文件
<persistenceAdapter>
<jdbcPersistenceAdapter dataDirectory="${activemq.base}/data" dataSource="#derby-ds"/>
</persistenceAdapter>
在配置文件中的broker节点外增加
<bean id="derby-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/activemq?relaxAutoCommit=true"/>
<property name="username" value="activemq"/>
<property name="password" value="activemq"/>
<property name="maxActive" value="200"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
从配置中可以看出数据库的名称是activemq,需要手动在MySql中增加这个库。
然后重新启动消息队列,会发现多了3张表
1:activemq_acks
2:activemq_lock
3:activemq_msgs
1、持久化为文件
这个装ActiveMQ时默认就是这种,只要设置消息为持久化就可以了。涉及到的配置和代码有:
<persistenceAdapter>
<kahaDB directory="${activemq.base}/data/kahadb"/>
</persistenceAdapter>
producer.Send(request, MsgDeliveryMode.Persistent, level, TimeSpan.MinValue);
2、持久化为MySql
首先需要把MySql的驱动放到ActiveMQ的Lib目录下,我用的文件名字是:mysql-connector-java-5.0.4-bin.jar
接下来修改配置文件
<persistenceAdapter>
<jdbcPersistenceAdapter dataDirectory="${activemq.base}/data" dataSource="#derby-ds"/>
</persistenceAdapter>
在配置文件中的broker节点外增加
<bean id="derby-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/activemq?relaxAutoCommit=true"/>
<property name="username" value="activemq"/>
<property name="password" value="activemq"/>
<property name="maxActive" value="200"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
从配置中可以看出数据库的名称是activemq,需要手动在MySql中增加这个库。
然后重新启动消息队列,会发现多了3张表
1:activemq_acks
2:activemq_lock
3:activemq_msgs
展开全部
<persistence>
<jdbcPersistence dataSourceRef=" mysql-ds"/>
</persistence>
<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/activemq?relaxAutoCommit=true"/>
<property name="username" value="activemq"/>
<property name="password" value="activemq"/>
<property name="poolPreparedStatements" value="true"/></bean>我能否在java代码中进行设置呢?因为我是在eclipse中导入的activemq-all-5.2.0.jar包,开发的系统,包中没有activemq.xml文件。而且时间比较紧,我没有用spring。 而且我是把broker嵌入在eclipse中启动的,代码如下:
BrokerService broker = new BrokerService();
broker.setUseJmx(true);
broker.setBrokerName(brokerName);
broker.addConnector("tcp://localhost:61616");
broker.start();
问题补充:robertliudeqiang 写道引用我能否在java代码中进行设置呢?因为我是在eclipse中导入的activemq-all-5.2.0.jar包,开发的系统,包中没有activemq.xml文件。而且时间比较紧,我没有用spring。 而且我是把broker嵌入在eclipse中启动的,代码如下: 恩,你的使用情况我也是头一次听到,提供一种思路吧,可以试试,不一定行:
你可以把activemq-all-5.2.0.jar解包,然后把activemq.xml放进去(可以放在根目录和META-INF目录都试一下),再重新打成jar包。
<jdbcPersistence dataSourceRef=" mysql-ds"/>
</persistence>
<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/activemq?relaxAutoCommit=true"/>
<property name="username" value="activemq"/>
<property name="password" value="activemq"/>
<property name="poolPreparedStatements" value="true"/></bean>我能否在java代码中进行设置呢?因为我是在eclipse中导入的activemq-all-5.2.0.jar包,开发的系统,包中没有activemq.xml文件。而且时间比较紧,我没有用spring。 而且我是把broker嵌入在eclipse中启动的,代码如下:
BrokerService broker = new BrokerService();
broker.setUseJmx(true);
broker.setBrokerName(brokerName);
broker.addConnector("tcp://localhost:61616");
broker.start();
问题补充:robertliudeqiang 写道引用我能否在java代码中进行设置呢?因为我是在eclipse中导入的activemq-all-5.2.0.jar包,开发的系统,包中没有activemq.xml文件。而且时间比较紧,我没有用spring。 而且我是把broker嵌入在eclipse中启动的,代码如下: 恩,你的使用情况我也是头一次听到,提供一种思路吧,可以试试,不一定行:
你可以把activemq-all-5.2.0.jar解包,然后把activemq.xml放进去(可以放在根目录和META-INF目录都试一下),再重新打成jar包。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询