临时队列的性能和限制



我想要几百个客户端应用程序在中间件的一个实例上创建和使用临时队列。

在性能方面是否存在一些缺点——为什么我不应该使用临时队列?是否存在限制,例如每个HornetQ实例可以创建多少个临时队列?

在最近的一个项目中,我们在SonicMQ上从使用临时队列切换到使用静态队列。我们已经通过JMS实现了同步服务调用,其中每个调用的响应都将在消费者创建的专用临时队列上传递。在压力测试过程中,我们注意到,在推动解决方案的最大吞吐量时,临时队列创建和分配资源的开销开始发挥越来越大的作用。

我们更改了解决方案,使其在使用者和提供者之间使用静态队列,并使用选择器在JMSCorrelationID上进行关联。在我们的案例中,这导致了更好的吞吐量。如果您计划每次(重新)创建客户端应用程序将使用的临时队列,那么当需要更高的吞吐率时,这可能会开始影响性能。

请注意,当队列中的消息数量增加时,选择器性能也会开始发挥作用。在我们的案例中,该解决方案旨在尽快传递消息,而不是在消费者和提供者之间扮演(存储)缓冲区的角色。因此,队列中的消息数量总是很低。

相关内容

  • 没有找到相关文章

最新更新