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; ...
随机推荐
- docker postgres
启动一个 Postgres 实例 docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d daocloud.i ...
- 【python】-- Django ORM(进阶)
Django ORM(进阶) 上一篇博文简述了Django ORM的单表操作,在本篇博文中主要简述Django ORM的连表操作. 一.一对多:models.ForeignKey() 应用场景:当一张 ...
- cxGrid时间格式与导出Excel
引用cxFormats单元: ShortDateFormat := 'dd/mm/yyyy'; DateSeparator := '/'; cxFormatController.UseDelphiDa ...
- shutil 模块 高级的文件、文件夹、压缩包 处理模块
高级的文件.文件夹.压缩包 处理模块 # 将文件内容拷贝到另一个文件中 shutil.copyfileobj(fsrc, fdst[, length]) import shutil shutil.co ...
- webview自动循环播放
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=&q ...
- YAMLException: can not read a block mapping entry; a multiline key may not be an implicit key at line 5, column 1:
创建的md文件头部声明中没有加空格.
- mysq数据库的安装和基本操作
一.数据库的简介 1.什么是数据库? 数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合.数据库中的数据按一定的数学模型组织.描述和存储,具有较小的冗余,较高的数据独 ...
- BGP Basic Knowledge
声明: 这篇文章是对网上的这几篇博客的摘录,仅供我自己以后看的时候方便,且不需要再看太多的内容, 如果大家对BGP不是很了解,建议看原博客或者直接看RFC BGP只支持基于目的地址的路由,即路 ...
- Linux文件IO
参考<unix高级环境编程> 本章开始讨论U N I X系统,先说明可用的文件I / O函数——打开文件.读文件.写文件等等.大多数U N I X文件I / O只需用到5个函数:o p e ...
- 怎样在不对控件类型进行硬编码的情况下在 C#vs 中动态添加控件
文章ID: 815780 最近更新: 2004-1-12 这篇文章中的信息适用于: Microsoft Visual C# .NET 2003 标准版 Microsoft Visual C# .NET ...