Skip to content

Instantly share code, notes, and snippets.

@Logiraptor
Last active December 13, 2017 03:57
Show Gist options
  • Select an option

  • Save Logiraptor/a0ff8811aaea4fd556a88beebd455e56 to your computer and use it in GitHub Desktop.

Select an option

Save Logiraptor/a0ff8811aaea4fd556a88beebd455e56 to your computer and use it in GitHub Desktop.
package main
import (
"database/sql"
"encoding/json"
"log"
"time"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/sqs"
)
type MessageFormat struct {
CheckHit bool `json:"check_hit"`
}
func main() {
sess, err := session.NewSession(&aws.Config{
Region: aws.String("us-east-1"),
// other config here
})
if err != nil {
log.Println("Error creating aws session", err)
return
}
DB, err := sql.Open("postgres", "...connection string...")
if err != nil {
log.Println("Error connecting to database", err)
return
}
queueService := sqs.New(sess)
for {
time.Sleep(10 * time.Second)
resp, err := queueService.ReceiveMessage(&sqs.ReceiveMessageInput{
QueueUrl: aws.String(""),
MaxNumberOfMessages: aws.Int64(1),
})
if err != nil {
log.Println("Error receiving message", err)
continue
}
for _, msg := range resp.Messages {
var message MessageFormat
err := json.Unmarshal([]byte(*msg.Body), &message)
if err != nil {
log.Println("Error parsing JSON", err)
continue
}
_, err = DB.Exec("UPDATE checks SET state = ?", message.CheckHit)
if err != nil {
log.Println("Error updating check state", err)
continue
}
_, err = queueService.DeleteMessage(&sqs.DeleteMessageInput{
QueueUrl: aws.String(""),
ReceiptHandle: msg.ReceiptHandle,
})
if err != nil {
log.Println("Error deleting message", err)
continue
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment