在 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
中的队列与绑定日志中的队列之间没有区别。它们的功能应该完全相同。
我通过这个 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
中的队列与绑定日志中的队列之间没有区别。它们的功能应该完全相同。