zoukankan      html  css  js  c++  java
  • activemq持久化的几种方式详解

    主要有jdbc kahadb leveldb+zookeeper几种持久化方式
    1.jdbc:
    jdbc比如借助mysql,需要在actviemq.xml配置(<PersistenceAdapter>),
    <persistenceAdapter> 
          <jdbcPersistenceAdapter dataSource="#mysql-ds" createTableOnStartup="true"/>
    </persistenceAdapter>
    然后在broker也得配置
      </broker>
        <bean id="mysql-ds" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
            <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://mysql数据库URL/activemq?relaxAutoCommit=true"/>
            <property name="username" value="mysql数据库用户名"/>
            <property name="password" value="mysql数据库密码"/>
            <property name="poolPreparedStatements" value="true"/>
        </bean>
        <import resource="jetty.xml"/>会产生三个表,ACTIVEMQ_MSGS,存储消息信息的(比如消息目的地,消息的过期时间,消息发送者的id,消息优先级等),ACTIVEMQ_ACKS,存储订阅者与服务器的关系的(消息的目的地,订阅者名称等),ACTIVEMQ_LOCK,集群环境下才用到,记录谁是主服务器的。
    kahadb,基于日志文件,类似于redis的aof持久化,
       <persistenceAdapter>
             <kahaDB directory="${activemq.data}/kahadb"/>
       </persistenceAdapter>
     
    2.kahadb:
    kahadb的消息存储目录只有四个文件和一个lock,db-<number>.log,存储消息信息的,当一个log文件放满时,会自动生成下一个,number+1,
    db.data,存储持久化的b树索引,索引了在上一个文件里存储的消息
    db.free,存储了db.data,中哪些页是空白的,具体内容是空白页的id。
    db.redo,用于恢复db.data的b树索引
    lock,记录了当前获得kahadb的读写权限的服务器
  • 相关阅读:
    单例模式
    C++继承-重载-多态-虚函数
    c++仿函数 functor
    常用排序算法实现与效率比较
    树的中序非递归遍历
    二叉树递归遍历
    队列的顺序存储框架
    栈的链式存储框架
    栈的顺序存储构架
    函数指针和回调函数
  • 原文地址:https://www.cnblogs.com/wl889490/p/12911527.html
Copyright © 2011-2022 走看看