A wrapper library for sending and receiving data to/from AWS SQS
The first step is to define all of your environment variables in .env. You can find and example of .env file in the root folder.
| Name | Type | Default |
|---|---|---|
| AWS_ACCESS_KEY_ID | string | |
| AWS_SECRET_ACCESS_KEY | string | |
| AWS_REGION | string | |
| SQS_QUEUE_URL | string | |
| SQS_MAX_RETRIES | string | |
| MAX_NUMBER_OF_MESSAGES | number | 1 |
| VISIBILITY_TIMEOUT | number | 20 |
| WAIT_TIME_SECONDS | number | 0 |
sqsQueue := new(backend.SQSQueue).Init()mav := map[string]*sqs.MessageAttributeValue{
"Title": {
DataType: aws.String("String"),
StringValue: aws.String("The Whistler"),
},
"Author": {
DataType: aws.String("String"),
StringValue: aws.String("Farbod Salimi"),
},
"WeeksOn": {
DataType: aws.String("Number"),
StringValue: aws.String("6"),
},
}
sqsQueue.Publish("message 1", mav)./bin/sqs_wrapper run --handler=echo
./bin/sqs_wrapper run --handler=~/path/to/your/handler/main
./bin/sqs_wrapper --help
Usage: sqs_wrapper <flags> <subcommand> <subcommand args>
Subcommands:
commands list all command names
flags describe all known top-level flags
help describe subcommands and their syntax
run start an IO Loop with the given message handler
Use "sqs_wrapper flags" for a list of top-level flags// Creating a future worker
fw := workers.FutureWorker{
Handler: func (msg *sqs.Message) *sqs.Message {
log.Println(msg)
return msg
},
TimeOut: 5,
}
// Starting an infinite io loop
backend.IOLoop{
QueueWorker: sqsQueue,
Worker: fw,
StopSignal: false,
}.Run()Note: you can interrupt your IO loop by fw.Stop(), for example:
time.AfterFunc(3*time.Second, fw.Stop)