2

我计划在我的 Web 应用程序中集成消息传递中间件。现在,我正在测试不同的消息中间件软件,如 RabbitMQ、JMS、HornetQ 等。该软件提供的示例正在运行,但没有给出预期的结果。
那么,我想知道哪些是提高性能的因素应该引起人们的注意?
开发人员应该注意哪些方面来提高中间件消息传递软件的性能?

4

1 回答 1

1

我是 HornetQ 的项目负责人,但我会尽量给你一个通用的答案,可以应用于你选择的任何消息系统。

我看到的一个常见问题是人们问为什么单个生产者/单个消费者不会给你预期的性能。

当您发送消息并立即要求确认时,您需要等待:

  • 从客户端到服务器的消息传输
  • 保留在磁盘上的消息
  • 服务器通过向客户端发送回调来确认收到消息

同样,当您收到一条消息时,您会向服务器确认:

  • ACK 从客户端发送到服务器
  • ACK 被持久化
  • 服务器发回一个回调,说明回调已实现

如果您需要对所有消息发送和消息确认进行确认,则需要等待这些步骤,因为您有一个硬件涉及持久化磁盘和在网络上发送比特。

消息系统将尝试与许多生产者和消费者一起扩大规模。也就是说,如果许多生产者都应该使用服务器上为所有消费者共享的可用资源。

有一些方法可以加速单个生产者或单个消费者:

  • 一种是使用交易。因此,您可以最大限度地减少在磁盘上执行的块和同步,同时在服务器上持久化并在网络上往返。(这实际上在任何数据库上都是一样的)

  • 另一种方法是使用回调而不是阻塞消费者。(JMS 2 提出了一个类似于 HornetQ 上的 ConfirmationHandler 的回调)。

另外:我认识的大多数供应商都会在他们的文档中有一个性能部分,其中包含对该特定产品的要求和建议。您应该单独查看每个产品

于 2011-09-15T15:01:10.127 回答