modelRT/mq/emit.go

29 lines
789 B
Go
Raw Permalink Normal View History

// Package mq provides read or write access to message queue services
package mq
import (
"context"
"modelRT/logger"
"modelRT/mq/event"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/propagation"
)
// TryEmitMessage pushes a message record into MessageMsgChan non-blocking.
// If the channel is full the message is dropped and a warning is logged.
func TryEmitMessage(ctx context.Context, record *event.EventRecord) {
carrier := make(map[string]string)
otel.GetTextMapPropagator().Inject(ctx, propagation.MapCarrier(carrier))
msg := &EventMessage{Record: record, TraceCarrier: carrier}
select {
case MessageMsgChan <- msg:
default:
logger.Warn(ctx, "message channel full, message dropped",
"event_uuid", record.EventUUID,
"category", record.Category,
)
}
}