ActiveMQ系统之——消息持久化到MySQL数据库中(二)

写在前面话

关于这一节的程序,需要使用到《ActiveMQ系列之——安装、运行及事例代码(一)》中的示例代码。本文主要介绍关于消息持久化的配置。

ActiveMQ默认情况下是基于文件的存储,使用的是kahaDB,当然还有其它的持久化方式,例如LevelDB,这个是在5.8的版本中引入的,本文主要介绍数据库持久化,使用的数据库是MySQL,其它数据库类似。

介绍 

ActiveMQ数据库持久化有两种类型,一是直接的JDBC操作,二是journal的jdbc操作,第二是优化过的,先快速的保存到文件中,然后在某个检查点与数据对比,之后再写数据库,也可以称之为批量操作数据库。持久化操作的主要配置在activemq.xml中,在此基础上,我做了其它两点改动,在conf目录下增加一个jdbc.properties的文件,将数据库有关配置信息保存在此文件中,activemq.xml通过加载外部属性文件的方式引入该文件。

配置

journal

activemq.xml(地址 https://github.com/wangdongsong/java/tree/master/src/main/resources/activemq/journaljdbc)




    
    
        
			
				file:${activemq.conf}/credentials.properties
				
				file:${activemq.conf}/jdbc.properties
			
        
    

    
    
    

    
    

        
            
              
                
                  
                    
                  
                
              
            
        


        
            
        
		
		
       	
       		
			
		
        
        
          
              
                  
              
              
                  
              
              
                  
              
          
        

        
            
            
            
            
            
        

        
            
        

    
	
	
	
			
			
			
			
	

    




非journal

activemq.xml(地址: https://github.com/wangdongsong/java/tree/master/src/main/resources/activemq/jdbc)




    
    
        
			
				file:${activemq.conf}/credentials.properties
				
				file:${activemq.conf}/jdbc.properties
			
        
    

    
    
    

    
    

        
            
              
                
                  
                    
                  
                
              
            
        


        
            
        
		
		
        
			
        
        
        
          
              
                  
              
              
                  
              
              
                  
              
          
        

        
            
            
            
            
            
        

        
            
        

    
	
	
	
			
			
			
			
	

    




上述两种方式共用的jdbc.properties
##jdbc.driver
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/activemq?autoReconnect=true&useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=root

这两种方式,我都做了尝试,在发送Queue,无消息者情况下,非journal的形式是直接操作数据,单条记录写数据库,而journal的方式则是批量操作数据库的。


你可能感兴趣的:(Java,工作总结,JMS,activemq,数据库,MySQL,持久化)