在 ActiveMQ 5.0的之前版本中,broker 会把正在传输的消息保存在内存中。使用这种内存模型,当一个消费者消费消息的速度跟不上生产者生产消息的速度的时候,会是 broker 内存中维护的正在传输的消息数量迅速增长,最终到达最大限额。当到达此最大限额后,broker 就不能接受来自客户端的消息,这样生产者就会被阻塞直到 broker 的内存中有保存消息的空间为止。
从 5.0 版本开始,ActiveMQ 实现了一种新的内存模型以防止慢速的消费者阻塞运行速度更快的生产者。这种内存模型使用了消息游标,详情请查看 http://activemq.apache.org/message-cursors.html 。
当消息消费者在激活并且快速消息消息的情况下,紧跟消息的生产者。消息被消息存储并且被传递到消息者关联的broker对应的分发调度队列。
如果消息消费者处于激活状态,处于存储状态的消息处于等待状态或者消费者消费比生产者慢的时候,消息将通过等待指针把消息从消息存储中将消息放入分发队列中。
游标类型:
在ActiveMQ5.0中默认消息指针类型是以存储为为基础。有两种类型的游标:vm Cursor和File Based Cursor。
Vm Cursor
这种指针是从ActiveMQ4.x开始使用,当在需要的时候,消息将被存储到内存中同时把消息传递到分发队列中。这种基于内存指针速度很快,但是当消息者长时间处于非运行状态或者消息者消息很慢的时候,性能可能急速下降,内存占用比较高。
File Based Cursor
这种指针在当Broker中内存达到最大的时候,指针将消息置入到磁盘上的临时文件中。这种消息的指针使用在消息者消费比较高。但是消息存储比较慢的情况。
分享到:
相关推荐
ActiveMQ队列消息过期时间设置和自动清除解决方案.docx
springboot集成activemq实现消息接收demo
一个jms activemq Topic 消息实例 关于jms JMS 是接口,相当于jdbc ,要真正使用它需要某些厂商进行实现 ,即jms provider 常见的jms provider 有 ActiveMQ JBoss 社区所研发的 HornetQ (在jboss6 中默认即可以...
详细描述了ActiveMQ消息过期-时间设置和自动清除解决方案。
用C#实现的ActiveMQ发布/订阅消息传送源程序
activeMQ的发送消息后接收者返回信息
SpringBoot快速玩转ActiveMQ消息队列,jdk8下的简要版介绍。
SpringBoot整合ActiveMQ(消息中间件)实现邮件发送功能,里面含有详细业务逻辑代码,配置文件等
go语言实现的读取、发送消息到activemq,使用的stomp协议。
ActiveMQ(包括消息生成端和andorid消息接受端),实现了点对点的消息推送,和广播消息推送,当然离线推送也实现了。
activeMQ的测试工具,用于发送和接收activeMQ消息,jar包形式的,安装完jdk之后用java -jar xxx.jar命令运行
Android基于MQTT协议利用ActiveMQ发送消息给Android端接收,属于长连接那种,类似Socket通信
springboot整合ActiveMQ源码,适合范围消息队列入门小伙伴,对ActiveMQ消息队列不太了解,不知道如何发送消息,接收消息可以围观。
activemq消息中间件-视频教程activemq消息中间件-视频教程activemq消息中间件-视频教程activemq消息中间件-视频教程
百度spring整合activemq 发现几乎都只是在xml文件配置固定的消息队列而且太麻烦。并没有根据需求进行动态生成主题和队列。本文档参考了纯粹的... activemq下载文件中有一个demo 包含所有jar包。此处就不上传了。
NULL 博文链接:https://sswh.iteye.com/blog/1974169
简单的activemq点对点的同步消息模型
activemq消息持久化所需Jar包,详情请参见博文:http://blog.csdn.net/l1028386804/article/details/68997105
SpringBoot+ActiveMq+MQTT实现消息的发送和接收 后台消费者、生产者、消息发送接口、发送消息业务类等相关配置
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。 下载本压缩包后解压运行里面的activemq.bat即可。 http://192.168.0.61:8161/ 是管理ActiveMQ的后台管理系统入口, 如需在JAVA中使用,请下载本人的 ...