本章重点

  • 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. Introduction to Mathematical Thinking - Week 3

    there exists and all there exists 证明根号2是无理数 all 习题 3. Which of the following formal propositions say ...

  2. docker介绍和简单使用

    docker介绍 docker 为什么会有docker出现? 一款产品从开发到上线,从操作系统到运行环境,再到应用配置,作为开发+运维直接的协作我们需要关心很多东西,这也是互联网公司不得 不面对问题, ...

  3. LATEX教程(一)

    第一个文档 打开WinEdt,建立一个新文档,将以下内容复制进入文档中,保存,保存类型选择为UTF-8. \documentclass{article} \begin{document} hello, ...

  4. Learning Notes for HTML/CSS/JS

    @1:内部样式表 & 外部样式表 内部样式表的定义,放在<style></style>中,<style>标签放在<head>中 <html ...

  5. Django_随机验证码

    随机验证码 Python生成随机验证码,需要使用PIL模块. 安装: pip3 install pillow 基本使用 1. 创建图片 from PIL import Image img = Imag ...

  6. LeetCode:杨辉三角【118】

    LeetCode:杨辉三角[118] 题目描述 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 5 输出: ...

  7. LeetCode:平衡二叉树【110】

    LeetCode:平衡二叉树[110] 题目描述 给定一个二叉树,判断它是否是高度平衡的二叉树. 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1. 示例 ...

  8. yii2判断数据库字段is null

    $query = new Query; $query->select('ID, City,State,StudentName') ->from('student') ->]) -&g ...

  9. SQL语句 自连表查询。inner join用法,partition by ,列转行查询

    use mydb1 go -- 表T_Employee2 -- Id Name Position Dept -- 1 张三 员工 市场部 -- 2 李四 经理 销售部 -- 3 王五 经理 市场部 - ...

  10. sublime text - vintage

    使用sublime text的vim模式的同学注意了: { "color_scheme": "Packages/Color Scheme - Default/Mac Cl ...