HTTP Target-Aufgaben programmatisch erstellen

Cloud Tasks-Handler können auf jedem HTTP-Endpunkt mit einer externen IP-Adresse ausgeführt werden, z. B. GKE, Compute Engine oder sogar auf einem lokalen Webserver. Ihre Aufgaben können mit jedem dieser Dienste zuverlässig und konfigurierbar ausgeführt werden.

In diesem Dokument wird gezeigt, wie Sie HTTP Target-Aufgaben programmatisch mit Cloud Tasks-Clientbibliotheken erstellen und in Cloud Tasks-Warteschlangen platzieren. Sie können HTTP-Zielaufgaben auch in der Google Cloud Konsole, mit der Google Cloud CLI oder durch Senden einer direkten Anfrage an die Cloud Tasks API erstellen. Weitere Informationen finden Sie unter Aufgaben erstellen.

Für Aufgaben mit HTTP-Zielen (im Gegensatz zu expliziten App Engine-Zielen, die weniger häufig sind) gibt es zwei Möglichkeiten, Aufgaben zu erstellen:

  • CreateTask-Methode:Sie müssen explizit ein Aufgabenobjekt erstellen. Verwenden Sie diese Methode, wenn die Aufgaben in Ihrer Warteschlange unterschiedliche Routingkonfigurationen haben. In diesem Fall geben Sie das Routing auf Aufgabenebene an und können kein Routing auf Warteschlangenebene verwenden. Bei diesem Ansatz wird die Methode CreateTask verwendet.

  • BufferTask-Methode:Verwenden Sie diese Methode, wenn Ihre Warteschlange so eingerichtet ist, dass Aufgaben vor einem Dienst gepuffert werden. Die Warteschlange muss Routing auf Warteschlangen-Ebene haben. Bei diesem Ansatz wird die Methode BufferTask verwendet.

Eine Anleitung zur Auswahl der Methode zum Erstellen von HTTP-Aufgaben finden Sie unter Methode zum Erstellen von Aufgaben auswählen.

Aufgabe mit der Methode CreateTask erstellen

In diesem Abschnitt wird beschrieben, wie Sie eine Aufgabe erstellen, indem Sie das Aufgabenobjekt erstellen. Sie verwenden die Methode CreateTask.

Wenn Sie eine Aufgabe mit der Methode CreateTask erstellen, erstellen und definieren Sie das Aufgabenobjekt explizit. Sie müssen den Dienst und den Handler angeben, mit denen die Aufgabe verarbeitet wird.

Optional können Sie aufgabenspezifische Daten an den Handler weiterleiten. Außerdem können Sie die Konfiguration der Aufgabe genauer festlegen. Beispielsweise können Sie einen zukünftigen Zeitpunkt angeben, an dem die Aufgabe ausgeführt werden soll, oder die Anzahl ihrer Wiederholungen im Fall von Fehlversuchen beschränken (siehe Erweiterte Konfiguration).

In den folgenden Beispielen wird die Methode CreateTask aufgerufen, um eine Aufgabe mit den Cloud Tasks-Clientbibliotheken zu erstellen.

C#


using Google.Cloud.Tasks.V2;
using Google.Protobuf;
using Google.Protobuf.WellKnownTypes;
using System;

class CreateHttpTask
{
    public string CreateTask(
        string projectId = "YOUR-PROJECT-ID",
        string location = "us-central1",
        string queue = "my-queue",
        string url = "http://example.com/taskhandler",
        string payload = "Hello World!",
        int inSeconds = 0)
    {
        CloudTasksClient client = CloudTasksClient.Create();
        QueueName parent = new QueueName(projectId, location, queue);

        var response = client.CreateTask(new CreateTaskRequest
        {
            Parent = parent.ToString(),
            Task = new Task
            {
                HttpRequest = new HttpRequest
                {
                    HttpMethod = HttpMethod.Post,
                    Url = url,
                    Body = ByteString.CopyFromUtf8(payload)
                },
                ScheduleTime = Timestamp.FromDateTime(
                    DateTime.UtcNow.AddSeconds(inSeconds))
            }
        });

        Console.WriteLine($"Created Task {response.Name}");
        return response.Name;
    }
}

Go


// Command createHTTPtask constructs and adds a task to a Cloud Tasks Queue.
package main

import (
	"context"
	"fmt"

	cloudtasks "cloud.google.com/go/cloudtasks/apiv2"
	taskspb "cloud.google.com/go/cloudtasks/apiv2/cloudtaskspb"
)

// createHTTPTask creates a new task with a HTTP target then adds it to a Queue.
func createHTTPTask(projectID, locationID, queueID, url, message string) (*taskspb.Task, error) {

	// Create a new Cloud Tasks client instance.
	// See https://godoc.org/cloud.google.com/go/cloudtasks/apiv2
	ctx := context.Background()
	client, err := cloudtasks.NewClient(ctx)
	if err != nil {
		return nil, fmt.Errorf("NewClient: %w", err)
	}
	defer client.Close()

	// Build the Task queue path.
	queuePath := fmt.Sprintf("projects/%s/locations/%s/queues/%s", projectID,