本章重点

  • 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 9 评论答案2

    根据 rubic 打分. 1. 我认为,如果说明 m, n 是自然数,所以最小值是 1 会更清楚.所以 Clarity 我给了 3 分.其他都是 4 分,所以一共是 23 分. 2.  我给出的分数 ...

  2. docker openvas

    https://hub.docker.com/r/mikesplain/openvas/ Requirements DockerPorts available: 443, 9390, 9391 Usa ...

  3. <2013 10 18> Linux随机数生成器可能确实存在安全弱点

    生成随机数是密码学中的一项基本任务,是生成加密密钥和加密算法或加密协议所必不可少的.理想中的随机数是完美的,但实践中的随机数都是用伪随机数生成器(PRNG)生成,随机数的质量对安全性至关重要.安全专家 ...

  4. python函数补充

    一 作用域 作用域介绍 python中的作用域分4种情况: L:local,局部作用域,即函数中定义的变量: E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局      ...

  5. PAT 1074 宇宙无敌加法器 (20 分)

    地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”.每个 PAT 星人都必须熟记各位数字的进制 ...

  6. 字符串之strstr

    功能:查找第二个字符串是否存在第一个字符串中. 输入:字符串1,字符串2 返回值:成功返回str1中的位置,失败返回NULL #include <iostream> using names ...

  7. iOS copy 和 mutableCopy 学习

    (参考 iOS 52个技巧学习心得笔记 第二章 对象 , 消息, 运行期)的对象部分 关于Copy  有个经典问题”大部分的时候NSString的属性都是copy,那copy与strong的情况下到底 ...

  8. HASH、HASH函数、HASH算法的通俗理解

    之前经常遇到hash函数或者经常用到hash函数,但是hash到底是什么?或者hash函数到底是什么?却很少去考虑.最近同学去面试被问到这个问题,自己看文章也看到hash的问题.遂较为细致的追究了一番 ...

  9. Linux用户和用户组管理 用户组管理命令

    添加用户组命令:groupadd 命令格式: [root@localhost ~]# groupadd [选项] 组名 选项: 选项 选项说明 -g GID 指定组ID: 修改用户组命令:groupm ...

  10. Python的return self和return一个新的对象区别

    目的:设计一个有理数相加.如3/5 + 7/15 = 80/75 return self 输入: class Rational0: def __init__(self, num, den=1): se ...