使用推送端点创建推送订阅。
深入探索
如需查看包含此代码示例的详细文档,请参阅以下内容:
代码示例
C++
在尝试此示例之前,请按照使用客户端库的 Pub/Sub 快速入门中的 C++ 设置说明进行操作。如需了解详情,请参阅 Pub/Sub C++ API 参考文档。
namespace pubsub = ::google::cloud::pubsub;
[](pubsub::SubscriptionAdminClient client, std::string const& project_id,
std::string const& topic_id, std::string const& subscription_id,
std::string const& endpoint) {
auto sub = client.CreateSubscription(
pubsub::Topic(project_id, std::move(topic_id)),
pubsub::Subscription(project_id, std::move(subscription_id)),
pubsub::SubscriptionBuilder{}.set_push_config(
pubsub::PushConfigBuilder{}.set_push_endpoint(endpoint)));
if (sub.status().code() == google::cloud::StatusCode::kAlreadyExists) {
std::cout << "The subscription already exists\n";
return;
}
if (!sub) throw std::move(sub).status();
std::cout << "The subscription was successfully created: "
<< sub->DebugString() << "\n";
}
C#
在尝试此示例之前,请按照使用客户端库的 Pub/Sub 快速入门中的 C# 设置说明进行操作。如需了解详情,请参阅 Pub/Sub C# API 参考文档。
using Google.Cloud.PubSub.V1;
public class CreatePushSubscriptionSample
{
public Subscription CreatePushSubscription(string projectId, string topicId, string subscriptionId, string pushEndpoint)
{
SubscriberServiceApiClient subscriber = SubscriberServiceApiClient.Create();
TopicName topicName = TopicName.FromProjectTopic(projectId, topicId);
SubscriptionName subscriptionName = SubscriptionName.FromProjectSubscription(projectId, subscriptionId);
PushConfig pushConfig = new PushConfig { PushEndpoint = pushEndpoint };
// The approximate amount of time in seconds (on a best-effort basis) Pub/Sub waits for the
// subscriber to acknowledge receipt before resending the message.
var ackDeadlineSeconds = 60;
var subscription = subscriber.CreateSubscription(subscriptionName, topicName, pushConfig, ackDeadlineSeconds);
return subscription;
}
}
Go
在尝试此示例之前,请按照使用客户端库的 Pub/Sub 快速入门中的 Go 设置说明进行操作。如需了解详情,请参阅 Pub/Sub Go API 参考文档。
import (
"context"
"fmt"
"io"
"time"
"cloud.google.com/go/pubsub"
)
func createWithEndpoint(w io.Writer, projectID, subID string, topic *pubsub.Topic, endpoint string) error {
// projectID := "my-project-id"
// subID := "my-sub"
// topic of type https://godoc.org/cloud.google.com/go/pubsub#Topic
// endpoint := "https://my-test-project.appspot.com/push"
ctx := context.Background()
client, err := pubsub.NewClient(ctx, projectID)
if err != nil {
return fmt.Errorf("pubsub.NewClient: %v", err)
}
defer client.Close()
sub, err := client.CreateSubscription(ctx, subID, pubsub.SubscriptionConfig{
Topic: topic,
AckDeadline: 10 * time.Second,
PushConfig: pubsub.PushConfig{Endpoint: endpoint},
})
if err != nil {
return fmt.Errorf("CreateSubscription: %v", err)
}
fmt.Fprintf(w, "Created subscription: %v\n", sub)
return nil
}
Java
在尝试此示例之前,请按照使用客户端库的 Pub/Sub 快速入门中的 Java 设置说明进行操作。如需了解详情,请参阅 Pub/Sub Java API 参考文档。
import com.google.cloud.pubsub.v1.SubscriptionAdminClient;
import com.google.pubsub.v1.PushConfig;
import com.google.pubsub.v1.Subscription;
import com.google.pubsub.v1.SubscriptionName;
import com.google.pubsub.v1.TopicName;
import java.io.IOException;
public class CreatePushSubscriptionExample {
public static void main(String... args) throws Exception {
// TODO(developer): Replace these variables before running the sample.
String projectId = "your-project-id";
String subscriptionId = "your-subscription-id";
String topicId = "your-topic-id";
String pushEndpoint = "https://my-test-project.appspot.com/push";
createPushSubscriptionExample(projectId, subscriptionId, topicId, pushEndpoint);
}
public static void createPushSubscriptionExample(
String projectId, String subscriptionId, String topicId, String pushEndpoint)
throws IOException {
try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
TopicName topicName = TopicName.of(projectId, topicId);
SubscriptionName subscriptionName = SubscriptionName.of(projectId, subscriptionId);
PushConfig pushConfig = PushConfig.newBuilder().setPushEndpoint(pushEndpoint).build();
// Create a push subscription with default acknowledgement deadline of 10 seconds.
// Messages not successfully acknowledged within 10 seconds will get resent by the server.
Subscription subscription =
subscriptionAdminClient.createSubscription(subscriptionName, topicName, pushConfig, 10);
System.out.println("Created push subscription: " + subscription.getName());
}
}
}
Node.js
/**
* TODO(developer): Uncomment these variables before running the sample.
*/
// const topicNameOrId = 'YOUR_TOPIC_NAME_OR_ID';
// const subscriptionNameOrId = 'YOUR_SUBSCRIPTION_NAME_OR_ID';
// Imports the Google Cloud client library
const {PubSub} = require('@google-cloud/pubsub');
// Creates a client; cache this for further use
const pubSubClient = new PubSub();
async function createPushSubscription(topicNameOrId, subscriptionNameOrId) {
const options = {
pushConfig: {
// Set to an HTTPS endpoint of your choice. If necessary, register
// (authorize) the domain on which the server is hosted.
pushEndpoint: `https://${pubSubClient.projectId}.appspot.com/push`,
},
};
await pubSubClient
.topic(topicNameOrId)
.createSubscription(subscriptionNameOrId, options);
console.log(`Subscription ${subscriptionNameOrId} created.`);
}
Node.js
/**
* TODO(developer): Uncomment these variables before running the sample.
*/
// const topicNameOrId = 'YOUR_TOPIC_NAME_OR_ID';
// const subscriptionNameOrId = 'YOUR_SUBSCRIPTION_NAME_OR_ID';
// Imports the Google Cloud client library
import {PubSub, CreateSubscriptionOptions} from '@google-cloud/pubsub';
// Creates a client; cache this for further use
const pubSubClient = new PubSub();
async function createPushSubscription(
topicNameOrId: string,
subscriptionNameOrId: string
) {
const options: CreateSubscriptionOptions = {
pushConfig: {
// Set to an HTTPS endpoint of your choice. If necessary, register
// (authorize) the domain on which the server is hosted.
pushEndpoint: `https://${pubSubClient.projectId}.appspot.com/push`,
},
};
await pubSubClient
.topic(topicNameOrId)
.createSubscription(subscriptionNameOrId, options);
console.log(`Subscription ${subscriptionNameOrId} created.`);
}
PHP
在尝试此示例之前,请按照使用客户端库的 Pub/Sub 快速入门中的 PHP 设置说明进行操作。如需了解详情,请参阅 Pub/Sub PHP API 参考文档。
use Google\Cloud\PubSub\PubSubClient;
/**
* Creates a Pub/Sub push subscription.
*
* @param string $projectId The Google project ID.
* @param string $topicName The Pub/Sub topic name.
* @param string $subscriptionName The Pub/Sub subscription name.
* @param string $endpoint The endpoint for the push subscription.
*/
function create_push_subscription($projectId, $topicName, $subscriptionName, $endpoint)
{
$pubsub = new PubSubClient([
'projectId' => $projectId,
]);
$topic = $pubsub->topic($topicName);
$subscription = $topic->subscription($subscriptionName);
$subscription->create([
'pushConfig' => ['pushEndpoint' => $endpoint]
]);
printf('Subscription created: %s' . PHP_EOL, $subscription->name());
}
Python
在尝试此示例之前,请按照使用客户端库的 Pub/Sub 快速入门中的 Python 设置说明进行操作。如需了解详情,请参阅 Pub/Sub Python API 参考文档。
from google.cloud import pubsub_v1
# TODO(developer)
# project_id = "your-project-id"
# topic_id = "your-topic-id"
# subscription_id = "your-subscription-id"
# endpoint = "https://my-test-project.appspot.com/push"
publisher = pubsub_v1.PublisherClient()
subscriber = pubsub_v1.SubscriberClient()
topic_path = publisher.topic_path(project_id, topic_id)
subscription_path = subscriber.subscription_path(project_id, subscription_id)
push_config = pubsub_v1.types.PushConfig(push_endpoint=endpoint)
# Wrap the subscriber in a 'with' block to automatically call close() to
# close the underlying gRPC channel when done.
with subscriber:
subscription = subscriber.create_subscription(
request={
"name": subscription_path,
"topic": topic_path,
"push_config": push_config,
}
)
print(f"Push subscription created: {subscription}.")
print(f"Endpoint for subscription is: {endpoint}")
Ruby
在尝试此示例之前,请按照使用客户端库的 Pub/Sub 快速入门中的 Ruby 设置说明进行操作。如需了解详情,请参阅 Pub/Sub Ruby API 参考文档。
# topic_id = "your-topic-id"
# subscription_id = "your-subscription-id"
# endpoint = "https://your-test-project.appspot.com/push"
require "google/cloud/pubsub"
pubsub = Google::Cloud::Pubsub.new
topic = pubsub.topic topic_id
subscription = topic.subscribe subscription_id,
endpoint: endpoint
puts "Push subscription #{subscription_id} created."
后续步骤
如需搜索和过滤其他 Google Cloud 产品的代码示例,请参阅 Google Cloud 示例浏览器。