ActiveMQ持久化机制
为什么要进行持久化 为了避免MQ服务器意外宕机导致数据丢失,需要做到重启后没有被消费的数据依然在消息队列中。 ActiveMQ的持久化机制包含: 1. JDBC:持久化到数据库 2. AMQ:日志文件 3. KahaBD:AMQ基础上改进,默认选择 4. LevelDB:谷歌K/V数据库 注:ActiveMQ默认是不开启持久化的。 ActiveMQ默认持久化机制 <persistenceAdapter> <kahaDB directory="${activemq.data}/kahadb"/> </persistenceAdapter> 性能: AMQ的性能改与JDBC的持久化机制,由于是在文件中追加写入消息,所以性能比较高。并且创建了消息主键索引和缓存索引机制以提升性能。 缺点: AMQ会为每一个Destination创建一个索引,若创建了大小的消息队列,则磁盘占用会非常大,所以由于索引文件比较大,当Broker崩溃后,重建所以速度比较慢。 JDBC持久化机制 步骤一:创建数据库 步骤二:在程序中开启持久化操作 producer.setDeliveryMode(DeliveryMode.PERSISTENT); PERSISTENT:代表开启持久化 NON_PERSISTENT