ActiveMQ 消息存储
本章重点
- ActiveMQ 中,队列和主题里的消息是怎么存储的
- ActiveMQ 提供的四种消息存储形式
- ActiveMQ 是怎么为消费者缓存消息的
- 使用订阅恢复模式,怎么控制消息缓存
简介
JMS 规范支持两种类型的消息分发:持久化和非持久化。持久化分发的消息必须要日志记录到固定的存储设备上。对于非持久化分发,JMS 提供者必须尽最大可能的分发消息,但提供者不必日志记录消息到存储设备。
ActiveMQ 不仅支持规范中定义的两种消息分发,并且也可以配置成支持消息恢复,消息缓存在内存中。ActiveMQ 对于消息存储支持插件策略,提供了存储消息在内存,文件,以及关系型数据库的存储选项。
当你想要消费者可以接收到每个消息,即使消息被发送到代理时消费者并不在线,那么就要使用持久化消息了。一旦消息已经被消费者接收并确认,代理就会从存储中删除消息。
非持久化消息一般用于发送通知和实时数据。当性能是重要的且消息并没有必达的要求,那么你应该使用非持久化消息。
本章将首先解释为什么队列和主题中的消息存储是不同的。然后介绍 ActiveMQ 中四种不同的消息存储方式,并解释为什么以及什么时候使用它们。最终,我们将学习怎么配置临时消息缓存以便消费者可以在以后的某个时间点消费消息。ActiveMQ 提供的消息缓存是灵活的,你的应用可以进行非常方便的恢复控制。
本章将详细的解释消息持久化。为了打好基础,我们先学习 JMS destinations 的消息存储。
ActiveMQ 是怎么存储消息的?
理解 ActiveMQ 存储消息的存储机制的基本知识是非常重要的。队列和主题中的消息存储是不同的,因为有些可以在主题上优化的地方并不适合队列。
队列存储消息是非常直接的——即最基本的先进先出(FIFO)。
主题存储消息是有点复杂的,它为每一个消费者维持一个指向消息队列的指针。
KahaDB 消息存储
自从 5.3 版本之后,ActiveMQ 推荐的消息存储一般是使用 KahaDB。它是一种基于文件形式的消息存储,集合了便于恢复的事务日志和良好的性能以及可伸缩性。
AMQ 消息存储
跟 KahaDB 差不多的东西吧,两者有啥区别?反正我是没看明白!
JDBC 消息存储
就是利用关系型数据库存储消息啦!感觉有点怪怪的。。。
内存消息存储
这个就不是持久化了,就是单纯的把消息保存在内存中,配置简单,使用方便!
为消费者缓存消息
我曹,好难啊!这小节完全没看懂。。。
ActiveMQ 消息存储的更多相关文章
- 深入浅出 JMS(四) - ActiveMQ 消息存储
深入浅出 JMS(四) - ActiveMQ 消息存储 一.消息的存储方式 ActiveMQ 支持 JMS 规范中的持久化消息与非持久化消息 持久化消息通常用于不管是否消费者在线,它们都会保证消息会被 ...
- ActiveMQ消息存储持久化
--------------------------------------------------------------------------------------------------- ...
- ActiveMQ 消息存储持久化
ActiveMQ提供了一个插件式的消息存储,类似于消息的多点传播,主要实现了如下几种: AMQ消息存储-基于文件的存储方式,是以前的默认消息存储 KahaDB消息存储-提供了容量的提升和恢复能力,是现 ...
- ActiveMQ消息队列介绍
ActiveMQ是一个开源兼容Java Message Service (JMS) 1.1面向消息的中件间. 来自Apache Software Foundation. ActiveMQ提供松耦合 ...
- ActiveMQ 目录
(1) ActiveMQ简介 (2) JMS基本概念和模型 (3) JMS的可靠性 (4) ActiveMQ结合Spring开发 (5)ActiveMQ支持的传输协议 (6)ActiveMQ消息存储持 ...
- ActiveMQ消息队列介绍(转)
ActiveMQ是一个开源兼容Java Message Service (JMS) 1.1面向消息的中件间. 来自Apache Software Foundation. ActiveMQ提供松耦合的应 ...
- ActiveMQ 学习第二弹
经历了昨天的初识 ActiveMQ,正好今天下班有点事耽搁了还没法回家,那就再学习会 ActiveMQ 吧!现在官网的文档没啥好看的了,毕竟是入门学习,太深奥的东西也理解不了.然后看官网上有推荐书籍& ...
- 15套java架构师、集群、高可用、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程
* { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩展. ...
- java架构师负载均衡、高并发、nginx优化、tomcat集群、异步性能优化、Dubbo分布式、Redis持久化、ActiveMQ中间件、Netty互联网、spring大型分布式项目实战视频教程百度网盘
15套Java架构师详情 * { font-family: "Microsoft YaHei" !important } h1 { background-color: #006; ...
随机推荐
- iOS 成员变量和属性的区别
一. 成员变量 1.成员变量的作用范围: @public:在任何地方都能直接访问对象的成员变量 @private:只能在当前类的对象方法中直接访问,如果子类要访问需要调用父类的get/set方法 @p ...
- 构造函数强制使用new
function Car(model, year, miles) { if (!(this instanceof Car)) { return new Car(model, year, miles); ...
- 高并发服务器建议调小 TCP 协议的 time_wait 超时时间
说明:操作系统默认 240 秒后,才会关闭处于 time_wait 状态的连接,在高并发访问下,服 务器端会因为处于 time_wait 的连接数太多,可能无法建立新的连接,所以需要在服务器上 调小此 ...
- KVM WEB管理工具webvirtmgr安装和使用
生产环境的KVM宿主机越来越多,需要对宿主机的状态进行调控.这里用webvirtmgr进行管理.图形化的WEB,让人能更方便的查看kvm 宿主机的情况和操作 1 安装支持的软件源 yum -y ins ...
- 斯坦福大学Andrew Ng - 机器学习笔记(1) -- 单变量&多变量线性回归
大概用了一个月,Andrew Ng老师的机器学习视频断断续续看完了,以下是个人学习笔记,入门级别,权当总结.笔记难免有遗漏和误解,欢迎讨论. 鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深 ...
- centos7安装nodejs 和 yarn
如何从EPEL库安装Node.js 另一个有效且简单的方法来安装Node.js就是从官方库.这同样确保您可以访问到EPEL库,你可以通过运行以下命令. sudo yum install epel-re ...
- Java并发—线程常用方法总结
1.join()方法 join —— 让一个线程等待另一个线程完成才继续执行.如A线程线程执行体中调用B线程的join()方法,则A线程被阻塞,知道B线程执行完为止,A才能得以继续执行. public ...
- 第二篇 Python图片处理模块PIL(pillow)
本篇包含:16.Point 17.Putalpha 18.Putdata 19.Putpalette 20.Putpixel 21.Quantize 22.R ...
- 42和为S的两个数字
题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输出. 设置 ...
- sorted 、 filter 、 map
sorted 排序函数 内置函数中提供了一个通用的排序方案 ,返回一个新的列表,不会改变原数据 语法: sorted(iterable, key, reverse) key: 排序方案, sort ...