在 broker.xml 文件中写入的队列与通过 JMX 创建的队列之间的区别

Difference between queues written in a broker.xml file and created through the JMX

我通过这个 JMX 操作创建了一个队列:

org.apache.activemq.artemis:broker="brokerNew"::createQueue(java.lang.String,java.lang.String,java.lang.String)

而且我认为它会被写入 addresses 部分的 broker.xml。但是,它保存在 data 目录中的一些文件中。

写在 broker.xml 文件中的队列和通过 JMX 创建的队列有什么区别?

在运行时创建的持久队列(例如通过 JMX 管理操作或由代理自动创建)不会 添加到 broker.xml。为每个创建的队列更新 broker.xml 可能会严重影响代理性能。经纪人可以同时为成千上万的客户提供服务,几乎可以不断地自动创建地址和队列。必须以线程安全的方式更新可能很大的 XML 文件将是一个重大瓶颈。

相反,在运行时创建的持久队列存储在“绑定”日志中,该日志使用与高性能消息日志相同的技术。当代理重新启动时,绑定日志中的所有队列都会重新加载,就像在 broker.xml.

中配置的队列一样

除了队列的物理定义存储位置之外,broker.xml 中的队列与绑定日志中的队列之间没有区别。它们的功能应该完全相同。