Jms 中间件消息传递软件性能低下的影响因素

Jms 中间件消息传递软件性能低下的影响因素,jms,messaging,rabbitmq,middleware,hornetq,Jms,Messaging,Rabbitmq,Middleware,Hornetq,我计划在我的web应用程序中集成消息传递中间件。现在我正在测试不同的消息中间件软件,如RabbitMQ、JMS、HornetQ等。。 该软件提供的示例正在运行,但未达到预期效果。 因此,我想知道哪些因素是提高绩效的原因,我们应该关注这些因素? 开发人员应该注意哪些方面来提高中间件消息传递软件的性能?我是HornetQ的项目负责人,但我会尝试给您一个通用的答案,可以应用于您选择的任何消息系统 我看到的一个常见问题是,人们会问,为什么单个生产商/单个消费者无法提供预期的性能 当您发送消息并要求立即确

我计划在我的web应用程序中集成消息传递中间件。现在我正在测试不同的消息中间件软件,如RabbitMQ、JMS、HornetQ等。。 该软件提供的示例正在运行,但未达到预期效果。
因此,我想知道哪些因素是提高绩效的原因,我们应该关注这些因素?

开发人员应该注意哪些方面来提高中间件消息传递软件的性能?

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

我看到的一个常见问题是,人们会问,为什么单个生产商/单个消费者无法提供预期的性能

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

  • 从客户端到服务器的消息传输
  • 正在磁盘上持久化的消息
  • 服务器通过向客户端发送回调来确认收到消息
同样,当您收到消息时,您也会向服务器确认:

  • ACK从客户端发送到服务器
  • 确认被持久化
  • 服务器发回一个回调,说明回调已实现
如果您需要确认所有的消息发送和mesage确认,您需要等待这些步骤,因为您需要一个硬件来保存磁盘和在网络上发送位

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

有几种方法可以加快单个生产商或单个消费者的速度:

  • 一种是使用事务。因此,在服务器上持久化和网络上的往返时,可以最小化在磁盘上执行的块和同步。(这在任何数据库上实际上都是相同的)

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


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

您可以接受答案,还是讨论您为什么不接受?如果您不接受答案,请向我提供一些信息,说明原因,以便我们可以帮助您。