activemq最新版全jar包,activemq-all-5.15.0.jar
ActiveMQ消息,对于可靠消息传递来说应该是一种比较好的方法,有了消息持久化,即使发送者和接受者不是同时在线或者消息中心在发送者发送消息后宕机了,在消息中心重新启动后仍然可以将消息发送出去,如果把这种持久化和ReliableMessaging结合起来应该是很好的保证了消息的可靠传送。消息持久性的原理很简单,就是在发送者将消息发送出去后,消息中心首先将消息存储到本地数据文件、内存数据库或者远程数据库等,然后试图将消息发送给接收者,发送成功则将消息从存储中删除,失败则继续尝试。消息中心启动以后首先要检查制定的存储位置,如果有未发送成功的消息,则需要把消息发送出去。 ActiveMQ持久化方式:AMQ、KahaDB、JDBC、LevelDB。 1、AMQ AMQ是一种文件存储形式,它具有写入速度快和容易恢复的特点。消息存储在一个个文件中,文件的默认大小为32M,如果一条消息的大小超过了32M,那么这个值必须设置大一点。当一个存储文件中的消息已经全部被消费,那么这个文件将被标识为可删除,在下一个清除阶段,这个文件被删除。AMQ适用于ActiveMQ5.3之前的版本。默认配置如下: ? 1 2 3
??? 属性如下:属性名称 默认值 描述 directory activemq-data 消息文件和日志的存储目录 useNIO true 使用NIO协议存储消息 syncOnWrite false 同步写到磁盘,这个选项对性能影响非常大 maxFileLength 32Mb 一个消息文件的大小 persistentIndex true 消息索引的持久化,如果为false,那么索引保存在内存中 maxCheckpointMessageAddSize 4kb 一个事务允许的最大消息量 cleanupInterval 30000 清除操作周期,单位ms indexBinSize 1024 索引文件缓存页面数,缺省为1024,当amq扩充或者缩减存储时,会锁定整个broker,导致一定时间的阻塞,所以这个值应该调整到比较大,但是代码中实现会动态伸缩,调整效果并不理想。 indexKeySize 96 索引key的大小,key是消息ID indexPageSize 16kb 索引的页大小 directoryArchive archive 存储被归档的消息文件目录 archiveDataLogs false 当为true时,归档的消息文件被移到directoryArchive,而不是直接删除 2、KahaDB KahaDB是基于文件的本地数据库储存形式,虽然没有AMQ的速度快,但是它具有强扩展性,恢复的时间比AMQ短,从5.4版本之后KahaDB做为默认的持久化方式。默认配置如下: ? 1 2 3
??? KahaDB的属性如下:属性名称 默认值 描述 directory activemq-data 消息文件和日志的存储目录 indexWriteBatchSize 1000 一批索引的大小,当要更新的索引量到达这个值时,更新到消息文件中 indexCacheSize 10000 内存中,索引的页大小 enableIndexWriteAsync false 索引是否异步写到消息文件中 journalMaxFileLength 32mb 一个消息文件的大小 enableJournalDiskSyncs true 是否讲非事务的消息同步写入到磁盘 cleanupInterval 30000 清除操作周期,单位ms checkpointInterval 5000 索引写入到消息文件的周期,单位ms ignoreMissingJournalfiles false 忽略丢失的消息文件,false,当丢失了消息文件,启动异常 checkForCorruptJournalFiles false 检查消息文件是否损坏,true,检查发现损
1