Reputation: 2605
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
Upvotes: 0
Views: 412
Reputation: 17216
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();
Upvotes: 1