@Override public List<SubscriptionPath> listSubscriptions(ProjectPath project, TopicPath topic) throws IOException { Subscriptions.List request = pubsub.projects().subscriptions().list(project.getPath()); ListSubscriptionsResponse response = request.execute(); if (response.getSubscriptions() == null || response.getSubscriptions().isEmpty()) { return ImmutableList.of(); } List<SubscriptionPath> subscriptions = new ArrayList<>(response.getSubscriptions().size()); while (true) { for (Subscription subscription : response.getSubscriptions()) { if (subscription.getTopic().equals(topic.getPath())) { subscriptions.add(subscriptionPathFromPath(subscription.getName())); } } if (Strings.isNullOrEmpty(response.getNextPageToken())) { break; } request.setPageToken(response.getNextPageToken()); response = request.execute(); } return subscriptions; }
/** * Creates a new subscription. * * @param client Cloud Pub/Sub client. * @param args Arguments as an array of String. * @throws IOException when Cloud Pub/Sub API calls fail. */ public static void createSubscription(final Pubsub client, final String[] args) throws IOException { Main.checkArgsLength(args, 4); String subscriptionName = PubsubUtils.getFullyQualifiedResourceName( PubsubUtils.ResourceType.SUBSCRIPTION, args[0], args[2]); Subscription subscription = new Subscription() .setTopic(PubsubUtils.getFullyQualifiedResourceName( PubsubUtils.ResourceType.TOPIC, args[0], args[3])); if (args.length == 5) { subscription = subscription.setPushConfig( new PushConfig().setPushEndpoint(args[4])); } subscription = client.projects().subscriptions() .create(subscriptionName, subscription) .execute(); System.out.printf( "Subscription %s was created.\n", subscription.getName()); System.out.println(subscription.toPrettyString()); }