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

如何在Spring Boot 2.5.0(JDK17)中用Java代码创建Azure Service Bus主题订阅并列出已有订阅

Azure Service Bus 订阅管理的Java实现(Spring Boot 2.5.0)

推荐依赖

针对你的Spring Boot 2.5.0 + JDK17环境,推荐使用Azure Spring Cloud Starter for Service Bus,它已整合底层Azure Service Bus客户端库,能很好适配Spring Boot生态。如果需要更灵活调用管理API,也可以直接引入底层客户端库(starter已包含,无需重复引入)。

Maven依赖配置:

<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>azure-spring-cloud-starter-servicebus</artifactId>
    <version>3.10.0</version> <!-- 与Spring Boot 2.5.0兼容 -->
</dependency>

核心代码实现

使用ServiceBusAdministrationClient可完成订阅的创建与查询操作,以下是封装好的管理类:

首先在application.properties中配置Service Bus连接字符串:

azure.servicebus.connection-string=Endpoint=sb://<你的命名空间>.servicebus.windows.net/;SharedAccessKeyName=<密钥名称>;SharedAccessKey=<密钥值>

然后编写管理类:

import com.azure.messaging.servicebus.administration.ServiceBusAdministrationClient;
import com.azure.messaging.servicebus.administration.ServiceBusAdministrationClientBuilder;
import com.azure.messaging.servicebus.administration.models.CreateSubscriptionOptions;
import com.azure.messaging.servicebus.administration.models.SubscriptionProperties;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
public class ServiceBusSubscriptionManager {

    private final ServiceBusAdministrationClient adminClient;

    public ServiceBusSubscriptionManager(@Value("${azure.servicebus.connection-string}") String connectionString) {
        this.adminClient = new ServiceBusAdministrationClientBuilder()
                .connectionString(connectionString)
                .buildClient();
    }

    // 创建主题订阅,支持配置订阅属性
    public void createTopicSubscription(String topicName, String subscriptionName) {
        CreateSubscriptionOptions options = new CreateSubscriptionOptions();
        // 可选配置:设置消息默认过期时间为1小时
        options.setDefaultMessageTimeToLive(java.time.Duration.ofHours(1));

        if (!adminClient.doesSubscriptionExist(topicName, subscriptionName)) {
            adminClient.createSubscription(topicName, subscriptionName, options);
            System.out.printf("订阅 %s 已成功创建在主题 %s 下%n", subscriptionName, topicName);
        } else {
            System.out.printf("主题 %s 下已存在订阅 %s%n", topicName, subscriptionName);
        }
    }

    // 列出指定主题下的所有订阅
    public List<SubscriptionProperties> listTopicSubscriptions(String topicName) {
        return adminClient.listSubscriptions(topicName).stream().toList();
    }

    // 示例执行方法
    public void runDemo() {
        String targetTopic = "your-topic-name";
        String newSubName = "new-demo-subscription";

        // 创建订阅
        createTopicSubscription(targetTopic, newSubName);

        // 查询并打印所有订阅
        List<SubscriptionProperties> subscriptions = listTopicSubscriptions(targetTopic);
        System.out.printf("主题 %s 下的所有订阅:%n", targetTopic);
        subscriptions.forEach(sub -> System.out.println("- " + sub.getSubscriptionName()));
    }
}

关键说明

  • ServiceBusAdministrationClient是Azure官方提供的管理客户端,专门用于Service Bus资源的创建、查询、删除等管理操作,区别于负责消息收发的ServiceBusSenderClient/ServiceBusReceiverClient。
  • 创建订阅时可通过CreateSubscriptionOptions配置更多特性,比如会话支持、死信规则、自动删除过期订阅等,根据业务需求调整即可。
  • 调用listSubscriptions会返回订阅的完整属性,包括创建时间、过期策略、过滤规则等,可按需提取所需信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 14:40:08