请求提供设置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
相关产品推荐
相关产品推荐

