activemq JDBC存储,使用mysql持久化

持久化存储支持类型

  • KahaDB存储(默认存储方式)
  • JDBC存储 Memory存储
  • LevelDB存储
  • JDBC With ActiveMQ Journal

正常情况下,非持久化消息是存储在内存中的,持久化消息是存储在文件中的。能够存储的最大消息数据在
${ActiveMQ_HOME}/conf/activemq.xml文件中的systemUsage节点
SystemUsage配置设置了一些系统内存和硬盘容量

activemq.xml



    
        
    
    
        
    
    
        
    

mysql持久化

第一步:注释调kahadb,添加mysql配置


    
    

第二步:添加mysql数据源配置的bean


	
	
	
	

第三步:在activemq更目录的\lib目录下添加以下3个jar包

数据库连接池:commons-dbcp-1.4.jar、commons-pool-1.6.jar

mysql JDBC驱动包:mysql-connector-java-5.1.35.jar

 

第四步:新建数据库activemq并重启activemq

重启后会自动创建3个表:

activemq_msgs 消息表,queue和topic都存在这个表中
activemq_acks 存储持久订阅的信息和最后一个持久订阅接收的消息ID
activemq_locks 锁表,用来确保某一时刻,只能有一个ActiveMQ broker实例来访问数据库

之后发送一个持久化消息不消费掉可以看到数据库表中有数据了

 

JDBC Message store with ActiveMQ Journal

ActiveMQ Journal,使用高速缓存写入技术,大大提高了性能

journal文件能够大大减少需要写入到DB中的消息

如果消费者的消费速度很慢,这个时候journal文件可以使消息以批量方式写到DB

配置好mysql后把persistenceAdapter注释掉添加persistenceFactory即可使用Journal


	

 

你可能感兴趣的:(java)