in src/main/java/com/googlesource/gerrit/plugins/pubsub/SubscriberProvider.java [105:129]
public void replayMessages(String subscriptionName) {
try (SubscriptionAdminClient subscriptionAdminClient =
SubscriptionAdminClient.create(createSubscriptionAdminSettings())) {
Duration messageRetentionDuration =
subscriptionAdminClient
.getSubscription(
GetSubscriptionRequest.newBuilder().setSubscription(subscriptionName).build())
.getMessageRetentionDuration();
LocalDateTime retentionTime =
LocalDateTime.now().minusSeconds(messageRetentionDuration.getSeconds());
Timestamp retentionTimeEpoch =
Timestamp.newBuilder()
.setSeconds(retentionTime.atZone(ZoneOffset.UTC).toEpochSecond())
.build();
SeekRequest request =
SeekRequest.newBuilder()
.setSubscription(subscriptionName)
.setTime(retentionTimeEpoch)
.build();
subscriptionAdminClient.seek(request);
} catch (IOException e) {
logger.atSevere().withCause(e).log("Cannot replay messages");
}
}