64 lines
2.1 KiB
Go
64 lines
2.1 KiB
Go
// Package messagemq defines RocketMQ payloads owned by activity-service message modules.
|
|
package messagemq
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
MessageTypeActionOutboxEvent = "message_action_outbox_event"
|
|
|
|
TagMessageActionOutboxEvent = "message_action_outbox_event"
|
|
)
|
|
|
|
// ActionOutboxMessage is the MQ representation of one committed message_action_outbox fact.
|
|
type ActionOutboxMessage struct {
|
|
MessageType string `json:"message_type"`
|
|
AppCode string `json:"app_code"`
|
|
EventID string `json:"event_id"`
|
|
EventType string `json:"event_type"`
|
|
ConfirmID string `json:"confirm_id"`
|
|
PayloadJSON string `json:"payload_json"`
|
|
OccurredAtMS int64 `json:"occurred_at_ms"`
|
|
}
|
|
|
|
// EncodeActionOutboxMessage serializes a confirm-message fact for notice-service delivery.
|
|
func EncodeActionOutboxMessage(message ActionOutboxMessage) ([]byte, error) {
|
|
message.MessageType = MessageTypeActionOutboxEvent
|
|
if strings.TrimSpace(message.AppCode) == "" ||
|
|
strings.TrimSpace(message.EventID) == "" ||
|
|
strings.TrimSpace(message.EventType) == "" ||
|
|
strings.TrimSpace(message.ConfirmID) == "" ||
|
|
message.OccurredAtMS <= 0 {
|
|
return nil, errors.New("message action outbox message is incomplete")
|
|
}
|
|
if strings.TrimSpace(message.PayloadJSON) == "" {
|
|
message.PayloadJSON = "{}"
|
|
}
|
|
return json.Marshal(message)
|
|
}
|
|
|
|
// DecodeActionOutboxMessage validates one confirm-message MQ body.
|
|
func DecodeActionOutboxMessage(body []byte) (ActionOutboxMessage, error) {
|
|
var message ActionOutboxMessage
|
|
if err := json.Unmarshal(body, &message); err != nil {
|
|
return ActionOutboxMessage{}, err
|
|
}
|
|
if message.MessageType != MessageTypeActionOutboxEvent {
|
|
return ActionOutboxMessage{}, errors.New("unexpected message action outbox message_type")
|
|
}
|
|
if strings.TrimSpace(message.AppCode) == "" ||
|
|
strings.TrimSpace(message.EventID) == "" ||
|
|
strings.TrimSpace(message.EventType) == "" ||
|
|
strings.TrimSpace(message.ConfirmID) == "" ||
|
|
message.OccurredAtMS <= 0 {
|
|
return ActionOutboxMessage{}, errors.New("message action outbox message is incomplete")
|
|
}
|
|
if strings.TrimSpace(message.PayloadJSON) == "" {
|
|
message.PayloadJSON = "{}"
|
|
}
|
|
return message, nil
|
|
}
|