Files
query-orchestration/api/queue/poll.go
T
Michael McGuinness b1f8ac453b Merged in feature/baseTemplate (pull request #1)
feat!: base template

* first bit of templating

* codeowners

* linuxbased

* restart

* baseline project

* add grpc api and basic integration test

* startqueue

* queueMsg

* splitscripts

* migrations

* queueintegrationtest

* gateway
2024-12-06 14:38:42 +00:00

48 lines
869 B
Go

package queue
import (
"context"
"log"
"github.com/aws/aws-sdk-go-v2/service/sqs"
)
type Controllers struct {
Name NameController
}
type Queue struct {
Config *QueueConfig
Controllers *Controllers
}
func PollMessages(ctx context.Context, queue *Queue) {
for {
result, err := queue.Config.Client.ReceiveMessage(ctx, &sqs.ReceiveMessageInput{
QueueUrl: &queue.Config.URL,
MaxNumberOfMessages: 1,
WaitTimeSeconds: 2,
VisibilityTimeout: 2,
MessageAttributeNames: []string{
"type",
},
})
if err != nil {
log.Printf("Message Fetch Fail: %v", err)
continue
}
for _, message := range result.Messages {
go func() {
toProcess, err := processMessage(ctx, queue, message)
if !toProcess {
return
}
if err != nil {
log.Printf("Message Process Fail: %v", err)
}
}()
}
}
}