grpc

package
v1.0.11 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 5, 2026 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Overview

Package grpc provides a gRPC client for the Spooled API.

Index

Constants

View Source
const DefaultAddress = "grpc.spooled.cloud:443"

DefaultAddress is the default gRPC server address.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client is the gRPC client for Spooled.

func NewClient

func NewClient(opts ClientOptions) (*Client, error)

NewClient creates a new gRPC client.

func (*Client) Close

func (c *Client) Close() error

Close closes the gRPC connection.

func (*Client) Complete

func (c *Client) Complete(ctx context.Context, req *CompleteRequest) error

Complete marks a job as completed.

func (*Client) Dequeue

func (c *Client) Dequeue(ctx context.Context, req *DequeueRequest) (*DequeueResponse, error)

Dequeue dequeues jobs for a worker.

func (*Client) DeregisterWorker

func (c *Client) DeregisterWorker(ctx context.Context, workerID string) error

DeregisterWorker deregisters a worker.

func (*Client) Enqueue

func (c *Client) Enqueue(ctx context.Context, req *EnqueueRequest) (*EnqueueResponse, error)

Enqueue enqueues a new job.

func (*Client) Fail

func (c *Client) Fail(ctx context.Context, req *FailRequest) error

Fail marks a job as failed.

func (*Client) GetJob

func (c *Client) GetJob(ctx context.Context, jobID string) (*Job, error)

GetJob retrieves a job by ID.

func (*Client) GetQueueStats

func (c *Client) GetQueueStats(ctx context.Context, queueName string) (*QueueStats, error)

GetQueueStats retrieves queue statistics.

func (*Client) ProcessJobs

ProcessJobs opens a bidirectional stream for job processing.

func (*Client) RegisterWorker

func (c *Client) RegisterWorker(ctx context.Context, req *RegisterWorkerRequest) (*RegisterWorkerResponse, error)

RegisterWorker registers a new worker.

func (*Client) RenewLease

func (c *Client) RenewLease(ctx context.Context, req *RenewLeaseRequest) (*RenewLeaseResponse, error)

RenewLease renews the lease on a job.

func (*Client) StreamJobs

func (c *Client) StreamJobs(ctx context.Context, queueName, workerID string) (pb.QueueService_StreamJobsClient, error)

StreamJobs opens a streaming connection to receive jobs.

func (*Client) WorkerHeartbeat

func (c *Client) WorkerHeartbeat(ctx context.Context, req *WorkerHeartbeatRequest) error

WorkerHeartbeat sends a worker heartbeat.

type ClientOptions

type ClientOptions struct {
	// Address is the gRPC server address (e.g., "grpc.spooled.cloud:443")
	Address string
	// APIKey is the API key for authentication
	APIKey string
	// UseTLS enables TLS (default: true for port 443)
	UseTLS *bool
	// TLSConfig is custom TLS configuration (optional)
	TLSConfig *tls.Config
	// DialOptions are additional gRPC dial options
	DialOptions []grpc.DialOption
	// Timeout is the connection timeout
	Timeout time.Duration
}

ClientOptions configures the gRPC client.

type CompleteRequest

type CompleteRequest struct {
	JobID    string
	WorkerID string
	Result   map[string]any
}

CompleteRequest is the request to complete a job.

type DequeueRequest

type DequeueRequest struct {
	QueueName        string
	WorkerID         string
	BatchSize        int32
	LeaseDurationSec int32
}

DequeueRequest is the request for dequeuing jobs.

type DequeueResponse

type DequeueResponse struct {
	Jobs []*Job
}

DequeueResponse is the response from dequeuing jobs.

type EnqueueRequest

type EnqueueRequest struct {
	QueueName      string
	Payload        map[string]any
	Priority       int32
	MaxRetries     int32
	TimeoutSeconds int32
	ScheduledAt    *time.Time
	IdempotencyKey string
}

EnqueueRequest is the request for enqueueing a job.

type EnqueueResponse

type EnqueueResponse struct {
	JobID   string
	Created bool
}

EnqueueResponse is the response from enqueueing a job.

type FailRequest

type FailRequest struct {
	JobID    string
	WorkerID string
	Error    string
	Retry    bool
}

FailRequest is the request to fail a job.

type Job

type Job struct {
	ID             string
	QueueName      string
	Payload        map[string]any
	Priority       int32
	RetryCount     int32
	MaxRetries     int32
	TimeoutSeconds int32
	LeaseExpiresAt *time.Time
}

Job represents a dequeued job.

type QueueStats

type QueueStats struct {
	QueueName  string
	Pending    int64
	Scheduled  int64
	Processing int64
	Completed  int64
	Failed     int64
	Deadletter int64
	Total      int64
	MaxAgeMs   int64
}

QueueStats represents queue statistics.

type RegisterWorkerRequest

type RegisterWorkerRequest struct {
	QueueName      string
	Hostname       string
	MaxConcurrency int32
	Version        string
	Metadata       map[string]string
}

RegisterWorkerRequest is the request to register a worker.

type RegisterWorkerResponse

type RegisterWorkerResponse struct {
	WorkerID             string
	HeartbeatIntervalSec int32
	LeaseDurationSec     int32
}

RegisterWorkerResponse is the response from registering a worker.

type RenewLeaseRequest

type RenewLeaseRequest struct {
	JobID         string
	WorkerID      string
	ExtensionSecs int32
}

RenewLeaseRequest is the request to renew a job lease.

type RenewLeaseResponse

type RenewLeaseResponse struct {
	Success      bool
	NewExpiresAt *time.Time
}

RenewLeaseResponse is the response from renewing a lease.

type WorkerHeartbeatRequest

type WorkerHeartbeatRequest struct {
	WorkerID    string
	CurrentJobs int32
	Status      string
}

WorkerHeartbeatRequest is the request for a worker heartbeat.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL