From a7cf8ef02441c9a8477a3026acadaae17dd78ea3 Mon Sep 17 00:00:00 2001 From: Tianzi Cai Date: Wed, 15 Jul 2020 10:32:38 -0700 Subject: [PATCH 1/3] samples: subscription detachment --- .../pubsub/DetachSubscriptionExample.java | 59 +++++++++++++++++++ .../src/test/java/pubsub/AdminIT.java | 5 ++ 2 files changed, 64 insertions(+) create mode 100644 samples/snippets/src/main/java/pubsub/DetachSubscriptionExample.java diff --git a/samples/snippets/src/main/java/pubsub/DetachSubscriptionExample.java b/samples/snippets/src/main/java/pubsub/DetachSubscriptionExample.java new file mode 100644 index 000000000..d2cf4220c --- /dev/null +++ b/samples/snippets/src/main/java/pubsub/DetachSubscriptionExample.java @@ -0,0 +1,59 @@ +/* + * Copyright 2020 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package pubsub; + +// [START pubsub_detach_subscription] +import com.google.cloud.pubsub.v1.SubscriptionAdminClient; +import com.google.cloud.pubsub.v1.TopicAdminClient; +import com.google.pubsub.v1.DetachSubscriptionRequest; +import com.google.pubsub.v1.ProjectSubscriptionName; +import com.google.pubsub.v1.Subscription; +import java.io.IOException; + +public class DetachSubscriptionExample { + public static void main(String... args) throws Exception { + // TODO(developer): Replace these variables before running the sample. + String projectId = "your-project-id"; + // Choose an existing subscription. + String subscriptionId = "your-subscription-id"; + + detachSubscriptionExample(projectId, subscriptionId); + } + + public static void detachSubscriptionExample(String projectId, String subscriptionId) + throws IOException { + ProjectSubscriptionName subscriptionName = + ProjectSubscriptionName.of(projectId, subscriptionId); + + try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) { + topicAdminClient.detachSubscription( + DetachSubscriptionRequest.newBuilder() + .setSubscription(subscriptionName.toString()) + .build()); + } + + try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) { + Subscription subscription = subscriptionAdminClient.getSubscription(subscriptionName); + if (subscription.getDetached()) { + System.out.print("Subscription is detached."); + } else { + System.out.print("Subscription is NOT detached."); + } + } + } +} +// [END pubsub_detach_subscription] \ No newline at end of file diff --git a/samples/snippets/src/test/java/pubsub/AdminIT.java b/samples/snippets/src/test/java/pubsub/AdminIT.java index 0267b5ca5..3f1cac5bc 100644 --- a/samples/snippets/src/test/java/pubsub/AdminIT.java +++ b/samples/snippets/src/test/java/pubsub/AdminIT.java @@ -165,6 +165,11 @@ public void testAdmin() throws Exception { assertThat(bout.toString()).contains("permissions: \"pubsub.subscriptions.consume\""); assertThat(bout.toString()).contains("permissions: \"pubsub.subscriptions.update\""); + bout.reset(); + // Test subscription detachment. + DetachSubscriptionExample.detachSubscriptionExample(projectId, pullSubscriptionId); + assertThat(bout.toString()).contains("Subscription is detached."); + bout.reset(); // Test delete subscription. Run twice to delete both pull and push subscriptions. DeleteSubscriptionExample.deleteSubscriptionExample(projectId, pullSubscriptionId); From e1799b2e6ea30ad677d6f3be62278d63b9f40a78 Mon Sep 17 00:00:00 2001 From: Tianzi Cai Date: Wed, 15 Jul 2020 10:35:42 -0700 Subject: [PATCH 2/3] nit: println --- .../src/main/java/pubsub/DetachSubscriptionExample.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/snippets/src/main/java/pubsub/DetachSubscriptionExample.java b/samples/snippets/src/main/java/pubsub/DetachSubscriptionExample.java index d2cf4220c..ac04c1c90 100644 --- a/samples/snippets/src/main/java/pubsub/DetachSubscriptionExample.java +++ b/samples/snippets/src/main/java/pubsub/DetachSubscriptionExample.java @@ -49,9 +49,9 @@ public static void detachSubscriptionExample(String projectId, String subscripti try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) { Subscription subscription = subscriptionAdminClient.getSubscription(subscriptionName); if (subscription.getDetached()) { - System.out.print("Subscription is detached."); + System.out.println("Subscription is detached."); } else { - System.out.print("Subscription is NOT detached."); + System.out.println("Subscription is NOT detached."); } } } From 513c4f4688e11e95a57142f82836e58a57e5b5ca Mon Sep 17 00:00:00 2001 From: Tianzi Cai Date: Tue, 1 Sep 2020 11:53:14 -0700 Subject: [PATCH 3/3] remove dlq policy --- .../main/java/pubsub/RemoveDeadLetterPolicyExample.java | 7 +------ .../snippets/src/test/java/pubsub/DeadLetterQueueIT.java | 3 +-- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/samples/snippets/src/main/java/pubsub/RemoveDeadLetterPolicyExample.java b/samples/snippets/src/main/java/pubsub/RemoveDeadLetterPolicyExample.java index 842657b08..04718d419 100644 --- a/samples/snippets/src/main/java/pubsub/RemoveDeadLetterPolicyExample.java +++ b/samples/snippets/src/main/java/pubsub/RemoveDeadLetterPolicyExample.java @@ -46,9 +46,6 @@ public static void removeDeadLetterPolicyExample( ProjectSubscriptionName.of(projectId, subscriptionId); TopicName topicName = TopicName.of(projectId, topicId); - System.out.println( - "Before: " + subscriptionAdminClient.getSubscription(subscriptionName).getAllFields()); - // Construct the subscription you expect to have after the request. Here, // values in the required fields (name, topic) help identify the subscription. // No dead letter policy is supplied. @@ -61,9 +58,7 @@ public static void removeDeadLetterPolicyExample( // Construct a field mask to indicate which field to update in the subscription. FieldMask updateMask = FieldMask.newBuilder() - .addPaths("dead_letter_policy.dead_letter_topic") - // A default of 5 is applied upon successful update. - .addPaths("dead_letter_policy.max_delivery_attempts") + .addPaths("dead_letter_policy") .build(); UpdateSubscriptionRequest request = diff --git a/samples/snippets/src/test/java/pubsub/DeadLetterQueueIT.java b/samples/snippets/src/test/java/pubsub/DeadLetterQueueIT.java index 73071a6eb..5b342612e 100644 --- a/samples/snippets/src/test/java/pubsub/DeadLetterQueueIT.java +++ b/samples/snippets/src/test/java/pubsub/DeadLetterQueueIT.java @@ -138,7 +138,6 @@ public void testQuickstart() throws Exception { bout.reset(); // Remove dead letter policy. RemoveDeadLetterPolicyExample.removeDeadLetterPolicyExample(projectId, subscriptionId, topicId); - assertThat(bout.toString()) - .contains("google.pubsub.v1.Subscription.dead_letter_policy=max_delivery_attempts: 5"); + assertThat(bout.toString()).doesNotContain("dead_letter_policy"); } }