Files
fm_be/internal/queue/file_processing_enqueuer.go
2026-07-16 22:16:45 +07:00

48 lines
1.3 KiB
Go

package queue
import (
"context"
"log/slog"
)
type FileProcessingEnqueuer struct {
serializer FileProcessingMessageSerializer
producer QueueProducer
logger *slog.Logger
}
func NewFileProcessingEnqueuer(serializer FileProcessingMessageSerializer, producer QueueProducer, logger *slog.Logger) *FileProcessingEnqueuer {
if logger == nil {
logger = slog.Default()
}
return &FileProcessingEnqueuer{
serializer: serializer,
producer: producer,
logger: logger,
}
}
func (e *FileProcessingEnqueuer) Enqueue(ctx context.Context, job FileProcessingJob) error {
message, err := e.serializer.Serialize(ctx, job)
if err != nil {
return err
}
if err := e.producer.Publish(ctx, *message); err != nil {
e.logger.Error("file queue publish failed",
slog.String("backend", e.producer.Backend()),
slog.String("message_id", message.ID),
slog.String("file_uuid", job.Canonical().FileUUID),
slog.String("correlation_id", message.Attributes["correlation_id"]),
slog.Any("error", err),
)
return err
}
e.logger.Info("file queue published",
slog.String("backend", e.producer.Backend()),
slog.String("message_id", message.ID),
slog.String("file_uuid", job.Canonical().FileUUID),
slog.String("correlation_id", message.Attributes["correlation_id"]),
)
return nil
}