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

如何用Qpid Proton Java连接Azure Service Bus?发送消息报错求助

解决Azure Service Bus发送消息时"No address provided for Connection"错误

看起来你遇到的问题核心是Proton客户端没能正确识别连接或目标地址——哪怕你已经修改了主机名,还是因为地址配置逻辑不对触发了这个异常。我来帮你一步步排查和解决:

1. 修正连接URL的格式

你当前用的amqps://XXX:XXX@abcd.servicebus.windows.net/queueName把凭证、命名空间和队列名混在了一起,但Qpid Proton-J这类客户端通常要求连接URL只到命名空间级别,队列地址单独指定:

  • 正确的连接URL:amqps://abcd.servicebus.windows.net
  • 队列地址单独设置为queueName(部分版本可能需要写/queueName,可以两种都试试)

2. 检查代码中的地址配置逻辑

很多时候错误出在代码里没把队列地址传给发送者,而是错误地拼在了连接URL里。给你一个标准的正确代码片段参考:

// 仅包含命名空间的连接地址
String connectionUrl = "amqps://abcd.servicebus.windows.net";
// SAS凭证(从Azure门户共享访问策略中获取)
String sasUsername = "XXX";
String sasPassword = "XXX";
// 目标队列的名称
String queueName = "queueName";

// 初始化连接工厂
ConnectionFactory factory = new ConnectionFactory();
factory.setHost(connectionUrl);
factory.setUsername(sasUsername);
factory.setPassword(sasPassword);

// 创建连接、会话并发送消息
try (Connection connection = factory.createConnection();
     Session session = connection.createSession();
     Sender sender = session.createSender(queueName)) {
    connection.open();
    // 构建并发送消息
    Message message = Message.Factory.create();
    message.setBody(new AmqpValue("测试Azure Service Bus消息"));
    sender.send(message);
    System.out.println("消息发送成功");
} catch (Exception e) {
    e.printStackTrace();
}

3. 验证SAS凭证与权限

  • 确认你的SAS用户名(一般是RootManageSharedAccessKey)和密钥没有拼写错误,也没有多余空格或转义问题
  • 检查该SAS策略是否勾选了Send权限,没有发送权限也会间接触发地址相关的异常

4. 升级客户端版本

如果你的Qpid Proton-J版本较旧,可能对带路径的连接URL支持不完善。建议升级到最新稳定版,比如Maven依赖可以这么配置:

<dependency>
    <groupId>org.apache.qpid</groupId>
    <artifactId>qpid-proton-j</artifactId>
    <version>0.33.8</version>
</dependency>

5. 确认队列存在

最后再检查一遍:你指定的queueName确实存在于目标Service Bus命名空间中,没有拼写错误或者大小写不一致的问题。

按照这些步骤调整后,应该能解决这个"No address provided"的错误。如果还是不行,可以把你的Send类代码片段贴出来,我帮你进一步定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:42:14