`

ActiveMQ所能承载的主题/队列数测试

 
阅读更多

考虑这么一个场景:用监控服务器监控某设备,设备的数量相当庞大,每隔一段时间监控服务器就会把这些设备的最新状态信息投递到消息队列中,浏览器使用ActiveMQ的Ajax技术通过订阅来感兴趣的状态信息。
问题是设备太多了,如果让浏览器接受处理所有的消息显然是不合适的,网络带宽,JavaScript的执行速度都受限。所以要有选择地接收消息。
JMS消息格式中可以加入自定义的消息头,然后通过选择器就可以过滤消息(SQL92格式),但是在Web环境下,ActiveMQ 5.4的REST连接器现在已经支持选择器了,但是Ajax连接器仍旧没有(就在两天前刚加上了一个测试的Patch,NND!)。
所以当前稳妥的做法还是:一个设备一个主题,例如“device.1”“device.2”…接下来的问题就是ActiveMQ最大能开多少主题/队列。经过测试,默认配置,一千多个主题的时候ActiveMQ就会出现“java.lang.OutOfMemoryError: unable to create new native thread”的异常,上网查找,原来ActiveMQ默认配置下单个主题/队列是在单独的线程中处理的,需要修改ActiveMQ的启动脚本,例如Windows下面的activemq.bat,找到“-Dorg.apache.activemq.UseDedicatedTaskRunner=true”,改成“false”,这样就解决问题了。另外“-Xmx512M”酌情调大些。
实测10000个队列内存占用约1G。
当然这终究不是完美的解决方案,希望ActiveMQ能快点完善Ajax的选择器,呵呵。
题外话,如果不需要消息持久化的话,把activemq.xml中的“<persistenceAdapter>…”注释掉即可。

参考:
http://activemq.apache.org/rest.html#REST-Consumingwithselectors
https://issues.apache.org/activemq/browse/AMQ-2874
http://old.nabble.com/how-many-topics-can-I-create-in-a-broker-before-getting-OutOfMemoryError%3A-Java-heap-space-td17905477.html
http://old.nabble.com/Large-number-of-queues-%28HowTo%29-td23602928.html

分享到:
评论

相关推荐

    ActiveMQ 教学视频/教程 /附带笔记等资源

    在压缩包中的案例文档可能包含如何设置和配置ActiveMQ,如何创建和管理消息队列和主题,以及如何在实际项目中使用ActiveMQ的示例代码。 5. **教学视频和笔记**: 视频教程将通过视觉方式详细解释ActiveMQ的工作...

    Jmeter测试ActiveMQ性能报告

    JMS架构中,生产者通过JMeter发送消息到ActiveMQ,而消费者从队列或主题中接收消息。此测试涵盖了发布/订阅模型和点对点模型。 2.3 软硬件环境 硬件配置包括服务器的CPU、内存和磁盘性能,软件环境包括操作系统、...

    使用WebSocket协议接收ActiveMQ消息

    ActiveMQ是Apache软件基金会开发的消息队列产品,它遵循开放标准,如JMS(Java Message Service)和AMQP(Advanced Message Queuing Protocol),提供跨语言的API和协议支持,可以处理各种消息传递模式,如点对点、...

    linux 下apache-activemq.zip

    wget http://apache.mirrors.ionfish.org/activemq/5.x/apache-activemq-5.x.x-bin.zip ``` 解压文件: ``` unzip apache-activemq-5.x.x-bin.zip ``` 将解压后的目录移动到`/opt`或自定义的目录: ``` ...

    38 3 ActiveMQ RabbitMQ RokcetMQ Kafka实战 消息队列中间件视频教程

    ActiveMQ RabbitMQ RokcetMQ Kafka实战 消息队列中间件视频教程

    spring 整合activemq实现自定义动态消息队列

    并没有根据需求进行动态生成主题和队列。本文档参考了纯粹的activemq java代码和百度上的demo,很简洁的实现了动态消息队列的生成和获取,但是没有自定义监听(当前项目不需要),本文档只有功能实现类 即业务层。若...

    ActiveMQ消息队列主题订阅Spring整合

    ActiveMQ中的生产者(Producer)发送消息到队列或主题(Topic),而消费者(Consumer)则从这些队列或主题中接收消息。队列遵循FIFO(先进先出)原则,每个消息只能被一个消费者接收;主题则支持多播,多个订阅者...

    7道消息队列ActiveMQ面试题!

    ActiveMQ是一款非常流行的开源消息队列中间件,它实现了JMS(Java Message Service,Java消息服务)1.1规范,面向消息的中间件(Message Oriented Middleware,MOM)是指利用高效可靠的消息传递机制进行与平台无关的...

    mqttjs(activemq测试工具)

    在测试ActiveMQ时,你可以创建多个客户端实例,模拟不同设备的行为,比如发布不同的消息或者订阅多个主题,以验证ActiveMQ的正确性和性能。同时,ActiveMQ提供了一个Web管理界面,可以实时查看和管理消息队列,便于...

    ActiveMQ RabbitMQ RokcetMQ Kafka实战 消息队列中间件视频教程

    ActiveMQ RabbitMQ RokcetMQ Kafka实战 消息队列中间件视频教程

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

    在IT行业中,消息队列(Message Queue)是一种重要的中间件技术,它允许应用程序之间通过异步通信进行数据交换。在本场景中,我们关注的是如何使用C#编程语言结合ActiveMQ来实现发布/订阅模式的消息传送。ActiveMQ是...

    实验三 消息中间件应用开发:ActiveMQ实现单线程多队列

    【标题】:“实验三 消息中间件应用开发:ActiveMQ实现单线程多队列” 在IT领域,消息中间件是一种重要的软件架构组件,它主要用于应用程序之间的异步通信,提高系统的可扩展性和解耦性。本实验主要关注的是如何...

    springboot整合activemq案例

    在本文中,我们将深入探讨如何将Spring Boot与ActiveMQ整合,构建一个实用的消息传递系统。首先,我们需要了解Spring Boot和ActiveMQ的基本概念。 Spring Boot是一个快速开发框架,它简化了基于Spring的应用程序...

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

    ActiveMQ 队列消息过期时间设置和自动清除解决方案 ActiveMQ 是一个开源的消息队列系统,用于实现分布式系统之间的异步通信。...通过这些步骤,可以测试 ActiveMQ 队列消息过期时间设置和自动清除的解决方案。

    CentOS安装Activemq图文教程

    将activemq文件夹剪切到/usr目录下,然后打开终端,输入`gedit /usr/activemq/bin/activemq`命令,以打开activemq文件。在文件中添加以下代码: ``` ### BEGIN INIT INFO # Provides: activemq # Required-Start: $...

    Spring整合ActiveMQ实现队列和主题发布订阅通信

    本DEMO将展示如何通过Spring整合ActiveMQ来实现队列(Queue)和主题(Topic)两种不同的通信方式。队列遵循“先进先出”原则,每个消息只有一个消费者;而主题支持多播,允许多个消费者同时接收消息。 首先,你需要...

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

    启动该程序,你的Go应用就能连接到ActiveMQ,订阅并接收消息,同时也能发送消息到指定队列。 通过这种方式,Go语言可以很好地集成到基于ActiveMQ的消息传递系统中。了解Go的并发模型和错误处理机制,以及STOMP协议...

    apache-activemq-5.15.12-bin.tar.gz

    1.解压  ...ACTIVEMQ_HOME=/opt/apache-activemq-5.15.12 PATH=/opt/apache-activemq-5.15.12/bin:$PATH export ACTIVEMQ_HOME PATH 5.activemq的后台默认端口是61616,前台访问端口是8161

    SpringBoot整合ActiveMQ消息队列和双向队列、点对点与发布订阅

    SpringBoot整合ActiveMQ消息队列和双向队列、点对点与发布订阅,可以参考我的博客文章进行学习https://blog.csdn.net/sujin_/article/details/82956386

    JMS+activeMQ 教程

    &lt;a href=http://activemq.apache.org/version-5-getting-started.html &gt;http://activemq.apache.org/version-5-getting-started.html&lt;/a&gt; &lt;a href=http://java.sun....

Global site tag (gtag.js) - Google Analytics