本章重点

  • ActiveMQ 中,队列和主题里的消息是怎么存储的
  • ActiveMQ 提供的四种消息存储形式
  • ActiveMQ 是怎么为消费者缓存消息的
  • 使用订阅恢复模式,怎么控制消息缓存

简介

JMS 规范支持两种类型的消息分发:持久化和非持久化。持久化分发的消息必须要日志记录到固定的存储设备上。对于非持久化分发,JMS 提供者必须尽最大可能的分发消息,但提供者不必日志记录消息到存储设备。
ActiveMQ 不仅支持规范中定义的两种消息分发,并且也可以配置成支持消息恢复,消息缓存在内存中。ActiveMQ 对于消息存储支持插件策略,提供了存储消息在内存,文件,以及关系型数据库的存储选项。
当你想要消费者可以接收到每个消息,即使消息被发送到代理时消费者并不在线,那么就要使用持久化消息了。一旦消息已经被消费者接收并确认,代理就会从存储中删除消息。
非持久化消息一般用于发送通知和实时数据。当性能是重要的且消息并没有必达的要求,那么你应该使用非持久化消息。
本章将首先解释为什么队列和主题中的消息存储是不同的。然后介绍 ActiveMQ 中四种不同的消息存储方式,并解释为什么以及什么时候使用它们。最终,我们将学习怎么配置临时消息缓存以便消费者可以在以后的某个时间点消费消息。ActiveMQ 提供的消息缓存是灵活的,你的应用可以进行非常方便的恢复控制。
本章将详细的解释消息持久化。为了打好基础,我们先学习 JMS destinations 的消息存储。

ActiveMQ 是怎么存储消息的?

理解 ActiveMQ 存储消息的存储机制的基本知识是非常重要的。队列和主题中的消息存储是不同的,因为有些可以在主题上优化的地方并不适合队列。
队列存储消息是非常直接的——即最基本的先进先出(FIFO)。
主题存储消息是有点复杂的,它为每一个消费者维持一个指向消息队列的指针。

KahaDB 消息存储

自从 5.3 版本之后,ActiveMQ 推荐的消息存储一般是使用 KahaDB。它是一种基于文件形式的消息存储,集合了便于恢复的事务日志和良好的性能以及可伸缩性。

AMQ 消息存储

跟 KahaDB 差不多的东西吧,两者有啥区别?反正我是没看明白!

JDBC 消息存储

就是利用关系型数据库存储消息啦!感觉有点怪怪的。。。

内存消息存储

这个就不是持久化了,就是单纯的把消息保存在内存中,配置简单,使用方便!

为消费者缓存消息

我曹,好难啊!这小节完全没看懂。。。

ActiveMQ 消息存储的更多相关文章

  1. 深入浅出 JMS(四) - ActiveMQ 消息存储

    深入浅出 JMS(四) - ActiveMQ 消息存储 一.消息的存储方式 ActiveMQ 支持 JMS 规范中的持久化消息与非持久化消息 持久化消息通常用于不管是否消费者在线,它们都会保证消息会被 ...

  2. ActiveMQ消息存储持久化

    --------------------------------------------------------------------------------------------------- ...

  3. ActiveMQ 消息存储持久化

    ActiveMQ提供了一个插件式的消息存储,类似于消息的多点传播,主要实现了如下几种: AMQ消息存储-基于文件的存储方式,是以前的默认消息存储 KahaDB消息存储-提供了容量的提升和恢复能力,是现 ...

  4. ActiveMQ消息队列介绍

    ActiveMQ是一个开源兼容Java Message  Service  (JMS) 1.1面向消息的中件间. 来自Apache Software Foundation. ActiveMQ提供松耦合 ...

  5. ActiveMQ 目录

    (1) ActiveMQ简介 (2) JMS基本概念和模型 (3) JMS的可靠性 (4) ActiveMQ结合Spring开发 (5)ActiveMQ支持的传输协议 (6)ActiveMQ消息存储持 ...

  6. ActiveMQ消息队列介绍(转)

    ActiveMQ是一个开源兼容Java Message Service (JMS) 1.1面向消息的中件间. 来自Apache Software Foundation. ActiveMQ提供松耦合的应 ...

  7. ActiveMQ 学习第二弹

    经历了昨天的初识 ActiveMQ,正好今天下班有点事耽搁了还没法回家,那就再学习会 ActiveMQ 吧!现在官网的文档没啥好看的了,毕竟是入门学习,太深奥的东西也理解不了.然后看官网上有推荐书籍& ...

  8. 15套java架构师、集群、高可用、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩展. ...

  9. java架构师负载均衡、高并发、nginx优化、tomcat集群、异步性能优化、Dubbo分布式、Redis持久化、ActiveMQ中间件、Netty互联网、spring大型分布式项目实战视频教程百度网盘

    15套Java架构师详情 * { font-family: "Microsoft YaHei" !important } h1 { background-color: #006; ...

随机推荐

  1. JavaScript中label与break配合使用

    语法 label: statement 说明 label语句可以在代码中添加标签,以便将来使用.定义的标签可以在将来由break或continue语句引用.加标签的语句一般都要与for语句等循环语句配 ...

  2. EChars文档

    http://echarts.baidu.com/echarts2/doc/doc.html#SeriesMap http://echarts.baidu.com/option.html

  3. 中文Ubuntu里用户目录里的路径改成英文

    (附注:转载于http://www.linuxdiyf.com/linux/201105/56.html) 为了使用起来方便,装了Ubuntu中文版,自然在home文件里用户目录的"桌面&q ...

  4. PAAS、IAAS和SAAS区别

    IaaS: Infrastructure-as-a-Service(基础设施即服务) 有了IaaS,你可以将硬件外包到别的地方去.IaaS公司会提供场外服务器,存储和网络硬件,你可以租用.节省了维护成 ...

  5. mysql之视图,触发器,事务等

    一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...

  6. php......留言板

    部门内部留言板 一.语言和环境 实现语言 PHP 二.要求: 本软件是作为部门内员工之间留言及发送消息使用. 系统必须通过口令验证,登录进入.方法是从数据库内取出用户姓名和口令的数据进行校验. 用户管 ...

  7. Java数据类型 及 转换原则

    一.数据类型分类:主要分为 基本类型.引用类型两大类: 二.基本类型 转换原则 1.类型转换主要在在 赋值.方法调用.算术运算 三种情况下发生. a.赋值和方法调用 转换规则:从低位类型到高位类型自动 ...

  8. 明远imx6

    http://pan.baidu.com/s/1ntsrQtF#path=%252FMY-I.MX6%2520V2.5 nkuc tftpboot 0x10800000 uImage.ramdisk ...

  9. MACHINE_START-内核板级初始化实现机制(linux3.1.0)

    转:https://blog.csdn.net/charliewangg12/article/details/41518549 在驱动开发时,我们都是以一块开发板为基础移植驱动程序.每一块开发板对应一 ...

  10. 【Head First Servlets and JSP】笔记10:请求分派(RequestDispatcher)

    1.让其它组件接管全部请求. package com.example.web; import com.example.model.BeerExpert; import javax.servlet.*; ...