sidecar

package
v0.0.0-...-8fbec55 Latest Latest
Warning

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

Go to latest
Published: Nov 11, 2023 License: BSD-3-Clause Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const RabbitMQDirectyReplyQueueName = "amq.rabbitmq.reply-to"

see https://www.rabbitmq.com/direct-reply-to.html

View Source
const RabbitMQMessagePrefetchCount = 1

to load balance consumers https://www.rabbitmq.com/confirms.html#channel-qos-prefetch

Variables

This section is empty.

Functions

func ConsumeFromRabbitMQ

func ConsumeFromRabbitMQ(conn *amqp.Connection, queueName string) (*amqp.Channel, <-chan amqp.Delivery, error)

func ConsumeFromReplyQueue

func ConsumeFromReplyQueue(ch *amqp.Channel) (<-chan amqp.Delivery, error)

ConsumeFromReplyQueue implements https://www.rabbitmq.com/direct-reply-to.html

func FailOnError

func FailOnError(err error, msg string)

func LogOnError

func LogOnError(err error, msg string)

func NewReceiver

func NewReceiver(rabbitmqURL, queueName, webEndpoint string) (*receiver, error)

func NewSender

func NewSender(rabbitmqURL string) (*sender, error)

func RandStr

func RandStr() string

Types

type MaestroRequest

type MaestroRequest struct {
	Text           string `json:"text" bson:"text"`
	TextFormat     string `json:"text_format" bson:"text_format"`
	SourceLanguage string `json:"source_language" bson:"source_language"`
	TargetLanguage string `json:"target_language" bson:"target_language"`
	UID            string `json:"uid"`
}

func (MaestroRequest) ToJSON

func (r MaestroRequest) ToJSON() []byte

type Receiver

type Receiver interface {
	Close()
	ServeRequestsLoop()
}

type Sender

type Sender interface {
	// Do a request + response using RabbitMQ queues
	Do(req SenderRequest) (*SenderResponse, error)
	// Release all resources
	Close()
}

Sender is an "sidecar" that almost implements a http.Client capable of doing POST/GET/PUT requests using rabbitMQ queues and sidecar processes

type SenderRequest

type SenderRequest struct {
	// fields mimmick their HTTP equivalents
	Host        string
	Method      string
	Path        string
	Body        []byte
	ContentType string

	// ID is required for Sender to identify the response that is sent in a different msg queue
	ID string
	// Timeout for request/response to complete
	Timeout time.Duration
}

SenderRequest mimmicks the data needed for doing an HTTP request

func (*SenderRequest) HasError

func (req *SenderRequest) HasError() error

type SenderResponse

type SenderResponse struct {
	StatusCode int
	Body       []byte
}

Jump to

Keyboard shortcuts

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