wormhole-explorer/pipeline/topic/vaa_sns.go

38 lines
847 B
Go

package topic
import (
"context"
"encoding/json"
"fmt"
"github.com/wormhole-foundation/wormhole-explorer/pipeline/internal/sns"
"go.uber.org/zap"
)
// SQS represents a VAA queue in SNS.
type SNS struct {
producer *sns.Producer
logger *zap.Logger
}
// NewVAASNS creates a VAA topic in SNS instances.
func NewVAASNS(producer *sns.Producer, logger *zap.Logger) *SNS {
s := &SNS{
producer: producer,
logger: logger,
}
return s
}
// Publish sends the message to a SNS topic.
func (s *SNS) Publish(ctx context.Context, message *Event) error {
body, err := json.Marshal(message)
if err != nil {
return err
}
groupID := fmt.Sprintf("%d/%s", message.ChainID, message.EmitterAddress)
s.logger.Debug("Publishing message", zap.String("groupID", groupID))
return s.producer.SendMessage(ctx, groupID, message.ID, string(body))
}