queue

package
v3.1.2 Latest Latest
Warning

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

Go to latest
Published: Apr 20, 2024 License: MIT Imports: 7 Imported by: 0

Documentation

Overview

Package queue provides SQS queue manipulations on the top of stripe/aws-go.

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func BuildBatchRequestEntry

func BuildBatchRequestEntry(messages ...BatchMessage) ([]*sqs.SendMessageBatchRequestEntry, map[string]int)

BuildBatchRequestEntry builds batch entries and id2index map.

func GetQueueURL

func GetQueueURL(s sqsiface.SQSAPI, name string) (*string, error)

GetQueueURL wraps GetQueueURLWithContext using context.Background.

func GetQueueURLWithContext added in v3.1.0

func GetQueueURLWithContext(ctx context.Context, s sqsiface.SQSAPI, name string) (*string, error)

GetQueueURLWithContext returns a URL for the given queue name.

func NewBatchError

func NewBatchError(id2index map[string]int, errors []*sqs.BatchResultErrorEntry) error

NewBatchError composes an error from errors if available.

Types

type BatchChangeMessageVisibility

type BatchChangeMessageVisibility struct {
	ReceiptHandle     *string
	VisibilityTimeout int64
}

A BatchChangeMessageVisibility represents each request to change a visibility timeout.

type BatchError

type BatchError struct {
	Index       int
	Code        string
	Message     string
	SenderFault bool
}

A BatchError represents an error for batch operations such as SendMessageBatch and ChangeMessageVisibilityBatch. Index can be used to identify a message causing the error. See SendMessageBatch how to handle an error in batch operation.

func IsBatchError

func IsBatchError(err error) (errors []*BatchError, ok bool)

IsBatchError checks that err contains BatchError. If err contains BatchError, it returns []*BatchError, true. If not, it returns nil, false.

func (*BatchError) Error

func (e *BatchError) Error() string

type BatchMessage

type BatchMessage struct {
	Body    string
	Options []option.SendMessageInput
}

A BatchMessage represents each request to send a message. Options are used to change parameters for the message.

type Queue

type Queue struct {
	SQS sqsiface.SQSAPI
	URL *string
}

A Queue is an SQS queue which holds queue url in URL. Queue allows you to call actions without queue url for every call.

func MustNew

func MustNew(s sqsiface.SQSAPI, name string) *Queue

MustNew initializes Queue with name. It will panic when it fails to initialize a queue.

func New

func New(s sqsiface.SQSAPI, name string) (*Queue, error)

New initializes Queue with name.

func (*Queue) ChangeMessageVisibility

func (q *Queue) ChangeMessageVisibility(receiptHandle *string, visibilityTimeout int64) error

ChangeMessageVisibility wraps ChangeMessageVisibilityWithContext using context.Background.

func (*Queue) ChangeMessageVisibilityBatch

func (q *Queue) ChangeMessageVisibilityBatch(opts ...BatchChangeMessageVisibility) error

ChangeMessageVisibilityBatch wraps ChangeMessageVisibilityBatchWithContext using context.Background.

func (*Queue) ChangeMessageVisibilityBatchWithContext added in v3.1.0

func (q *Queue) ChangeMessageVisibilityBatchWithContext(ctx context.Context, opts ...BatchChangeMessageVisibility) error

ChangeMessageVisibilityBatchWithContext changes a visibility timeout for each message in opts.

func (*Queue) ChangeMessageVisibilityWithContext added in v3.1.0

func (q *Queue) ChangeMessageVisibilityWithContext(ctx context.Context, receiptHandle *string, visibilityTimeout int64) error

ChangeMessageVisibilityWithContext changes a message visibiliy timeout.

func (*Queue) DeleteMessage

func (q *Queue) DeleteMessage(receiptHandle *string) error

DeleteMessage wraps DeleteMessageWithContext using context.Background.

func (*Queue) DeleteMessageBatch

func (q *Queue) DeleteMessageBatch(receiptHandles ...*string) error

DeleteMessageBatch wraps DeleteMessageBatchWithContext using context.Background.

func (*Queue) DeleteMessageBatchWithContext added in v3.1.0

func (q *Queue) DeleteMessageBatchWithContext(ctx context.Context, receiptHandles ...*string) error

DeleteMessageBatchWithContext deletes messages from SQS queue.

func (*Queue) DeleteMessageWithContext added in v3.1.0

func (q *Queue) DeleteMessageWithContext(ctx context.Context, receiptHandle *string) error

