除主动关闭ServiceBusSenderClient外,sendMessage()还会抛出IllegalStateException吗?
除了主动调用close()方法销毁ServiceBusSenderClient的场景外,sendMessage()方法还会在以下两种场景抛出IllegalStateException:
- 客户端未完成初始化就被调用:如果采用异步方式构建
ServiceBusSenderClient,实例还没完成初始化流程就调用发送接口,就会触发该异常。 - 连接完全失效被SDK内部销毁:当客户端和Azure Service Bus服务端的连接长时间不可用,且SDK内置的重试机制全部耗尽后,会主动销毁当前会话连接,此时再调用发送方法也会抛出该异常。
你现有的异常捕获逻辑已经可以覆盖所有场景,即使是非主动关闭触发的异常,你当前打印的「Sender client is disposed.」日志也和实际故障根因匹配,不需要额外调整捕获逻辑。如果想要后续排查时能快速区分是主动关闭还是内部异常触发的销毁,可以把异常栈也一并打印,将日志代码修改为log.error("Sender client is disposed.", e);即可。
内容的提问来源于stack exchange,提问作者Binod Karunanayake
相关产品推荐
相关产品推荐

