/** Example of creating a pull subscription for a topic. */ public Subscription createSubscription(String topicId, String subscriptionId) throws Exception { // [START pubsub_create_pull_subscription] try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) { // eg. projectId = "my-test-project", topicId = "my-test-topic" ProjectTopicName topicName = ProjectTopicName.of(projectId, topicId); // eg. subscriptionId = "my-test-subscription" ProjectSubscriptionName subscriptionName = ProjectSubscriptionName.of(projectId, subscriptionId); // create a pull subscription with default acknowledgement deadline Subscription subscription = subscriptionAdminClient.createSubscription( subscriptionName, topicName, PushConfig.getDefaultInstance(), 0); return subscription; } // [END pubsub_create_pull_subscription] }
/** Example of creating a subscription with a push endpoint. */ public Subscription createSubscriptionWithPushEndpoint( String topicId, String subscriptionId, String endpoint) throws Exception { // [START pubsub_create_push_subscription] try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) { ProjectTopicName topicName = ProjectTopicName.of(projectId, topicId); ProjectSubscriptionName subscriptionName = ProjectSubscriptionName.of(projectId, subscriptionId); // eg. endpoint = "https://my-test-project.appspot.com/push" PushConfig pushConfig = PushConfig.newBuilder().setPushEndpoint(endpoint).build(); // acknowledgement deadline in seconds for the message received over the push endpoint int ackDeadlineInSeconds = 10; Subscription subscription = subscriptionAdminClient.createSubscription( subscriptionName, topicName, pushConfig, ackDeadlineInSeconds); return subscription; } // [END pubsub_create_push_subscription] }
subscriptionAdminClient.createSubscription( subscription, topic, PushConfig.getDefaultInstance(), 0);
.setAckDeadlineSeconds(ackDeadlineSeconds) .build(); return createSubscription(request);
.setAckDeadlineSeconds(ackDeadlineSeconds) .build(); return createSubscription(request);
@Test @SuppressWarnings("all") public void createSubscriptionExceptionTest() throws Exception { StatusRuntimeException exception = new StatusRuntimeException(Status.INVALID_ARGUMENT); mockSubscriber.addException(exception); try { ProjectSubscriptionName name = ProjectSubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]"); ProjectTopicName topic = ProjectTopicName.of("[PROJECT]", "[TOPIC]"); PushConfig pushConfig = PushConfig.newBuilder().build(); int ackDeadlineSeconds = 2135351438; client.createSubscription(name, topic, pushConfig, ackDeadlineSeconds); Assert.fail("No exception raised"); } catch (InvalidArgumentException e) { // Expected exception } }
@Test public void testVPCPushSubscriber() throws Exception { assumeTrue(IS_VPC_TEST); ProjectTopicName topicName = ProjectTopicName.of(projectId, formatForTest("testing-vpc-push-subscriber-topic")); ProjectSubscriptionName subscriptionName = ProjectSubscriptionName.of( projectId, formatForTest("testing-vpc-push-subscriber-subscription")); topicAdminClient.createTopic(topicName); try { subscriptionAdminClient.createSubscription( subscriptionName, topicName, PushConfig.newBuilder().setPushEndpoint("random_point").build(), 10); subscriptionAdminClient.deleteSubscription(subscriptionName); Assert.fail("No exception raised"); } catch (PermissionDeniedException e) { // expected } topicAdminClient.deleteTopic(topicName); }
client.createSubscription(name, topic, pushConfig, ackDeadlineSeconds); Assert.assertEquals(expectedResponse, actualResponse);
subscriptionAdminClient.createSubscription( subscriptionName, topicName, PushConfig.newBuilder().build(), 10);
/** * Creates and returns a Pub/Sub subscription object listening to the Occurrence topic * @param subId the identifier you want to associate with the subscription * @param projectId the GCP project to create the subscription under * @throws IOException thrown on errors with the subscription client * @throws StatusRuntimeException if subscription already exists * */ public static Subscription createOccurrenceSubscription(String subId, String projectId) throws IOException, StatusRuntimeException { // This topic id will automatically receive messages when Occurrences are added or modified String topicId = "container-analysis-occurrences-v1beta1"; SubscriptionAdminClient client = SubscriptionAdminClient.create(); PushConfig config = PushConfig.getDefaultInstance(); ProjectTopicName topicName = ProjectTopicName.of(projectId, topicId); ProjectSubscriptionName subName = ProjectSubscriptionName.of(projectId, subId); Subscription sub = client.createSubscription(subName, topicName, config, 0); return sub; } // [END pubsub]
subscriptionAdminClient.createSubscription( subscriptionName, topicName, PushConfig.getDefaultInstance(), 0); } catch (ApiException e) {
/** * Create a new subscription on Google Cloud Pub/Sub. * * @param subscriptionName the name of the new subscription * @param topicName the name of the topic being subscribed to * @param ackDeadline deadline in seconds before a message is resent, must be between 10 and 600 seconds. * If not provided, set to default of 10 seconds * @param pushEndpoint the URL of the service receiving the push messages. If not provided, uses * message pulling by default * @return the created subscription */ public Subscription createSubscription(String subscriptionName, String topicName, Integer ackDeadline, String pushEndpoint) { Assert.hasText(subscriptionName, "No subscription name was specified."); Assert.hasText(topicName, "No topic name was specified."); int finalAckDeadline = this.defaultAckDeadline; if (ackDeadline != null) { validateAckDeadline(ackDeadline); finalAckDeadline = ackDeadline; } PushConfig.Builder pushConfigBuilder = PushConfig.newBuilder(); if (pushEndpoint != null) { pushConfigBuilder.setPushEndpoint(pushEndpoint); } return this.subscriptionAdminClient.createSubscription( ProjectSubscriptionName.of(this.projectId, subscriptionName), ProjectTopicName.of(this.projectId, topicName), pushConfigBuilder.build(), finalAckDeadline); }
/** * Create a new subscription on Google Cloud Pub/Sub. * * @param subscriptionName the name of the new subscription * @param topicName the name of the topic being subscribed to * @param ackDeadline deadline in seconds before a message is resent, must be between 10 and 600 seconds. * If not provided, set to default of 10 seconds * @param pushEndpoint the URL of the service receiving the push messages. If not provided, uses * message pulling by default * @return the created subscription */ public Subscription createSubscription(String subscriptionName, String topicName, Integer ackDeadline, String pushEndpoint) { Assert.hasText(subscriptionName, "No subscription name was specified."); Assert.hasText(topicName, "No topic name was specified."); int finalAckDeadline = this.defaultAckDeadline; if (ackDeadline != null) { validateAckDeadline(ackDeadline); finalAckDeadline = ackDeadline; } PushConfig.Builder pushConfigBuilder = PushConfig.newBuilder(); if (pushEndpoint != null) { pushConfigBuilder.setPushEndpoint(pushEndpoint); } return this.subscriptionAdminClient.createSubscription( ProjectSubscriptionName.of(this.projectId, subscriptionName), ProjectTopicName.of(this.projectId, topicName), pushConfigBuilder.build(), finalAckDeadline); }