DeleteMessage deletes a message from SQS queue.

func (*Queue) DeleteQueue

func (q *Queue) DeleteQueue() error

DeleteQueue wraps DeleteQueueWithContext using context.Background.

func (*Queue) DeleteQueueWithContext added in v3.1.0

func (q *Queue) DeleteQueueWithContext(ctx context.Context) error

DeleteQueue deletes a queue in SQS.

func (*Queue) PurgeQueue

func (q *Queue) PurgeQueue() error

PurgeQueue wraps PurgeQueueWithContext using context.Background.

func (*Queue) PurgeQueueWithContext added in v3.1.0

func (q *Queue) PurgeQueueWithContext(ctx context.Context) error

PurgeQueue purges messages in SQS queue. It deletes all messages in SQS queue.

func (*Queue) ReceiveMessage

func (q *Queue) ReceiveMessage(opts ...option.ReceiveMessageInput) ([]*sqs.Message, error)

ReceiveMessage wraps ReceiveMessageWithContext using context.Background.

func (*Queue) ReceiveMessageWithContext added in v3.1.0

func (q *Queue) ReceiveMessageWithContext(ctx context.Context, opts ...option.ReceiveMessageInput) ([]*sqs.Message, error)

ReceiveMessage receives messages from SQS queue. opts are used to change parameters for a request.

func (*Queue) SendMessage

func (q *Queue) SendMessage(body string, opts ...option.SendMessageInput) (*sqs.SendMessageOutput, error)

SendMessage wraps SendMessageWithContext using context.Background.

Example
package main

import (
	"log"

	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/service/sqs"
	"github.com/nabeken/aws-go-sqs/v3/queue"
	"github.com/nabeken/aws-go-sqs/v3/queue/option"
)

func main() {
	// Create SQS instance
	s := sqs.New(session.Must(session.NewSession()))

	// Create Queue instance
	q, err := queue.New(s, "example-queue-name")
	if err != nil {
		log.Fatal(err)
	}

	// MessageAttributes
	attrs := map[string]interface{}{
		"ATTR1": "STRING!!",
		"ATTR2": 12345,
	}

	if _, err := q.SendMessage("MESSAGE BODY", option.MessageAttributes(attrs)); err != nil {
		log.Fatal(err)
	}

	log.Print("successed!")
}
Output:

func (*Queue) SendMessageBatch

func (q *Queue) SendMessageBatch(messages ...BatchMessage) error

SendMessageBatch wraps SendMessageBatchWithContext using context.Background.

Example
package main

import (
	"log"

	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/service/sqs"
	"github.com/nabeken/aws-go-sqs/v3/queue"
	"github.com/nabeken/aws-go-sqs/v3/queue/option"
)

func main() {
	// Create SQS instance
	s := sqs.New(session.Must(session.NewSession()))

	// Create Queue instance
	q, err := queue.New(s, "example-queue-name")
	if err != nil {
		log.Fatal(err)
	}

	// MessageAttributes
	attrs := map[string]interface{}{
		"ATTR1": "STRING!!",
	}

	// Create messages for batch operation
	batchMessages := []queue.BatchMessage{
		queue.BatchMessage{
			Body: "success",
		},
		queue.BatchMessage{
			Body:    "failed",
			Options: []option.SendMessageInput{option.MessageAttributes(attrs)},
		},
	}

	err = q.SendMessageBatch(batchMessages...)
	if err != nil {
		batchErrors, ok := queue.IsBatchError(err)
		if !ok {
			log.Fatal(err)
		}
		for _, e := range batchErrors {
			if e.SenderFault {
				// Continue if the failure is on the client side.
				log.Print(e)
				continue
			}
			// Retry if the failure is on the server side
			// You can use e.Index to identify the message
			// failedMessage := batchMessages[e.Index]
		}
	}
}
Output:

func (*Queue) SendMessageBatchWithContext added in v3.1.0

func (q *Queue) SendMessageBatchWithContext(ctx context.Context, messages ...BatchMessage) error

SendMessageBatch sends messages to SQS queue.

func (*Queue) SendMessageWithContext added in v3.1.0

func (q *Queue) SendMessageWithContext(ctx context.Context, body string, opts ...option.SendMessageInput) (*sqs.SendMessageOutput, error)

SendMessageWithContext sends a message to an SQS queue. opts are used to change parameters for a message.

Directories

Path Synopsis
Package option provides adapters to change a parameter in SQS request.
Package option provides adapters to change a parameter in SQS request.

Jump to

Keyboard shortcuts

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