Terry.Li-彬

          虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks

          2.3 Persistence
          2.3.1 AMQ Message Store
          ??? AMQ Message Store是ActiveMQ5.0缺 省的持久化存儲。Message commands被保存到transactional journal(由rolling data logs組成)。Messages被保存到data logs中,同時被reference store進行索引以提高存取速度。Date logs由一些單獨的data log文件組成,缺省的文件大小是32M,如果某個消息的大小超過了data log文件的大小,那么可以修改配置以增加data log文件的大小。如果某個data log文件中所有的消息都被成功消費了,那么這個data log文件將會被標記,以便在下一輪的清理中被刪除或者歸檔。以下是其配置的一個例子:

          Xml代碼
          1. < broker ? brokerName = "broker" ? persistent = "true" ? useShutdownHook = "false" > ??
          2. ??<persistenceAdapter>??
          3. ?????<amqPersistenceAdapter?directory="${activemq.base}/data"?maxFileLength="32mb"/>??
          4. ??</persistenceAdapter>??
          5. </ broker > ??
          Property name Default value Comments
          directory activemq-data the path to the directory to use to store the message store data and log files
          useNIO true use NIO to write messages to the data logs
          syncOnWrite false sync every write to disk
          maxFileLength 32mb a hint to set the maximum size of the message data logs
          persistentIndex true use a persistent index for the message logs. If this is false, an in-memory structure is maintained
          maxCheckpointMessageAddSize 4kb the maximum number of messages to keep in a transaction before automatically committing
          cleanupInterval 30000 time (ms) before checking for a discarding/moving message data logs that are no longer used
          indexBinSize 1024 default number of bins used by the index. The bigger the bin size - the better the relative performance of the index
          indexKeySize 96 the size of the index key - the key is the message id
          indexPageSize 16kb the size of the index page - the bigger the page - the better the write performance of the index
          directoryArchive archive the path to the directory to use to store discarded data logs
          archiveDataLogs false if true data logs are moved to the archive directory instead of being deleted

          ?

          2.3.2 Kaha Persistence
          ??? Kaha Persistence 是一個專門針對消息持久化的解決方案。它對典型的消息使用模式進行了優化。在Kaha中,數據被追加到data logs中。當不再需要log文件中的數據的時候,log文件會被丟棄。以下是其配置的一個例子:

          Xml代碼
          1. < broker ? brokerName = "broker" ? persistent = "true" ? useShutdownHook = "false" > ??
          2. ??????<persistenceAdapter>??
          3. ????????<kahaPersistenceAdapter?directory="activemq-data"?maxDataFileLength="33554432"/>??
          4. ??????</persistenceAdapter>??
          5. </ broker > ??

          ?

          2.3.3 JDBC Persistence
          ??? 目前支持的數據庫有Apache Derby, Axion, DB2, HSQL, Informix, MaxDB, MySQL, Oracle, Postgresql, SQLServer, Sybase。
          ??? 如果你使用的數據庫不被支持,那么可以調整StatementProvider 來保證使用正確的SQL方言(flavour of SQL)。通常絕大多數數據庫支持以下adaptor:

          • org.activemq.store.jdbc.adapter.BlobJDBCAdapter
          • org.activemq.store.jdbc.adapter.BytesJDBCAdapter
          • org.activemq.store.jdbc.adapter.DefaultJDBCAdapter
          • org.activemq.store.jdbc.adapter.ImageJDBCAdapter

          ?? 也可以在配置文件中直接指定JDBC adaptor,例如:

          Xml代碼
          1. < jdbcPersistenceAdapter ?? adapterClass = "org.apache.activemq.store.jdbc.adapter.ImageBasedJDBCAdaptor" /> ??
          ??? 以下是其配置的一個例子:

          ?

          Xml代碼
          1. <persistence>??
          2. ??????<jdbcPersistence?dataSourceRef="?mysql-ds"/>??
          3. </persistence>??
          4. ??
          5. <bean?id="mysql-ds"?class="org.apache.commons.dbcp.BasicDataSource"?destroy-method="close">??
          6. ??????<property?name="driverClassName"?value="com.mysql.jdbc.Driver"/>??
          7. ??????<property?name="url"?value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/>??
          8. ??????<property?name="username"?value="activemq"/>??
          9. ??????<property?name="password"?value="activemq"/>??
          10. ??????<property?name="poolPreparedStatements"?value="true"/>??
          11. </bean>??

          ??? 需要注意的是,如果使用MySQL,那么需要設置relaxAutoCommit 標志為true。

          ?

          2.3.4 Disable Persistence
          ??? 以下是其配置的一個例子:

          Xml代碼
          1. <broker?persistent="false">??
          2. </broker>
          posted on 2010-09-01 22:26 禮物 閱讀(549) 評論(0)  編輯  收藏 所屬分類: ActiveMQ
          主站蜘蛛池模板: 鄂州市| 鄂尔多斯市| 宁阳县| 常州市| 瓦房店市| 墨江| 电白县| 东海县| 沙坪坝区| 江都市| 双牌县| 罗甸县| 江津市| 海丰县| 哈密市| 夏河县| 满城县| 佳木斯市| 邳州市| 敖汉旗| 宁阳县| 盱眙县| 马尔康县| 云阳县| 唐河县| 临江市| 渭源县| 定结县| 黄山市| 浑源县| 白玉县| 讷河市| 凤凰县| 承德市| 渝中区| 扬州市| 高密市| 上杭县| 三台县| 盐亭县| 永仁县|