当前位置: 首页 > 知识库问答 >
问题:

用于生成持久文本消息的ActiveMQ性能

陆琦
2023-03-14

根据网页 activemq-性能-模块-用户-手册 中的建议,我尝试过(在配备 Windows 7 操作系统和固态盘驱动器的英特尔 i7 笔记本电脑上)在 ActiveMQ 队列上生成持久消息的性能:

mvn activemq-perf:producer -Dproducer.destName=queue://TEST.FOO -Dproducer.deliveryMode=persistent

针对活动 mq 5.12.1 的默认安装

我得到的性能大约是每秒300-400条消息。在激活性能页面上,我一直在阅读更高的数字:

当在一个机器上运行服务器,在另一个机器上的单独虚拟机中运行单个生产者和消费者线程时,使用单个主题,我们使用2K消息每秒获得大约21-22,000条消息。

另一方面,当消息不持久时,生成器的性能会增长到每秒49000条消息。< code >-dproducer . delivery mode = non persistent

当消息异步发送时。< code >-dproducer . delivery mode = persistent-d factory . usesyncsend = true 我每秒钟收到大约23000条消息。

从我在这里看到的stack overflow-activemq-persistent-performance-on-different-operating-systems来看,在不同的操作系统上运行ActiveMQ是有区别的。

有人能给我一些提示,让我在编写持久activemq消息时有更好的性能吗?

共有1个答案

裴兴学
2023-03-14

发送持久消息的性能与基于磁盘的IO有关,因为消息必须在代理向客户端发出消息发送完成的信号之前写入磁盘。在其他条件相同的情况下,磁盘速度越快,吞吐量就越好。

要解决其中的一些问题,您可以在事务批处理中发送持久消息,这样发送本身就完成了,并且同步点减少到事务边界。

根据文本消息的大小,您还可以通过使用压缩获得一些性能,这可以通过ActiveMQConnectionFactory中的选项打开。

 类似资料:
  • “ActiveMQ中Blob消息传递的持久性”? "我们不能使用数据库(KahaDB)来Blob消息URL吗?" “我们可以像在远程activemq服务器中一样在嵌入式代理中创建文件服务器吗?”

  • 在我们的业务需求中,我们需要将更新传输到分布在全国各地的数千个客户端。问题是,许多这些客户端使用3G网络连接到我们,因此,发生了许多连接/断开连接...我们需要提供的更新是诸如“企业A不能再兑现”或“企业B能够再次兑现”之类的东西,我们正在考虑使用ActiveMQ持久主题来提供这些更新。我的理解是,一旦客户端连接到持久主题,即使他断开连接,每当他回来时,他都会在脱机时收到发送到该主题的消息。最大的

  • 我有疑问一条消息是否会在主题中持续存在,我从这篇文章中得到了大部分答案。 但是这种情况如何呢?假设代理重新开始,一些发布者已经开始向一个主题发送消息,现在将来一些持久订户将与该主题连接,但是当前没有持久订户,因此在代理重新开始的情况下,发布者到目前为止向该主题发送的所有消息都将丢失。 我尝试了上述情况,确实所有的信息都丢失了。此外,我尝试了这种情况——我有一个活跃的持久订阅者,它能够将消息推送到主

  • 我有一个在Payara 4.1.2.173上运行的应用程序。应用程序应该发送和接收JMS消息,因此,我使用Apache ActiveMQ Artemis。我选择ActiveMQ Artemis是因为ActiveMQ只支持JMS1.1,而ActiveMQ Artemis支持JMS2.0。 但是我觉得奇怪的是,ActiveMQ Artemis没有提供资源适配器(.rar文件),而ActiveMQ却提供

  • 我们开发的NMS产品已经被几家电信运营商部署。我们的应用程序(使用ActiveMQ)将向故障队列发布故障通知,消息被设置为持久性。这些消息由第三方JMS客户机使用。并不是所有的客户都有通知客户端来使用事件(有些部署没有任何订阅)。问题是,如果队列从来没有订阅服务器连接到队列,ActiveMQ是否会持久化消息?。