Skip to content

Commit 2848da6

Browse files
samples: add subscription with filter example (#978)
* samples: add subscription with filter example * 🦉 Updates from OwlBot See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * populate filter string Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
1 parent b9f3f25 commit 2848da6

4 files changed

Lines changed: 72 additions & 4 deletions

File tree

java-pubsub/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ Samples are in the [`samples/`](https://github.com/googleapis/java-pubsub/tree/m
245245
| Create Pull Subscription Example | [source code](https://github.com/googleapis/java-pubsub/blob/main/samples/snippets/src/main/java/pubsub/CreatePullSubscriptionExample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-pubsub&page=editor&open_in_editor=samples/snippets/src/main/java/pubsub/CreatePullSubscriptionExample.java) |
246246
| Create Push Subscription Example | [source code](https://github.com/googleapis/java-pubsub/blob/main/samples/snippets/src/main/java/pubsub/CreatePushSubscriptionExample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-pubsub&page=editor&open_in_editor=samples/snippets/src/main/java/pubsub/CreatePushSubscriptionExample.java) |
247247
| Create Subscription With Dead Letter Policy Example | [source code](https://github.com/googleapis/java-pubsub/blob/main/samples/snippets/src/main/java/pubsub/CreateSubscriptionWithDeadLetterPolicyExample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-pubsub&page=editor&open_in_editor=samples/snippets/src/main/java/pubsub/CreateSubscriptionWithDeadLetterPolicyExample.java) |
248+
| Create Subscription With Filtering | [source code](https://github.com/googleapis/java-pubsub/blob/main/samples/snippets/src/main/java/pubsub/CreateSubscriptionWithFiltering.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-pubsub&page=editor&open_in_editor=samples/snippets/src/main/java/pubsub/CreateSubscriptionWithFiltering.java) |
248249
| Create Subscription With Ordering | [source code](https://github.com/googleapis/java-pubsub/blob/main/samples/snippets/src/main/java/pubsub/CreateSubscriptionWithOrdering.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-pubsub&page=editor&open_in_editor=samples/snippets/src/main/java/pubsub/CreateSubscriptionWithOrdering.java) |
249250
| Create Topic Example | [source code](https://github.com/googleapis/java-pubsub/blob/main/samples/snippets/src/main/java/pubsub/CreateTopicExample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-pubsub&page=editor&open_in_editor=samples/snippets/src/main/java/pubsub/CreateTopicExample.java) |
250251
| Create Topic With Schema Example | [source code](https://github.com/googleapis/java-pubsub/blob/main/samples/snippets/src/main/java/pubsub/CreateTopicWithSchemaExample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-pubsub&page=editor&open_in_editor=samples/snippets/src/main/java/pubsub/CreateTopicWithSchemaExample.java) |
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/*
2+
* Copyright 2020 Google LLC
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package pubsub;
18+
19+
// [START pubsub_create_subscription_with_filter]
20+
import com.google.cloud.pubsub.v1.SubscriptionAdminClient;
21+
import com.google.pubsub.v1.ProjectSubscriptionName;
22+
import com.google.pubsub.v1.ProjectTopicName;
23+
import com.google.pubsub.v1.Subscription;
24+
import java.io.IOException;
25+
26+
public class CreateSubscriptionWithFiltering {
27+
public static void main(String... args) throws Exception {
28+
// TODO(developer): Replace these variables before running the sample.
29+
String projectId = "your-project-id";
30+
String topicId = "your-topic-id";
31+
String subscriptionId = "your-subscription-id";
32+
String filter = "attributes.author=\"unknown\"";
33+
34+
createSubscriptionWithFilteringExample(projectId, topicId, subscriptionId, filter);
35+
}
36+
37+
public static void createSubscriptionWithFilteringExample(
38+
String projectId, String topicId, String subscriptionId, String filter) throws IOException {
39+
try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
40+
41+
ProjectTopicName topicName = ProjectTopicName.of(projectId, topicId);
42+
ProjectSubscriptionName subscriptionName =
43+
ProjectSubscriptionName.of(projectId, subscriptionId);
44+
45+
Subscription subscription =
46+
subscriptionAdminClient.createSubscription(
47+
Subscription.newBuilder()
48+
.setName(subscriptionName.toString())
49+
.setTopic(topicName.toString())
50+
// Receive messages with attribute key "author" and value "unknown".
51+
.setFilter(filter)
52+
.build());
53+
54+
System.out.println(
55+
"Created a subscription with filtering enabled: " + subscription.getAllFields());
56+
}
57+
}
58+
}
59+
// [END pubsub_create_subscription_with_filter]

java-pubsub/samples/snippets/src/test/java/pubsub/AdminIT.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ public class AdminIT {
4444
private static final String pullSubscriptionId = "iam-pull-subscription-" + _suffix;
4545
private static final String pushSubscriptionId = "iam-push-subscription-" + _suffix;
4646
private static final String orderedSubscriptionId = "iam-ordered-subscription-" + _suffix;
47+
private static final String filteredSubscriptionId = "iam-filtered-subscription-" + _suffix;
4748
private static final String pushEndpoint = "https://my-test-project.appspot.com/push";
4849

4950
private static final TopicName topicName = TopicName.of(projectId, topicId);
@@ -53,6 +54,8 @@ public class AdminIT {
5354
SubscriptionName.of(projectId, pushSubscriptionId);
5455
private static final SubscriptionName orderedSubscriptionName =
5556
SubscriptionName.of(projectId, orderedSubscriptionId);
57+
private static final SubscriptionName filteredSubscriptionName =
58+
SubscriptionName.of(projectId, filteredSubscriptionId);
5659

5760
private static void requireEnvVar(String varName) {
5861
assertNotNull(
@@ -82,6 +85,7 @@ public void tearDown() throws Exception {
8285
subscriptionAdminClient.deleteSubscription(pullSubscriptionName);
8386
subscriptionAdminClient.deleteSubscription(pushSubscriptionName);
8487
subscriptionAdminClient.deleteSubscription(orderedSubscriptionName);
88+
subscriptionAdminClient.deleteSubscription(filteredSubscriptionName);
8589
} catch (NotFoundException ignored) {
8690
// ignore this as resources may not have been created
8791
}
@@ -183,6 +187,14 @@ public void testAdmin() throws Exception {
183187
assertThat(bout.toString()).contains("Created a subscription with ordering");
184188
assertThat(bout.toString()).contains("enable_message_ordering=true");
185189

190+
bout.reset();
191+
// Test create a subscription with filtering enabled
192+
CreateSubscriptionWithFiltering.createSubscriptionWithFilteringExample(
193+
projectId, topicId, filteredSubscriptionId, "attributes.author=\"unknown\"");
194+
assertThat(bout.toString()).contains("Created a subscription with filtering enabled");
195+
assertThat(bout.toString())
196+
.contains("google.pubsub.v1.Subscription.filter=attributes.author=\"unknown\"");
197+
186198
bout.reset();
187199
// Test delete subscription. Run twice to delete both pull and push subscriptions.
188200
DeleteSubscriptionExample.deleteSubscriptionExample(projectId, pullSubscriptionId);

java-pubsub/samples/snippets/src/test/java/pubsub/SubscriberIT.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121

2222
import com.google.api.core.ApiFuture;
2323
import com.google.api.core.ApiFutures;
24-
import com.google.api.gax.core.ExecutorProvider;
25-
import com.google.api.gax.core.InstantiatingExecutorProvider;
2624
import com.google.cloud.pubsub.v1.Publisher;
2725
import com.google.cloud.pubsub.v1.SubscriptionAdminClient;
2826
import com.google.cloud.pubsub.v1.TopicAdminClient;
@@ -58,8 +56,6 @@ public class SubscriberIT {
5856
private static final TopicName topicName = TopicName.of(projectId, topicId);
5957
private static final ProjectSubscriptionName subscriptionName =
6058
ProjectSubscriptionName.of(projectId, subscriptionId);
61-
private static final ExecutorProvider executorProvider =
62-
InstantiatingExecutorProvider.newBuilder().setExecutorThreadCount(4).build();
6359

6460
private static void requireEnvVar(String varName) {
6561
assertNotNull(

0 commit comments

Comments
 (0)