go__sqs_demo/back/cmd/consumer/handler.go

33 lines
873 B
Go

package main
import (
"context"
"encoding/json"
"fmt"
"time"
"github.com/aws/aws-sdk-go-v2/service/sqs/types"
"github.com/google/uuid"
)
// HandleDummy is blissfully unaware of SQS, and could therefore be used as a handler for another message queue.
func HandleDummy(_ context.Context, enc *json.Encoder,
msgID uuid.UUID, sentTime time.Time, msg []byte, meta map[string]types.MessageAttributeValue) error {
type EventBody struct {
EventID uuid.UUID `json:"event_id"`
EventTime time.Time `json:"event_time"`
Data map[string]int `json:"data,omitempty"`
Meta map[string]types.MessageAttributeValue
}
evt := EventBody{
EventID: msgID,
EventTime: sentTime,
Meta: meta,
}
if err := json.Unmarshal(msg, &evt.Data); err != nil {
return fmt.Errorf("error parsing body as JSON: %w", err)
}
enc.Encode(evt)
return nil
}