Skip to content

Commit 3937910

Browse files
committed
cleaning up PubSubExample
adding snippet for creating a subscription with a push endpoint
1 parent 67874a7 commit 3937910

File tree

3 files changed

+45
-35
lines changed

3 files changed

+45
-35
lines changed

google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/PubSubExample.java

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,6 @@
4848
* pull sync <subscription> <maxMessages>
4949
* publish <topic> <message>+
5050
* replace-push-config <subscription> <endpoint>?
51-
* ack <subscription> <ackId>+
52-
* nack <subscription> <ackId>+
5351
* create topic <topic>
5452
* create subscription <topic> <subscription> <endpoint>?
5553
* list subscriptions <topic>?
@@ -488,22 +486,6 @@ public String params() {
488486
}
489487
}
490488

491-
private abstract static class MessagesAction extends PubSubAction<Tuple<SubscriptionName, List<String>>> {
492-
@Override
493-
Tuple<SubscriptionName, List<String>> parse(String... args) throws Exception {
494-
if (args.length < 2) {
495-
throw new IllegalArgumentException("Missing required subscription and ack IDs");
496-
}
497-
SubscriptionName subscriptionName = SubscriptionName.create(projectId, args[0]);
498-
return Tuple.of(subscriptionName, Arrays.asList(Arrays.copyOfRange(args, 1, args.length)));
499-
}
500-
501-
@Override
502-
public String params() {
503-
return "<subscription> <ackId>+";
504-
}
505-
}
506-
507489
/**
508490
* This class demonstrates how to asynchronously pull messages from a Pub/Sub pull subscription.
509491
* Messages are pulled until a timeout is reached.

google-cloud-examples/src/main/java/com/google/cloud/examples/pubsub/snippets/SubscriptionAdminClientSnippets.java

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,15 @@ public String getProjectId() {
5353
}
5454

5555
/** Example of creating a pull subscription for a topic. */
56-
public Subscription createSubscription(String topic, String subscriptionId) throws Exception {
56+
public Subscription createSubscription(String topicId, String subscriptionId) throws Exception {
5757
try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
5858
// [START createSubscription]
59-
TopicName topicName = TopicName.create(projectId, topic);
59+
// eg. projectId = "my-test-project", topicId = "my-test-topic"
60+
TopicName topicName = TopicName.create(projectId, topicId);
61+
// eg. subscriptionId = "my-test-subscription"
6062
SubscriptionName subscriptionName =
6163
SubscriptionName.create(projectId, subscriptionId);
64+
// create a pull subscription with default acknowledgement deadline
6265
Subscription subscription =
6366
subscriptionAdminClient.createSubscription(
6467
subscriptionName, topicName, PushConfig.getDefaultInstance(), 0);
@@ -67,6 +70,29 @@ public Subscription createSubscription(String topic, String subscriptionId) thro
6770
}
6871
}
6972

73+
/** Example of creating a subscription with a push endpoint. */
74+
public Subscription createSubscriptionWithPushEndpoint(String topicId, String subscriptionId, String endpoint)
75+
throws Exception {
76+
try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
77+
// [START createSubscriptionWithPushEndpoint]
78+
TopicName topicName = TopicName.create(projectId, topicId);
79+
SubscriptionName subscriptionName =
80+
SubscriptionName.create(projectId, subscriptionId);
81+
82+
// eg. endpoint = "https://my-test-project.appspot.com/push"
83+
PushConfig pushConfig = PushConfig.newBuilder().setPushEndpoint(endpoint).build();
84+
85+
// acknowledgement deadline in seconds for the message received over the push endpoint
86+
int ackDeadlineInSeconds = 10;
87+
88+
Subscription subscription =
89+
subscriptionAdminClient.createSubscription(
90+
subscriptionName, topicName, pushConfig, ackDeadlineInSeconds);
91+
// [END createSubscriptionWithPushEndpoint]
92+
return subscription;
93+
}
94+
}
95+
7096
/** Example of replacing the push configuration of a subscription, setting the push endpoint. */
7197
public void replacePushConfig(String subscriptionId, String endpoint) throws Exception {
7298
try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {

google-cloud-examples/src/test/java/com/google/cloud/examples/pubsub/snippets/ITSubscriptionAdminClientSnippets.java

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -82,16 +82,19 @@ public void setUp() throws Exception {
8282
Cleanup.deleteTestTopicsAndSubscriptions(projectId, topics, subscriptions);
8383
}
8484

85-
private Subscription createSubscription(String topicName, String subscriptionName)
86-
throws Exception {
85+
@Test
86+
public void createSubscriptionWithPushIsSuccessful() throws Exception {
87+
String topicName = topics[0];
88+
String subscriptionName = subscriptions[0];
8789
createTopic(topicName);
90+
String endpoint = "https://" + projectId + ".appspot.com/push";
8891
Subscription subscription =
89-
subscriptionAdminClientSnippets.createSubscription(topicName, subscriptionName);
92+
subscriptionAdminClientSnippets.createSubscriptionWithPushEndpoint(topicName, subscriptionName, endpoint);
9093
assertNotNull(subscription);
9194
Subscription retrievedSubscription = subscriptionAdminClientSnippets.getSubscription(subscriptionName);
9295
assertNotNull(retrievedSubscription);
9396
assertEquals(subscription.getName(), retrievedSubscription.getName());
94-
return subscription;
97+
assertEquals(subscription.getPushConfig().getPushEndpoint(), endpoint);
9598
}
9699

97100
@Test
@@ -168,17 +171,16 @@ private void createTopic(String name) throws Exception {
168171
}
169172
}
170173

171-
private Set<String> publishMessages(String topicName, int numMessages) throws Exception {
172-
Set<String> messages = new HashSet<>();
173-
Publisher publisher = Publisher.defaultBuilder(TopicName.create(projectId, topicName)).build();
174-
for (int i = 1; i<= numMessages; i++) {
175-
String message = formatForTest("message-" + i);
176-
PubsubMessage pubsubMessage = PubsubMessage.newBuilder().setData(
177-
ByteString.copyFromUtf8(message)).build();
178-
publisher.publish(pubsubMessage);
179-
messages.add(message);
180-
}
181-
return messages;
174+
private Subscription createSubscription(String topicName, String subscriptionName)
175+
throws Exception {
176+
createTopic(topicName);
177+
Subscription subscription =
178+
subscriptionAdminClientSnippets.createSubscription(topicName, subscriptionName);
179+
assertNotNull(subscription);
180+
Subscription retrievedSubscription = subscriptionAdminClientSnippets.getSubscription(subscriptionName);
181+
assertNotNull(retrievedSubscription);
182+
assertEquals(subscription.getName(), retrievedSubscription.getName());
183+
return subscription;
182184
}
183185

184186
@After

0 commit comments

Comments
 (0)