Files
query-orchestration/api/queue/poll.go
T
Michael McGuinness fc4214336e normaliseeol
2024-12-19 11:44:19 +00:00

49 lines
912 B
Go

package queue
import (
"context"
"gotemplate/internal/queue"
"log"
"github.com/aws/aws-sdk-go-v2/service/sqs"
)
type Controllers struct {
Document DocumentController
}
type Queue struct {
Config *queue.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)
}
}()
}
}
}