千家信息网

JMS与ActiveMQ消息数据持久化

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,认识JMSJMS是Java消息服务(Java message service),是java平台关于面向消息中间件(MOM)的API。用于两个应用程序或分布式系统应用中,消息发送,消息异步处理。即应用程
千家信息网最后更新 2025年12月01日JMS与ActiveMQ消息数据持久化
  • 认识JMS
    JMS是Java消息服务(Java message service),是java平台关于面向消息中间件(MOM)的API。用于两个应用程序或分布式系统应用中,消息发送,消息异步处理。即应用程序间通信通过JMS服务,进行消息转发。应用程序间消息异步处理可解除应用程序的耦合。
    JMS有消息异步处理、程序间解耦、消息可靠的优势。
  • JMS消息模型
    Queue点对点(Point to Point
    Queue队列是点对点消费,发送者发送一条消息,只有唯一的一个消费者能对消息进行消费。消息生产者都将消息发送到消息的队列(Queue)中。队列的消息可以是持久的,保证消息服务出现故障仍然能够传递消息。
    特点:
    1).每个消息只有一个消费者(Customer),消息一旦被消费,消息就不在队列(Queue)了。
    2).消息发送者和接收者没有时间依赖,消息发送者只管消息发送,不管消息的消费者是否有接收消息。
    3).消息被接收到消息后,会发送消息确认(ACK)通知给消息队列(Queue)。
    Queue模型图:

    发布/订阅(Publish/Subscribe)
    消息发布者发布消息,消息通过主题(Topic)传递给所有接收者,消息发布者和订阅者彼此不相干。主题(Topic)主要用于保存和传递消息。
    发布/订阅模型中,应用程序有Topic、发布者(Publish)、订阅者(Subscribe)组成。
    特点:
    1).每个消息可有多个消费订阅者。
    2).发布者和订阅者无时间依赖性。某个主题(Topic)的订阅者,必须先创建一个订阅者后才能消费发布者的消息,且为消费消息,订阅者必须保持运行状态。
    3).可持久化订阅。
    Topic模型图:

  • ActiveMQ消息数据持久化
    为了避免机器意外宕机,消息丢失。可进行对消息持久化操作,机器重启后恢复消息队列。ActiveMQ消息持久化机制有JDBC、AMQ、KahaDB和LevelDB。消息发送者将消息发送出去后,消息中心将消息数据存储到本地文件、本地内存或者数据库等。消息持久化操作后,消息中心启动后会先检查指定存储位置,如有未发送成功的消息,则继续将消息发送出去。
    1).JDBC持久化方式
    此持久化方式会在数据库创建3个表:activemq_msgs、activemq_acks、activemq_lock。activemq_msgs用于存储消息,Queue和Topic都存储于这个表中。
    配置方式:
    修改安装目录下的conf/activemq.xml文件。persistenceAdapter节点中配置。
     

    2).AMQ方式
    性能高于JDBC,消息会按顺序追加方式写入日志文件中,性能较高。为了提升性能,会创建消息主键索引。缺点是索引文件很大,需占用大量磁盘空间。如果broker崩溃,重建索引速度非常慢。每个日志文件大小有限定(默认32M)。超过此大小,会重新建立一文件。当所有消息消费完成,系统删除这个文件或进行规定(取决于配置)。
    配置:

    索引重建时间长,占用磁盘空间大,此方式不推荐。
    3).KafaDB方式
    KafaDB持久化是ActiveMQ默认的持久化方式。KafaDB持久化和AMQ一样都是基于日志文件,但KafaDB方式恢复时间远少于AMQ方式,且使用更少的数据文件。优于AMQ方式持久化。
    配置:

    directory:指定消息持久化的存储目录。
    journalMaxFileLength:指定保存消息日志文件大小。
    4).LevelDB方式
    ActiveMQ5.6版本后推出的LevelDB方式持久化。不过LevelDB方式性能要高于KafaDB,后面很可能是这个趋势。
    配置:

消息 方式 文件 消费 订阅 订阅者 程序 队列 应用 配置 数据 发布者 应用程序 存储 发送者 性能 日志 模型 索引 主题 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全教育小知识幼儿园 网络安全学生发言稿 怎么向网络安全运维发展 如何查看网络安全策略 基于中小型企业服务器的配置 网络安全和数字经济博弈之道 服务器添加硬盘需要关机么 网络安全校园宣传周 sql数据库实例改名 mysql数据库展示 湖北程序软件开发大概要多少钱 网易云网络安全 临沂物流软件开发公司 数据库放在哪安全 集团公司网络安全管理规章制度 太原软件开发培训学校有哪些 什么应当指定网络安全 宁海计算机软件开发平台 海南小型服务器 国家网络安全标准包括 中心小学网络安全教育简讯 陕西电脑服务器机箱加工厂家 如何查看网络安全策略 微信后端服务器超时 深圳爱生活网络技术有限公司 数据库的技术与应用答案 oppo手机办公oa连接服务器 关于网络安全的各种日报 吉安游戏软件开发在线咨询 江苏企业软件开发代理价钱
0