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

ActiveMQ performance for producing persistent text messages

按照网页上的提示 activemq-performance-module-users-manual 我试过(在配备 Windows 7 OS 和 SSD 驱动器的 Intel i7 笔记本电脑上)在 ActiveMQ 队列上生成持久消息的性能:

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

针对默认安装的activemq 5.12.1

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

When running the server on one box and a single producer and consumer thread in separate VMs on the other box, using a single topic we got around 21-22,000 messages/second using 1-2K messages.

另一方面,当消息不是持久化时,生产者的性能增长到每秒 49000 条消息。 -Dproducer.deliveryMode=nonpersistent

当消息异步发送时。 -Dproducer.deliveryMode=persistent -Dfactory.useAsyncSend=true 我每秒收到大约 23000 条消息。

从我在这里看到的情况来看 Whosebug-activemq-persistent-performance-on-different-operatiing-systems 当 运行 activemq 在不同的 OS.

上时会有所不同

有人可以给我一些提示,以提高编写持久性 activemq 消息的性能吗?

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

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

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