Artemis中Address/Queue创建与Journal同步相关问题咨询
问题1:动态创建队列的存储、加载逻辑与无重启自动化方案
- 通过CLI或Web控制台创建的队列属于运行时动态资源,不会修改静态配置文件broker.xml,所有动态创建的地址、队列、绑定关系默认都会持久化存储在
bindings journal中。 - Broker启动时会同时加载两类配置:优先加载broker.xml中预置的静态地址/队列配置,之后再加载bindings journal中存储的动态创建的资源,两类配置合并生效,不会互相覆盖。
- 无需重启服务的自动化队列创建最佳方案:
- 优先调用Artemis原生管理API(JMX接口或HTTP REST管理接口)执行创建操作,接口调用完成后资源实时生效,无需重启
- 批量操作场景可将队列创建逻辑封装为CLI命令脚本执行,CLI底层同样调用管理API实现,也支持无重启生效
- 需确保broker.xml中
<persist-bindings>配置为true(默认开启),才能保证动态创建的队列在Broker重启后依然保留
问题2:网络复制模式主从集群的同步范围
- 网络复制模式的主从集群中,在主节点创建的持久化队列会自动同步到从节点。
- Journal同步范围同时包含
bindings journal(存储地址、队列、绑定等元数据)与消息journal(存储普通持久化消息),除此之外,Paging目录(分页消息)、Bindings目录、Journal目录、Large messages目录(大消息)下的所有持久化数据都会通过网络复制同步到从节点,保证主从节点数据完全一致。 - 若创建队列时指定了
durable=false,这类临时队列不会写入bindings journal,也不会同步到从节点。
内容的提问来源于stack exchange,提问作者SriVani B
相关产品推荐
相关产品推荐

