1) 连接数对性能影响较小,主要影响因素为 io,在每个连接发送或者接收频率较低
的情况下,amq可以支持更多的连接数,另外,每新增一个连接,amq需要增加
两个线程处理。 nio协议在5.2中还不够稳定,对减低系统负载的作用也不够明显。
2) 超过10K的大消息对吞吐量和服务器 load都影响很大,但是对大消息可以使用
amq的流协议处理,这次没有测试。对我们系统中的消息基本都不会超过 2k,这
种情况下性能差别不是很大。
3) 数据存储配置,jdbc 的性能远比 kaha 低,jdbc 单节点流量大概是 500~600 条,
kaha单节点处理可达4000~5000,相差一个数量级,但是jdbc的稳定性很好,发
送和接收非常稳定,kaha只因为文件存储的原因,当文件存储 hash bin扩展或者
文件碎片管理的时候经常会全部阻塞,导致短时间(1s~几秒)不可访问。
4) 生产端流量控制还是有必要的,避免高峰时阻塞消费。(?)
5) 高 级 特 性 ( Master/Slave,Networkconnector,Virtual Destination,Composite
Destination)等 5.2 都还不够稳定,目前建议部署为客户端负载均衡,类似
memcached的部署方式,这样也可以屏蔽mq,做到mq无关,另外这样性能也最
好,基本可以做到线形扩充。
6) 目前主要问题为消息重复消费问题,需要定位问题代码所在。具体表现为消息丢失
(发现过1、 2次),消费数多于发送数,消息可能有重复消费。(注:这个问题提
交到 amq 后,答复在 5.3 已经解决,在 5.2 上关闭 cache 后也可以避免这个,
useCache=false,经过测试,5.2上使用这个选项后问题解决,性能有所下降但是
并不严重,在10%以内)。
7) 每一个producer或consumer连接,broker会产生2个线程来提供服务,看来过多的连接会加重broker的线程上下文切换的成本。
8) 打开useAsyncSend=true功能,能提供带来10%-20%的发送速度提升,在IO频繁
操作的情况,可能会更明显,但如果broker出现当机时,极有可能出现消息丢失。
9) 64位的JDK和新的JVM配置参数对整体性能提供有一定的帮助。
分享到:
相关推荐
在实际应用中,开发者需要注意WebSocket的安全性,比如使用WSS(WebSocket over SSL/TLS)来确保数据传输的安全,以及对连接的管理和错误处理,确保系统的稳定性和可靠性。同时,为了优化性能,可能还需要考虑连接池...
在"spring配置activemq详解"这个主题中,我们将探讨如何在Spring项目中配置和使用ActiveMQ。以下是对这个主题的详细说明: 1. **配置ActiveMQ**: - 首先,我们需要在项目中引入ActiveMQ的相关依赖,这通常通过在`...
在JDBC Master/Slave模式下,ActiveMQ通过使用外部数据库存储持久消息,从而可以在多个ActiveMQ实例之间同步消息状态,保证数据的一致性。这种模式下,通常会有一个Master节点和一个或多个Slave节点。Master节点负责...
在本文中,我们将深入探讨如何在SpringBoot中使用JMS(Java Message Service)与ActiveMQ进行通信,包括两种主要的消息传输模式:点对点(生产者/消费者模式)和发布/订阅模式。 首先,你需要在本地安装并运行...
遵循这些条款,开发者可以在自己的项目中自由地使用、修改和分发这个库,但需要注意尊重原始作者的版权和知识产权。 总结来说,`activemq-transport-jabber-1.3.jar`是连接ActiveMQ与Jabber/XMPP网络的桥梁,它扩展...
本文将详细介绍如何在Windows环境下,使用Visual Studio 2008对ActiveMQ-CPP进行编译,并进行基础的开发配置。 一、编译步骤 1. 编译cppunit: 首先,下载cppunit-1.12.1.tar.gz,解压缩后使用VS2008打开vc6.0...
1. **配置**:在ActiveMQ服务器配置文件(如`activemq.xml`)中,需要指定使用XStream传输协议,以便激活相关组件。 2. **安全性**:由于XStream涉及对象到XML的转换,需要注意潜在的安全风险,如反序列化攻击。...
Apache ActiveMQ 是业界广泛使用的开源消息代理,遵循开放消息中间件(OMM)规范,提供高度可扩展的、高性能的消息传递服务。ActiveMQ 的核心特性包括支持多种协议(如 OpenWire、AMQP、STOMP 等)、多语言客户端、...
在C#和WinForm环境中使用ActiveMQ,开发者需要引用ActiveMQ的.NET客户端库。这个库提供了一组API,使得开发者可以方便地创建生产者(Producer)和消费者(Consumer),并管理消息的发送和接收。在聊天系统中,每个...
spring-int-poc Spring Integration 项目描述了使用 jms 的异步请求/回复。 该项目试图解决的主要挑战是通过调用 TCP ... 请注意,客户端和服务器端都有基于 xml 和 @Configuration 的实例化方法。 此应用程序中有 3
值得注意的是,Camel是设计来与Spring框架配合使用的。Spring提供了依赖注入和声明式事务管理等企业级功能,这使得Camel应用能够利用这些功能。例如,开发者可以通过Spring管理Camel路由的生命周期,使用Spring的...
2. Apache.NMS(*** Messaging API): Apache.NMS是ActiveMQ官方提供的.NET客户端API,允许使用.NET语言(如C#)与ActiveMQ进行通讯。NMS是用于.NET的JMS API的实现,使得.NET开发者可以方便地利用JMS提供的特性。 ...
在处理依赖包方面,Apache Camel 2.1.0可能会有其自身的依赖结构,包括对其他Apache项目的依赖,例如Apache ActiveMQ(消息代理)、Apache CXF(Web服务框架)等。开发者在使用时需要确保正确地管理和解决这些依赖,...
同时需要注意的是,文档中提到的一些技术或产品属于各自所有者的商标,使用时应遵守相应的版权和商标规定。 #### 六、结语 通过对 **Talend ESB 开发指南** 的深入学习和实践,开发者可以更好地掌握如何构建高效、...
值得注意的是,在实际使用中,可能会遇到一些问题,例如在生成的Command代码中,`use App\Commands\Command`可能无法找到,这时需要将其改为`use Illuminate\Console\Command`,以解决命名空间引用错误。 通过以上...
对于Apache Camel这样的项目,通常会依赖于其他Apache项目的组件,例如Apache CXF、Apache ActiveMQ等。 总的来说,Apache Camel 1.6.1源代码包为开发者提供了深入理解其内部机制和定制功能的机会,同时也允许他们...
Java远程技术是Java编程语言中用于实现远程通信的一系列技术手段,主要用于在不同计算机或不同进程间进行方法调用。...由于远程通信可能会引入性能问题和安全问题,因此在实施过程中需要特别注意传输的安全性和效率。