activemq spring mysql实现持久化

来源:互联网 发布:数据正态分布统计方法 编辑:程序博客网 时间:2024/05/20 06:22

首先解决mysql持久化问题

<broker></broker>里面写上这一段并且注释activemq默认的<persistenceAdapter>              <jdbcPersistenceAdapter dataDirectory="${activemq.base}/data" dataSource="#MySQL-DS"/>           </persistenceAdapter>         <!--<persistenceAdapter>            <kahaDB directory="${activemq.data}/kahadb"/>        </persistenceAdapter> --> 接下来就是在<broker></broker>外写上数据源信息<!-- MySQL DataSource --><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://127.0.0.1:3306/callring?useUnicode=true&amp;characterEncoding=UTF-8"/>    <property name="username" value="root"/>    <property name="password" value="root"/>    <property name="poolPreparedStatements" value="true"/></bean>需要添加相应jar包三个mysql启动包 commons-dbcp包 commons-pool包至此完成实现持久化。

持久化解释

如果不写持久化,那么当关闭activemq服务器时候,下次启动时候,将不能接收上次发送到队列的信息。也就是tm=null。如果使用持久化之后,下次启动依然可以接收到消息。持久化就是每个发送者有一个唯一标识,接收者通过这个唯一标识去识别信息这是PTP模式。  public void receive(Destination destination) {    TextMessage tm = (TextMessage) jmsTemplate.receive(destination);    if (tm==null) {        System.out.println("从"+destination+"获取信息为空");    }    else {        try {              System.out.println("从" + destination.toString() + "收到了消息:\t" + tm.getText());            } catch (JMSException e) {              e.printStackTrace();            }    }  }
0 0