queue

package
v0.24.0-rc1 Latest Latest
Warning

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

Go to latest
Published: Jun 5, 2024 License: Apache-2.0 Imports: 12 Imported by: 1

Documentation

Overview

Package queue provides the ability for Vela to integrate with different supported Queue backends.

Usage:

import "github.com/go-vela/server/queue"

Index

Constants

This section is empty.

Variables

View Source
var Flags = []cli.Flag{

	&cli.StringFlag{
		EnvVars:  []string{"VELA_QUEUE_DRIVER", "QUEUE_DRIVER"},
		FilePath: "/vela/queue/driver",
		Name:     "queue.driver",
		Usage:    "driver to be used for the queue",
	},
	&cli.StringFlag{
		EnvVars:  []string{"VELA_QUEUE_ADDR", "QUEUE_ADDR"},
		FilePath: "/vela/queue/addr",
		Name:     "queue.addr",
		Usage:    "fully qualified url (<scheme>://<host>) for the queue",
	},
	&cli.BoolFlag{
		EnvVars:  []string{"VELA_QUEUE_CLUSTER", "QUEUE_CLUSTER"},
		FilePath: "/vela/queue/cluster",
		Name:     "queue.cluster",
		Usage:    "enables connecting to a queue cluster",
	},
	&cli.StringSliceFlag{
		EnvVars:  []string{"VELA_QUEUE_ROUTES", "QUEUE_ROUTES"},
		FilePath: "/vela/queue/routes",
		Name:     "queue.routes",
		Usage:    "list of routes (channels/topics) to publish builds",
		Value:    cli.NewStringSlice(constants.DefaultRoute),
	},
	&cli.DurationFlag{
		EnvVars:  []string{"VELA_QUEUE_POP_TIMEOUT", "QUEUE_POP_TIMEOUT"},
		FilePath: "/vela/queue/pop_timeout",
		Name:     "queue.pop.timeout",
		Usage:    "timeout for requests that pop items off the queue",
		Value:    60 * time.Second,
	},
	&cli.StringFlag{
		EnvVars:  []string{"VELA_QUEUE_PRIVATE_KEY", "QUEUE_PRIVATE_KEY"},
		FilePath: "/vela/signing.key",
		Name:     "queue.private-key",
		Usage:    "set value of base64 encoded queue signing private key",
	},
	&cli.StringFlag{
		EnvVars:  []string{"VELA_QUEUE_PUBLIC_KEY", "QUEUE_PUBLIC_KEY"},
		FilePath: "/vela/signing.pub",
		Name:     "queue.public-key",
		Usage:    "set value of base64 encoded queue signing public key",
	},
}

Flags represents all supported command line interface (CLI) flags for the queue.

https://pkg.go.dev/github.com/urfave/cli?tab=doc#Flag

Functions

func WithContext added in v0.11.0

func WithContext(c context.Context, s Service) context.Context

WithContext inserts the queue Service into the context.Context.

func WithGinContext added in v0.11.0

func WithGinContext(c *gin.Context, s Service)

WithGinContext inserts the queue Service into the gin.Context.

Types

type Service

type Service interface {

	// Driver defines a function that outputs
	// the configured queue driver.
	Driver() string

	// Length defines a function that outputs
	// the length of a queue channel
	Length(context.Context) (int64, error)

	// Pop defines a function that grabs an
	// item off the queue.
	Pop(context.Context, []string) (*models.Item, error)

	// Push defines a function that publishes an
	// item to the specified route in the queue.
	Push(context.Context, string, []byte) error

	// Ping defines a function that checks the
	// connection to the queue.
	Ping(context.Context) error

	// Route defines a function that decides which
	// channel a build gets placed within the queue.
	Route(*pipeline.Worker) (string, error)

	// GetSettings defines a function that returns
	// queue settings.
	GetSettings() settings.Queue

	// SetSettings defines a function that takes api settings
	// and updates the compiler Engine.
	SetSettings(*settings.Platform)
}

Service represents the interface for Vela integrating with the different supported Queue backends.

func FromCLIContext added in v0.24.0

func FromCLIContext(c *cli.Context) (Service, error)

FromCLIContext helper function to setup the queue from the CLI arguments.

func FromContext

func FromContext(c context.Context) Service

FromContext retrieves the queue Service from the context.Context.

func FromGinContext added in v0.11.0

func FromGinContext(c *gin.Context) Service

FromGinContext retrieves the queue Service from the gin.Context.

func New added in v0.11.0

func New(s *Setup) (Service, error)

New creates and returns a Vela service capable of integrating with the configured queue environment. Currently, the following queues are supported:

* redis .

type Setup added in v0.11.0

type Setup struct {

	// specifies the driver to use for the queue client
	Driver string
	// specifies the address to use for the queue client
	Address string
	// enables the queue client to integrate with a queue cluster
	Cluster bool
	// specifies a list of routes (channels/topics) for managing builds for the queue client
	Routes []string
	// specifies the timeout for pop requests for the queue client
	Timeout time.Duration
	// private key in base64 used for signing items pushed to the queue
	PrivateKey string
	// public key in base64 used for opening items popped from the queue
	PublicKey string
}

Setup represents the configuration necessary for creating a Vela service capable of integrating with a configured queue environment.

func (*Setup) Kafka added in v0.11.0

func (s *Setup) Kafka() (Service, error)

Kafka creates and returns a Vela service capable of integrating with a Kafka queue.

func (*Setup) Redis added in v0.11.0

func (s *Setup) Redis() (Service, error)

Redis creates and returns a Vela service capable of integrating with a Redis queue.

func (*Setup) Validate added in v0.11.0

func (s *Setup) Validate() error

Validate verifies the necessary fields for the provided configuration are populated correctly.

Directories

Path Synopsis
Package redis provides the ability for Vela to integrate with a Redis server as a queue backend.
Package redis provides the ability for Vela to integrate with a Redis server as a queue backend.

Jump to

Keyboard shortcuts

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