public static GooglePubsubSubscriber buildSubscriber(GooglePubsubProperties.GooglePubsubSubscription subscription,
PubsubMessageHandler pubsubMessageHandler) {
Subscriber subscriber;
String subscriptionName = subscription.getSubscriptionName();
String project = subscription.getProject();
String jsonPath = subscription.getJsonPath();
GooglePubsubMessageReceiver messageReceiver = new GooglePubsubMessageReceiver(subscription.getAckDeadlineSeconds(),
subscription.getName(),
pubsubMessageHandler,
subscription.getTemplatePath());
if (jsonPath != null && !jsonPath.isEmpty()) {
Credentials credentials = null;
try {
credentials = ServiceAccountCredentials.fromStream(new FileInputStream(jsonPath));
} catch (IOException e) {
log.error("Could not import Google Pubsub json credentials: {}", e.getMessage());
}
subscriber = Subscriber
.defaultBuilder(SubscriptionName.create(project, subscriptionName), messageReceiver)
.setCredentialsProvider(FixedCredentialsProvider.create(credentials))
.setMaxAckExtensionPeriod(Duration.ofSeconds(0))
.build();
} else {
subscriber = Subscriber.defaultBuilder(SubscriptionName.create(project, subscriptionName), messageReceiver).build();
}
subscriber.addListener(new GooglePubsubFailureHandler(formatSubscriptionName(project, subscriptionName)), MoreExecutors.directExecutor());
return new GooglePubsubSubscriber(subscription.getName(), subscriptionName, project, subscriber);
}