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

ServiceBusAdminClient的listRules方法无法返回订阅下全部规则

Service Bus Java SDK 7.5.2 listRules接口无法返回全量规则问题

问题背景

使用Java版Service Bus管理API库(版本7.5.2)管理Service Bus命名空间中的队列和主题资源时遇到运行异常。
涉及的业务逻辑为:检查主题下的订阅配置是否为最新版本,若配置过期则执行更新操作。
操作流程第一步是针对指定主题和订阅调用listRules方法获取规则列表,核心代码如下:

PagedIterable<RuleProperties> rulesIter = serviceBusAdminClient.listRules(topicDef.getName(), subscriptionDef.getName());

异常现象

  • listRules方法始终仅返回1条规则,但Azure门户中可查看到对应订阅下实际配置了2个筛选规则,接口返回结果存在缺失。
  • 后续业务代码会判定未被返回的规则为缺失状态,尝试创建该“缺失”规则时会直接抛出规则已存在的异常,导致整个配置校验更新流程失败。

最初使用stream()方法批量获取所有规则名称,实现代码如下:

listRulesResult.stream().map(RuleProperties::getName).collect(Collectors.toList());

该实现始终仅返回1条记录。后续尝试更换为streamByPage、iterateByPage方法做分页遍历,返回结果没有任何变化。
补充验证情况:同一份客户端代码调用列出队列、列出主题的接口时,均可正常返回全量多条记录,仅获取订阅下规则的接口无法返回全量数据,而Service Bus订阅本身原生支持配置多条规则。

排查进展更新

更新1:单独调用getRule方法查询那条未被listRules返回的已存在规则时,可以正常获取到该规则的完整配置信息。

更新2:编写最小化测试脚手架复现问题、准备提交官方issue时,精简测试环境中listRules方法可按预期返回全量规则。目前推测是应用classpath下的依赖冲突或特定配置影响了SDK方法的正常行为,后续会进一步定位并同步根因,当前已确认精简测试环境下该功能运行正常,原业务应用环境存在异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 03:01:25