`
taotaogo1980
  • 浏览: 84255 次
社区版块
存档分类
最新评论

ActiveMQ中消息游标

阅读更多

    ???????? 在 ActiveMQ 5.0的之前版本中,broker 会把正在传输的消息保存在内存中。使用这种内存模型,当一个消费者消费消息的速度跟不上生产者生产消息的速度的时候,会是 broker 内存中维护的正在传输的消息数量迅速增长,最终到达最大限额。当到达此最大限额后,broker 就不能接受来自客户端的消息,这样生产者就会被阻塞直到 broker 的内存中有保存消息的空间为止。

?????? 从 5.0 版本开始,ActiveMQ 实现了一种新的内存模型以防止慢速的消费者阻塞运行速度更快的生产者。这种内存模型使用了消息游标,详情请查看 http://activemq.apache.org/message-cursors.html 。 <br>??????? 当消息消费者在激活并且快速消息消息的情况下,紧跟消息的生产者。消息被消息存储并且被传递到消息者关联的broker对应的分发调度队列。

?<img src="http://dl.iteye.com/upload/picture/pic/93490/44ccef05-d76a-3530-a80a-f62c77770a27.png" alt="" width="479" height="360">

?

?

如果消息消费者处于激活状态,处于存储状态的消息处于等待状态或者消费者消费比生产者慢的时候,消息将通过等待指针把消息从消息存储中将消息放入分发队列中。

?

?<img src="http://dl.iteye.com/upload/picture/pic/93488/e47d858c-5326-3bce-9b18-1872ca08bf0a.png" alt="" width="484" height="366">

?

游标类型:

??? 在ActiveMQ5.0中默认消息指针类型是以存储为为基础。有两种类型的游标:vm Cursor和File Based Cursor。

?

Vm Cursor

????? 这种指针是从ActiveMQ4.x开始使用,当在需要的时候,消息将被存储到内存中同时把消息传递到分发队列中。这种基于内存指针速度很快,但是当消息者长时间处于非运行状态或者消息者消息很慢的时候,性能可能急速下降,内存占用比较高。

<img src="http://dl.iteye.com/upload/picture/pic/93494/108ba4ee-2a8f-38bc-88fd-e5dde8d5eb14.png" alt="" width="535" height="356">

?

File Based Cursor

? 这种指针在当Broker中内存达到最大的时候,指针将消息置入到磁盘上的临时文件中。这种消息的指针使用在消息者消费比较高。但是消息存储比较慢的情况。

 
0
1
分享到:
评论

相关推荐

    ActiveMQ队列消息过期时间设置和自动清除解决方案.docx

    在 ActiveMQ 中,可以通过设置时间戳插件来实现消息过期时间设置。该插件可以根据消息的过期时间来删除消息。配置示例如下: ... &lt;!-- 86,400,000ms = 1 day --&gt; ... 其中,ttlCeiling 表示过期时间...

    ActiveMQ消息过期时间设置和自动清除解决方案

    在ActiveMQ中,有多种策略可供选择,以决定如何处理这些死信消息。 ##### 直接抛弃死信队列 如果开发者不需要关心DeadLetter消息,可以使用`DiscardingDLQBrokerPlugin`插件来直接丢弃这些消息。 ```xml &lt;!--...

    springboot集成activemq实现消息接收demo

    本教程将详细介绍如何在Spring Boot项目中集成ActiveMQ,实现消息接收的Demo。 首先,我们需要在Spring Boot项目中引入ActiveMQ的相关依赖。在`pom.xml`文件中添加以下Maven依赖: ```xml &lt;groupId&gt;org.spring...

    activeMQ发送消息返回消息

    在ActiveMQ中,发送和接收消息是一个核心功能,它允许应用程序之间进行异步通信,提高系统的可扩展性和解耦性。 在ActiveMQ中发送消息,通常涉及以下步骤: 1. **创建ConnectionFactory**:ConnectionFactory是...

    一个jms activemq Topic 消息实例

    一个jms activemq Topic 消息实例 关于jms JMS 是接口,相当于jdbc ,要真正使用它需要某些厂商进行实现 ,即jms provider 常见的jms provider 有 ActiveMQ JBoss 社区所研发的 HornetQ (在jboss6 中默认即可以...

    SpringBoot快速玩转ActiveMQ消息队列

    在ActiveMQ中,我们可以自定义消息序列化和反序列化的方式,以处理不同类型的数据。这通常涉及到创建一个实现`MessageConverter`接口的类,并在Spring配置中声明使用。 **四、高级特性** 除了基本的发送和接收消息...

    go语言实现使用activemq 收发消息

    使用`conn.Subscribe()`方法订阅ActiveMQ中的主题或队列。订阅后,使用`conn.Recv()`接收消息: ```go frame, err := conn.Subscribe("/queue/test", stomp.AckAuto) if err != nil { panic(err) } defer ...

    ActiveMQ学习笔记之九--发送消息到队列中

    首先,我们要理解ActiveMQ中的队列(Queue)概念。队列是一种先进先出(FIFO)的数据结构,每个消息只会被一个消费者接收和处理,确保消息的有序性和可靠性。在Java环境中,我们可以使用JMS API来与ActiveMQ进行交互...

    activemq消息持久化所需Jar包

    在ActiveMQ中,它用于在KahaDB中实现消息的持久化。你需要`openjpa-all.jar` 来支持这一功能。 6. **其他依赖**:此外,还有一些其他的库,如`geronimo-jms_2.0_spec.jar`(提供JMS 2.0规范),`commons-logging....

    使用WebSocket协议接收ActiveMQ消息

    至于压缩包文件"activemq_ws_接收消息",其中可能包含示例代码、配置文件或者文档,帮助用户更好地理解如何在ActiveMQ中配置WebSocket接收消息。解压并研究这些文件将有助于实际操作中的实施。 总之,使用WebSocket...

    用C#实现的ActiveMQ发布/订阅消息传送

    在本场景中,我们关注的是如何使用C#编程语言结合ActiveMQ来实现发布/订阅模式的消息传送。ActiveMQ是Apache软件基金会开发的一个开源消息传递平台,支持多种协议,包括NMS(.NET Messaging Service),它是专门为...

    activeMQ收发工具.rar

    8. **事务处理**:学习如何在ActiveMQ中使用JMS事务确保消息的一致性和可靠性。 9. **性能监控**:ActiveMQ提供了一套强大的监控工具,包括Web控制台,可以用来查看消息的发送、接收和堆积情况,帮助优化系统性能。...

    7道消息队列ActiveMQ面试题!

    在面试中,面试官可能会问到关于ActiveMQ的一些基础和深入的问题,比如ActiveMQ的特性、消息传递机制、故障处理、消息持久化、性能调优以及消息消费等方面的知识。 1. ActiveMQ的核心概念和功能 ActiveMQ提供了多种...

    spring使用activeMQ实现消息发送

    5. **队列和主题的区别**:在ActiveMQ中,消息可以发送到队列(Queue)或主题(Topic)。队列遵循一对一模型,每个消息仅被一个消费者接收;主题遵循一对多模型,一个消息可以被多个订阅者接收。在上述示例中,我们...

    ActiveMQ收发消息Demo

    ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它遵循开放消息传递协议(Open Message Broker Protocol,即AMQP)和Java消息服务(Java Message Service,JMS)规范,用于在分布式系统中高效地处理和传输...

    SpringBoot整合ActiveMQ(消息中间件)实现邮件发送功能

    在本项目中,"SpringBoot整合ActiveMQ(消息中间件)实现邮件发送功能"是一个典型的企业级应用示例,它展示了如何将SpringBoot框架与Apache ActiveMQ集成,以实现基于消息队列的邮件发送服务。下面我们将详细探讨这个...

    简单的activemq点对点的同步消息模型

    3. **创建队列**:在ActiveMQ中,可以通过管理控制台或编程方式创建队列。例如,通过JMS API,可以创建一个`Queue`对象来表示队列,并向其发送和接收消息。 4. **生产者(Publisher)**:生产者是发送消息的实体。...

    SpringBoot+ActiveMq+MQTT实现消息的发送和接收

    在本文中,我们将深入探讨如何使用SpringBoot、ActiveMQ和MQTT来实现消息的发送与接收。这是一个典型的分布式系统中的消息通信场景,其中SpringBoot作为应用程序框架,ActiveMQ作为消息中间件,而MQTT(Message ...

    基于activeMQ的消息推送.zip

    4. **消息模型**:理解发布/订阅和点对点两种消息模型,以及在ActiveMQ中如何选择和配置。 5. **浏览器兼容性**:探讨如何确保代码在不同浏览器(IE、Edge、Chrome、Firefox)上的兼容性,可能涉及到polyfill或特定...

    Spring+ActiveMQ消息队列+前台接收消息

    在本教程中,我们将探讨如何整合Spring框架与ActiveMQ消息队列,实现前后台的消息传递。这有助于提升系统的可扩展性和响应速度,降低不同组件之间的耦合度。 首先,Spring框架是Java企业级应用开发的事实标准,它...

Global site tag (gtag.js) - Google Analytics