>>Producer flow-control
Note that, since the introduction of the new file cursor in ActiveMQ 5.x, non-persisted messages are shunted into the temporary file store to reduce the amount of memory used for non-persistent messaging. As a result, you may find that a queue's memoryLimit is never reached, as the cursor doesn't use very much memory. If you really do want to keep all your non-persistent messages in memory, and stop producers when the limit is reached, you should configure the <vmQueueCursor>.
==>
注意,由于AMQ5.x中引入了新的游标fileCursor,非持久化消息被分流到临时文件存储中,从而减少了非持久化消息对内存的使用。结果你会发现队列的内存限制(参数memoryLimit)从不会超限,因为游标
不会使用太多内存。如果你真正的想把所有的非持久消息放在内存中,当队列的内存限制达到时,停止生产者生产消息,你应该配置游标策略为【vmQueueCursor】。
>>流控制发生的条件:==>AMQ5.7.0默认采用【fileQueueCursor】
1、使用vmQueueCursor(与是否持久化无关)
2、队列的内存限制超过了设定的水位线值,参数【memoryLimit="1MB"】和【cursorMemoryHighWaterMark="85"】
===>是水位线超过预设的百分比时(区别是:持久化时,入队消息占用的是内存游标空间,而非持久化总是留队消息占用内存游标空间)
注意:
(1)、当流控制发生后,后续的消息是不能再进入队列中的,直到队列的内存使用量减少到水位线以下。
(2)、当流控制发生后,broker轮询监测是否有可用空间的间隔是30s。
(3)、换个角度,在采用【fileQueueCursor】时,也会发生流控制,当磁盘存储空间不够时。
>>策略配置样例:
<!-- use vmQueueCursor || fileQueueCursor -->
<pendingQueuePolicy>
<vmQueueCursor/>
</pendingQueuePolicy>
****************************
1、如果游标策略采用vmQueueCursor,无论持久化发送消息或者非持久化发送消息时,当设置了队列的memoryLimit非0时,并且producerFlowControl为开启,在水位线达到时会触发流控制发生;
2、如果游标策略采用fileQueueCursor,持久化发送消息时,如果storeUsage(磁盘空间)配置比较小时,该空间达到(变满)时,也会触发流控制发生,消息就不能入队了。
3、如果游标策略采用fileQueueCursor,非持久化发送消息时,如果tempUsage(磁盘空间)配置比较小时,该空间达到(变满)时,也会触发流控制发生,消息就不能入队了。
所有,建议选用fileQueueCursor,磁盘空间配置的尽可能大,即:存储持久化消息的参数【<storeUsage>】和存储非持久化消息的参数【<tempUsage>】。这两个参数仅占用磁盘空间。
总结:如果游标是vmQueueCursor,则使用的是内存空间,和memoryLimit有关;如果游标是fileQueueCursor,则使用的是磁盘空间,对持久化消息,和storeUsage有关,对于非持久化消息,则和tempUsage有关。
****************************
>>三种游标类型: storeCursor || vmQueueCursor || fileQueueCursor =>对于队列,默认是storeCursor
游标:storeCursor和fileQueueCursor类似(都是用的磁盘空间),但有点区别,是?==>前者是串行的,后者由vmQueueCursor衍生而来,是并行的。
fileQueueCursor是对vmQueueCursor的扩展
建议用fileQueueCursor,既有vmQueueCursor的优势,又弥补了其不足。
****************************
>> MQ对带宽的利用率:
*****************************
>>消息游标cursorMemoryUsage
>>Broker间路由消息时,KahaDB和LevelDB对带宽的利用率比对
分享到:
相关推荐
ActiveMQ是中国最流行的开源消息中间件之一,由Apache软件基金会开发。它基于Java Message Service (JMS) 规范,提供了可靠的消息传递功能,适用于分布式系统中的应用间通信。本压缩包“activeMQ收发工具.rar”包含...
**ActiveMQ的activemq.xml配置详解** ActiveMQ是Apache软件基金会开发的一个开源消息代理,它遵循Java消息服务(JMS)规范,提供可靠的消息传递功能。`activemq.xml`是ActiveMQ的核心配置文件,它定义了服务器的...
**ActiveMQ配置文件详解** Apache ActiveMQ 是一个开源的消息中间件,它实现了多种消息协议,如JMS(Java Message Service)和AMQP(Advanced Message Queuing Protocol),并且广泛应用于分布式系统中,提供可靠的...
ActiveMQ路由配置方式 ActiveMQ路由配置是Apache ActiveMQ项目中的一种重要配置方式,它依赖另一个Apache项目Camel。ActiveMQ集成了Camel,启动时同时会启动Camel。通过Camel Web Console可以进行Routing配置。 ...
Apache ActiveMQ是业界广泛使用的开源消息中间件,它基于Java消息服务(JMS)标准,提供了高度可扩展、可靠的异步通信能力。标题"apache-activemq-5.16.5"指的是该软件的一个特定版本,即5.16.5版本,通常每个新版本...
jmx监控ActiveMQ监控 jmx(Java Management Extensions)是一种Java技术,为Java应用程序提供了管理和监控的功能。ActiveMQ是Apache软件基金会下的一个开源消息队列系统,提供了高效、可靠的消息传递服务。在生产...
首先,文档的标题"Apache ActiveMQ Artemis.pdf"指出了文档的核心内容是关于ActiveMQ Artemis框架的编程指南。描述中提到消息队列在服务器编程中的重要性,以及ActiveMQ Artemis作为其中一种开源消息队列的选择。...
本报告详细阐述了使用JMeter对ActiveMQ进行性能测试的过程和结果,旨在评估ActiveMQ在JMS(Java消息服务)环境下的性能表现。JMeter作为一个强大的负载和性能测试工具,被广泛用于测试各种应用程序,包括消息中间件...
接下来是关于ActiveMQ的配置说明。用户和密码的配置通常在`conf/users.properties`文件中进行,例如添加或修改用户账号。在这个例子中,我们看到了一个名为bpf.mq的连接配置,其URL包含了连接参数,如主机地址、端口...
Apache ActiveMQ是开源的、基于Java消息服务(JMS)的Message Broker,它允许应用程序通过消息传递进行异步通信。ActiveMQ客户端库是用于与ActiveMQ服务器交互的接口,允许开发者在他们的应用中发送和接收消息。这个...
Apache ActiveMQ是业界广泛使用的开源消息中间件,尤其在Linux环境下表现出色。它基于Java语言开发,遵循Apache软件基金会的许可证,并且实现了多种消息传递协议,包括OpenWire、STOMP、AMQP和XMPP等。在Linux系统上...
Apache ActiveMQ是开源的、基于Java消息服务(JMS)的应用服务器,它是Apache软件基金会的一部分。这个名为"apache-activemq-5.17.3"的压缩包包含了ActiveMQ的5.17.3版本,这是一个稳定且功能丰富的发布版本。在深入...
Apache ActiveMQ是开源社区中最流行的Java消息代理,也是企业级消息中间件(Message Broker)的首选之一。在最新的稳定版5.15.0中,它提供了可靠的消息传递功能,适用于分布式应用程序之间的通信,实现了异步处理、...
### ActiveMQ-CPP 开发手册知识点详述 #### 一、引言 - **编写目的**:本手册旨在帮助开发者快速掌握 CMS (C++ Messaging Service) 的使用方法,提高 C++ 开发者在消息传递系统方面的开发效率,并作为 CMS 开发的...
ActiveMQ是Apache软件基金会开发的一款开源消息中间件,它遵循开放消息传递标准(JMS,Java Message Service),用于在分布式系统中实现可靠的消息传递。在本文中,我们将深入探讨ActiveMQ v6.0.1的核心特性、应用...
本资源提供的内容是关于ActiveMQ的连接池实现,分为两部分:一是作者自己实现的ActiveMQ连接池,二是新版本ActiveMQ自带的连接池。连接池是一种资源管理技术,通过复用已建立的数据库连接或网络连接,减少创建和销毁...
在Linux环境下,Apache ActiveMQ是一个广泛使用的开源消息代理和队列服务器,它是Java Message Service (JMS) 的实现,能够处理大量的并发消息传递。ActiveMQ提供了高可用性、可扩展性和稳定性,使得它成为分布式...
### ActiveMQ高并发处理方案详解 #### 一、引言 在现代分布式系统中,消息队列作为异步通信的核心组件之一,对于提高系统的吞吐量、降低响应时间和实现服务解耦等方面起着至关重要的作用。Apache ActiveMQ作为一款...
### JDK与ActiveMQ版本对应关系 在探讨JDK与ActiveMQ版本对应关系之前,我们首先了解下两者的基本概念。 #### JDK(Java Development Kit) JDK是Java开发工具包的简称,它包含了Java运行环境(JRE)、Java工具、...