ActiveMQ-创建临时队列的费用

时间:2018-08-09 23:07:07

标签: performance activemq

我想使用ActiveMQ中动态生成的队列来序列化由多个源生成的事件的处理。

我需要这样做以确保同一记录上的更新不会冲突。

问题在于,对于与同一记录相关的每组更新,我都需要一个不同的队列。

理论上可能有数百万条记录,当然,我不想创建数百万个队列。

理想情况下,应在必要时创建队列,并在所有更新完成后销毁。

引发更新的事件是异步的,但仍是相关的。我知道发生某事时,将同时触发多个事件。 实际上,这是一小段异步但相关的更新。 一段时间后,可以删除生成的队列。

我知道创建和删除队列会产生一定的成本,但我是否正确地认为,生成和删除这些队列的成本所占的速率在峰值期间不会高于每秒几个队列,不会造成性能问题吗?

1 个答案:

答案 0 :(得分:1)

临时队列的成本很高,但通常不会很高,除非您在应用服务器和代理之间的网络延迟很高,并且应该没事。

临时队列有一些限制。例如,一旦创建的连接断开,它们将被删除。因此,如果您希望作业在系统重新启动后继续进行,请不要依赖临时队列。我建议不要以每秒多个速率动态创建常规队列。该系统不是为此设计的。

通常,在处理一组相关消息时要做的是利用message groups。这样,您可以使用不依赖于生产者/临时队列创建者连接的单个队列。