у нас есть общий вариант использования для наших приложений, где мы давно живем. Темы, которые могут охватывать развертывание приложений, но могут и не существовать.
Мы пытаемся найти наилучшую практику для шаблона в темах публикации/подписки GCP, используя предоставленный клиент Java, где мы можем CreateIfNotExists или GetAndCreateIfNotExists.
Текущая реализация, которую мы используем, заключается в попытке создать тему и, по сути, проглотить исключение, если это уже ExistsException.
@Override
public void createTopicIfNotExists(TopicName topicName) {
try {
this.topicAdminClient.createTopic(topicName);
} catch (AlreadyExistsException e) {
// topic already exists
} catch (Exception e) {
throw e;
}
}
Я не думаю, что это идеально, потому что в основном используется исключение как логика, что по своей сути является плохой практикой. Если мы попытаемся получить тему, когда она не существует, клиент выдает исключение DoesNot Exist, поэтому мы не можем сделать это по-другому.
Я видел вещи на github о том, что клиент JS может автоматически создавать команду Get, кто-нибудь знает, доступно ли это в клиенте java.
См. здесь: https://stackoverflow.com/a/38878368/5385625 Есть ли эквивалент в клиенте Java.