Refactor uuid to id in message handling & processing. (#6)

This commit is contained in:
windyboy
2024-08-14 14:29:24 +08:00
committed by GitHub
parent 8538153cfe
commit bafbbf470c
7 changed files with 33 additions and 28 deletions
+2 -2
View File
@@ -6,7 +6,7 @@ import (
)
type MessageHandler interface {
HandleMessage(msg []byte, uuid []byte) error
HandleMessage(msg []byte, id string) error
}
type MessagePublisher interface {
@@ -18,5 +18,5 @@ type MessageSubscriber interface {
}
type MessageRepository interface {
CreateNew(message *domain.ParsedMessage, uuid []byte) error
CreateNew(message *domain.ParsedMessage) error
}
+7 -21
View File
@@ -25,7 +25,7 @@ func NewHandler(config *config.Config, publisher iface.MessagePublisher, reposit
}
}
func (handler *MessageHandler) HandleMessage(msg []byte, uuid []byte) error {
func (handler *MessageHandler) HandleMessage(msg []byte, id string) error {
handler.mu.Lock()
defer handler.mu.Unlock()
log := utils.GetSugaredLogger()
@@ -36,28 +36,14 @@ func (handler *MessageHandler) HandleMessage(msg []byte, uuid []byte) error {
payload := string(msg)
var parsed *domain.ParsedMessage
if parsed = parsers.Parse(payload); !parsed.Parsed {
log.Infof("not parsed: [%s] : {%s} \n", uuid, payload)
log.Infof("not parsed: [%s] : {%s} \n", id, payload)
} else {
log.Infof("parsed [%s]: %v\n", uuid, parsed.ToString())
parsed.Uuid = id
log.Infof("parsed [%s]: %v\n", id, parsed.ToString())
}
handler.repository.CreateNew(parsed, uuid)
handler.repository.CreateNew(parsed)
handler.publisher.Publish(parsed)
return nil
}
// func (n *MessageHandler) SaveMessage(parsed *domain.ParsedMessage, uuid string) {
// logger := watermill.NewStdLogger(false, false)
// if parsed != nil {
// parsed.Uuid = uuid
// if err := n.hasuraRepo.CreateNew(parsed); err != nil {
// logger.Error("error inserting message", err, map[string]interface{}{"message": parsed})
// }
// logger.Info("message inserted", map[string]interface{}{"message": parsed.Uuid})
// }
// }
// func (n *MessageHandler) Publish(parsed *domain.ParsedMessage) {
// if err := Publish(n.config, parsed); err != nil {
// utils.GetSugaredLogger().Error("error publishing message", err, map[string]interface{}{"message": parsed})
// }
// }
+1
View File
@@ -50,5 +50,6 @@ func (n *NatsPublisher) Publish(parsedMessage interface{}) error {
logger.Errorf("Failed to publish message: %v", err)
return err
}
logger.Infof("Message published: %s", msg.UUID)
return nil
}
+3 -2
View File
@@ -55,10 +55,11 @@ func (n *NatsSubscriber) Subscribe(config *config.Config, handlers iface.Message
}
for msg := range messages {
if err := handlers.HandleMessage(msg.Payload, []byte(msg.UUID)); err == nil {
if err := handlers.HandleMessage(msg.Payload, msg.UUID); err == nil {
logger.Infof("Message handled: %s", msg.UUID)
msg.Ack()
} else {
logger.Error("Failed to handle message", err, map[string]interface{}{"message": msg})
logger.Errorf("Failed to handle message [%s]: %v", msg.UUID, err)
msg.Nack()
}
}
+3
View File
@@ -8,6 +8,8 @@ import (
"strings"
"sync"
"time"
"github.com/google/uuid"
)
const (
@@ -211,6 +213,7 @@ func Parse(rawText string) *domain.ParsedMessage {
}
message.Parsed = true
message.BodyData = bodyData
message.Uuid = uuid.New().String()
return &message
}
+4 -3
View File
@@ -10,7 +10,6 @@ import (
"caatsm/pkg/utils"
"github.com/Khan/genqlient/graphql"
"github.com/google/uuid"
"golang.org/x/oauth2"
)
@@ -34,10 +33,12 @@ func NewHasura(config *config.Config) *HasuraRepository {
}
// InsertParsedMessage inserts a new ParsedMessage into the Hasura GraphQL API
func (hr *HasuraRepository) CreateNew(pm *domain.ParsedMessage, msg_uuid []byte) error {
func (hr *HasuraRepository) CreateNew(pm *domain.ParsedMessage) error {
log := utils.GetSugaredLogger()
bodyString, _ := json.Marshal(pm.BodyData)
secondAddress, _ := json.Marshal(pm.SecondaryAddresses)
var err error
msgUuid := utils.GetUuid(pm.Uuid)
variables := Aviation_telegrams_insert_input{
Message_id: pm.MessageID,
Priority_indicator: pm.PriorityIndicator,
@@ -48,7 +49,7 @@ func (hr *HasuraRepository) CreateNew(pm *domain.ParsedMessage, msg_uuid []byte)
Category: pm.Category,
Date_time: pm.DateTime,
Dispatched_at: pm.DispatchedAt,
Uuid: uuid.Must(uuid.FromBytes(msg_uuid)),
Uuid: msgUuid,
Received_at: pm.ReceivedAt,
Originator: pm.Originator,
Originator_date_time: pm.OriginatorDateTime,
+13
View File
@@ -0,0 +1,13 @@
package utils
import "github.com/google/uuid"
func GetUuid(uuidString string) uuid.UUID {
log := GetSugaredLogger()
result, err := uuid.Parse(uuidString)
if err != nil {
log.Warnf("invalid uuid: %s", uuidString)
return uuid.New()
}
return result
}