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

请求提供设置Google Pub/Sub订阅永不过期的Java代码

设置Google Pub/Sub订阅为永不过期的Java实现

根据Google Pub/Sub官方文档,我们可将订阅的过期周期配置为永不过期,具体方式是把订阅的expirationPolicy中的ttl(存活时间)设为0秒,以此标记该订阅不会自动过期。

以下是修改后的完整代码,已添加永不过期的配置:

public void createSubscriptionForTheTopic(String appUid, String topicName, String pushEndpoint) throws IOException {
    ...

    SubscriptionAdminSettings subscriptionAdminSettings = ...;
    try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create(subscriptionAdminSettings)) {
        String projectName = ....;
        String subscriptionNameString = ...;
        ProjectSubscriptionName subscriptionName = ProjectSubscriptionName.of(...);
        PushConfig pushConfig = PushConfig
                .newBuilder()
                .setPushEndpoint(pushEndpoint)
                .build();
        RetryPolicy.Builder retryPolicy = RetryPolicy.newBuilder()
                .setMinimumBackoff(Duration.newBuilder().setSeconds(10).build())
                .setMaximumBackoff(Duration.newBuilder().setSeconds(600).build());
        // 配置永不过期的过期策略:TTL设为0秒
        ExpirationPolicy expirationPolicy = ExpirationPolicy.newBuilder()
                .setTtl(Duration.newBuilder().setSeconds(0).build())
                .build();
        Subscription request = Subscription.newBuilder()
                .setName(subscriptionName.toString())
                .setTopic(topicName)
                .setPushConfig(pushConfig)
                .setAckDeadlineSeconds(10)
                .setRetryPolicy(retryPolicy)
                .setExpirationPolicy(expirationPolicy) // 添加永不过期配置
                .build();

        try {
            subscriptionAdminClient.deleteSubscription(subscriptionName.toString());
        } catch (ApiException e) {
            LOGGER.info("Subscription does not exist {}", subscriptionName, e);
        }

        Subscription subscription = subscriptionAdminClient.createSubscription(request);
        LOGGER.info("Created subscription {}", subscription.getName());
    }
}

关键说明

  • 当ExpirationPolicy的ttl设为0秒时,Pub/Sub会将该订阅标记为永不过期,不会因长时间未使用自动删除。
  • 若不配置该参数,订阅会采用默认过期周期(通常为31天)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 22:37:35