Create Google Pub/Sub subscription with expiration period as never

146 Views Asked by At

As per documentation, we can set Google Pub/Sub subscription with the expiration period as 'never expire'

Could you please share the Java code for the same? I have currently the following code

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());
        Subscription request = Subscription.newBuilder()
                .setName(subscriptionName.toString())
                .setTopic(topicName)
                .setPushConfig(pushConfig)
                .setAckDeadlineSeconds(10)
                .setRetryPolicy(retryPolicy).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());
    }
}

Link: https://cloud.google.com/pubsub/docs/subscription-properties#expiration_period

1

There are 1 best solutions below

2
On BEST ANSWER

You would add .setExpirationPolicy(ExpirationPolicy.getDefaultInstance()) to the Subscription builder:

import com.google.pubsub.v1.ExpirationPolicy;

...

Subscription request = Subscription.newBuilder()
  .setName(subscriptionName.toString())
  .setTopic(topicName)
  .setPushConfig(pushConfig)
  .setAckDeadlineSeconds(10)
  .setRetryPolicy(retryPolicy)
  .setExpirationPolicy(ExpirationPolicy.getDefaultInstance())
  .build();