ActiveMq可以持久化操作避免丢失数据。
ActiveMq有两种通信方式。
1.点对点;
点对点模型不会发生消息丢失的情况,一个消息只能被一个消费者(消息的接受者)消费,被消费后,消息就会从队列里面消失。被消费之前是一直在等待被消费。如果多个消费者消费一条消息,那么只能有一个消费者可以监听到这条消息,先到先得。
2.发布订阅模型;
默认情况是就通知一次,没有接受到就没有了。很可能会丢失数据。如果对消息送达率很高,就需要配置持久化订阅。每个订阅端定义一个id,在订阅时向activeMq注册,发布消息和接收消息需要配置发送模式为持久化。此时如果客户端接收不到消息的话,消息会持久化在服务端,直到客户端接收后为止。
ActiveMQ的消息持久化机制有JDBC,AMQ,KahaDB和LevelDB,无论使用哪种持久化方式,消息的存储逻辑都是一致的。
就是在发送者将消息发送出去后,消息中心首先将消息存储到本地数据文件、内存数据库或者远程数据库等,然后试图将消息发送给接收者,发送成功则将消息从存储中删除,失败则继续尝试。消息中心启动以后首先要检查指定的存储位置,如果有未发送成功的消息,则需要把消息发送出去。
配置持久化的方式,都是修改安装目录下conf/acticvemq.xml文件。
未完待续