You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache ActiveMQ Artemis队列名称允许使用哪些字符?

Apache ActiveMQ Artemis 队列名称命名规则说明

合法字符范围

默认配置下,Apache ActiveMQ Artemis 支持所有合法UTF-8编码的可打印字符作为队列名称,没有强制限定只能使用ASCII字符集,中文、带变音符号的非英文拉丁字符等多语言字符,只要编码合规都可以正常创建、使用队列。

明确禁用与使用限制

  • 禁止使用空字符串作为队列名,队列名称长度不能为0。
  • 绝对禁止在队列名中包含空字符(即ASCII码为0x00的\0字符),该字符会被内核判定为字符串终止标记,直接导致地址路由、队列匹配逻辑异常。
  • 若Broker开启了通配符路由功能(默认状态为开启),不建议在业务队列名中直接使用默认保留的通配符字符:.(层级分隔符)、*(单层任意字符匹配符)、#(多层任意字符匹配符)。如果业务场景必须在名称中使用上述字符,可以提前在broker.xml配置文件中修改通配符相关配置,替换保留字符,避免路由逻辑误判。
  • 如果使用AMQP、MQTT、STOMP、OpenWire等兼容协议对接Broker,需要同时遵守对应协议本身的资源命名限制,比如部分MQTT客户端实现不支持队列名中出现/之外的特殊层级字符,跨协议使用队列前建议提前做兼容性验证。
  • 不建议在队列名称的首尾位置使用空白字符(包括空格、制表符、换行符等),大部分管理控制台、命令行工具会自动裁剪首尾空白字符,很容易出现队列查找、操作失败的问题。

推荐命名规范

  • 优先使用带明确业务语义的层级化命名,用.作为层级分隔符,例如order.pay.success、user.register.notice,这类命名格式方便后续通过通配符做批量路由配置、权限分配、监控统计。
  • 没有特殊需求的话尽量使用纯ASCII字符命名,虽然内核原生支持多语言字符,但部分老旧客户端、第三方监控工具可能存在UTF-8解析兼容问题,纯ASCII命名可以大幅降低跨组件对接的异常概率。
  • 队列名称长度建议控制在255字符以内,过长的名称会增加路由匹配、日志存储、管理界面渲染的额外开销,部分持久化存储实现对过长的资源键值也存在隐式长度限制。
  • 不要使用activemq.作为自定义队列名的前缀,该前缀是Broker内部管理地址、内置通知队列的保留前缀,重名会导致内核内置功能运行异常。

如果你在Broker配置中自定义了安全拦截策略、地址路由规则、队列自动创建匹配规则,需要额外检查规则中是否设置了自定义的名称匹配限制,自定义正则拦截规则的优先级高于默认命名规则。

内容的提问来源于stack exchange,提问作者Bart Weber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 21:57:23