ActiveMQ-存储策略
Kahadb
<persistenceAdapter>
<kahaDB directory="${activemq.data}/kahadb" journalMaxFileLength="16mb"/>
</persistenceAdapter>
- 日志形式存储消息
- B-Tree存储索引
- 支持JMS事务
- 支持多种恢复机制
journalMaxFileLength
为最大文件大小,并非总存储空间,只是拆分多文件存储- 当
MQ
关闭,自动序列化保存到文件- 当
MQ
内存不足,将部分数据序列化保存到文件,存储形式为内存+文件
DB
bean
<bean id="mysql-db" 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="root"/>
<property name="password" value="godme"/>
<property name="maxActive" value="200"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
有疑问可以打开./examples/activemq-jdbc-performance.xml
查看详细。
examples
下面涵盖大量配置,可以仔细研究。
相关驱动,请在maven仓库中直接搜索 mysql-connector-java,各种下载资源比较烂,这个靠谱。
复制到./lib
目录下即可。
persistenceAdapter
<persistenceAdapter>
<!-- <kahaDB directory="${activemq.data}/kahadb"/> -->
<jdbcPersistenceAdapter xmlns="http://activemq.apache.org/schema/core" dataSource="#mysql-db" createTablesOnStartup="true" dataDirectory="${activemq.data}" cleanupPeriod="0"/>
</persistenceAdapter>
从配置文件示例中也能找到,具体标签不多说了。
- dataSource:数据源
- createTablesOnStartup:自动建表,第一次启动
true
,如果(后续启动)存在请关闭。
表结构
activemq_acks
Field | Type | Null | Key | Default | description |
---|---|---|---|---|---|
CONTAINER | varchar(250) | NO | PRI | NULL | Destination |
SUB_DEST | varchar(250) | YES | NULL | 订阅集群 | |
CLIENT_ID | varchar(250) | NO | PRI | NULL | 订阅者ID |
SUB_NAME | varchar(250) | NO | PRI | NULL | 订阅者名称 |
SELECTOR | varchar(250) | YES | NULL | 选择器,可自定义 | |
LAST_ACKED_ID | bigint(20) | YES | NULL | 消费过的ID | |
PRIORITY | bigint(20) | NO | PRI | 5 | 优先级,0-9,越大越高 |
XID | varchar(250) | YES | PRI | NULL |
activemq_lock
Field | Type | Null | Key | Default | Extradescription |
---|---|---|---|---|---|
ID | bigint(20) | NO | PRI | NULL | ID |
TIME | bigint(20) | YES | NULL | TIME | |
BROKER_NAME | varchar(250) | YES | NULL | NAME |
activemq_msgs
Field | Type | Null | Key | Default | description |
---|---|---|---|---|---|
ID | bigint(20) | NO | PRI | NULL | ID |
CONTAINER | varchar(250) | YES | MUL | NULL | Destination |
MSGID_PROD | varchar(250) | YES | MUL | NULL | 客户端主键 |
MSGID_SEQ | bigint(20) | YES | NULL | 消息发送顺序 MSGID_PROD+MSGID_SEQ=Message_ID |
|
EXPIRATION | bigint(20) | YES | MUL | NULL | 过期时间点,19700101-now(ms) |
MSG | longblob | YES | NULL | 二进制序列化数据 | |
PRIORITY | bigint(20) | YES | MUL | NULL | 优先级,0-9,越大越高 |
XID | varchar(250) | YES | MUL | NULL |