Documentation
¶
Overview ¶
The worker will send messages to the TopicArn on successful runs.
Concurrency ¶
Handler function will be called concurrently by multiple workers depending on the configuration. It is best to ensure that handler functions can be executed concurrently, especially if they are closures and share state.
Index ¶
Examples ¶
Constants ¶
const DefaultMaxNumberOfMessages = 10
DefaultMaxNumberOfMessages amount of messages received by each SQS request
const DefaultVisibilityTimeout = 60
DefaultVisibilityTimeout SQS visibility Timeout
const DefaultWaitTimeSeconds = 20
DefaultWaitTimeSeconds Long-polling interval for SQS
const DefaultWorkers = 1
DefaultWorkers Number of worker goroutines to spawn, each runs the handler function
Variables ¶
This section is empty.
Functions ¶
func CreateQueue ¶ added in v1.0.3
Create SQS Queue by name.
func GetOrCreateQueue ¶ added in v1.0.3
Get or create an SQS Queue by name.
Types ¶
type Worker ¶
type Worker struct {
QueueUrl string
TopicArn string
Queue sqsiface.SQSAPI
Topic snsiface.SNSAPI
Session *session.Session
Consumers int
Logger *zap.Logger
Handler Handler
Callback Callback
Name string
// contains filtered or unexported fields
}
Worker encapsulates the SQS consumer
Example ¶
package main
import (
"context"
"github.com/ajbeach2/sqsworker"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/sns"
"github.com/aws/aws-sdk-go/service/sqs"
"strings"
)
func main() {
var handlerFunction = func(ctx context.Context, m *sqs.Message, w *sns.PublishInput) error {
*w.Message = strings.ToLower(*m.Body)
return nil
}
sess := session.New(&aws.Config{Region: aws.String("us-east-1")})
queueUrl, _ := sqsworker.GetOrCreateQueue("In", sqs.New(sess))
topicArn, _ := sqsworker.GetOrCreateTopic("Out", sns.New(sess))
w := sqsworker.NewWorker(sess, sqsworker.WorkerConfig{
QueueUrl: queueUrl,
TopicArn: topicArn,
Workers: 1,
Handler: handlerFunction,
Name: "TestApp",
})
w.Run()
}
Output:
func NewWorker ¶
func NewWorker(sess *session.Session, wc WorkerConfig) *Worker
NewWorker constructor for SQS Worker
type WorkerConfig ¶
type WorkerConfig struct {
QueueUrl string
TopicArn string
// If the number of workers is 0, the number of workers defaults to runtime.NumCPU()
Workers int
Handler Handler
Callback Callback
Name string
Logger *zap.Logger
}
WorkerConfig settings for Worker to be passed in NewWorker Contstuctor