events

package
v0.1.18 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 25, 2025 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Exchange names
	ExchangeMailstackDirect = "mailstack-direct"
	ExchangeCustomerOS      = "customeros"
	ExchangeNotifications   = "notifications"
	ExchangeDeadLetter      = "dead-letter"

	// queues
	QueueNotifications = "notifications"
	QueueMailstack     = "events-mailstack"
	QueueSendEmail     = "send-email"
	QueueReceiveEmail  = "receive-email"
	DLQMailstack       = QueueMailstack + "-dlq"
	DLQNotifications   = QueueNotifications + "-dlq"
	DLQSendEmail       = QueueSendEmail + "-dlq"
	DLQReceiveEmail    = QueueReceiveEmail + "-dlq"

	// routing keys
	RoutingKeyDeadLetter   = "dead-letter"
	RoutingKeySendEmail    = "mailstack-send-email"
	RoutingKeyReceiveEmail = "mailstack-receive-email"

	// Default configurations
	DefaultMessageTTL          = 240 * time.Hour // after TTL message moves to DLQ
	DefaultMaxRetries          = 3
	DefaultPublishTimeout      = 5 * time.Second
	DefaultReconnectBackoff    = time.Second
	DefaultMaxReconnectBackoff = 30 * time.Second
)

Variables

This section is empty.

Functions

func DecodeEventData added in v0.1.6

func DecodeEventData[T any](ctx context.Context, event *dto.Event) (T, error)

func GetEventType added in v0.1.6

func GetEventType[T any]() string

Types

type BaseEventListener added in v0.1.6

type BaseEventListener struct {
	// contains filtered or unexported fields
}

BaseEventListener provides common functionality for all listeners

func NewBaseEventListener added in v0.1.6

func NewBaseEventListener(logger logger.Logger, eventType, queueName string) BaseEventListener

NewBaseEventListener creates a new base event listener

func (BaseEventListener) GetEventType added in v0.1.6

func (b BaseEventListener) GetEventType() string

func (BaseEventListener) GetQueueName added in v0.1.6

func (b BaseEventListener) GetQueueName() string

func (BaseEventListener) ValidateBaseEvent added in v0.1.6

func (b BaseEventListener) ValidateBaseEvent(ctx context.Context, input any) (*dto.Event, error)

type EventListener added in v0.1.6

type EventListener interface {
	Handle(ctx context.Context, baseEvent any) error
	GetEventType() string
	GetQueueName() string
}

EventListener interface defines what all listeners must implement

type EventsService

type EventsService struct {
	Publisher  *RabbitMQPublisher
	Subscriber *RabbitMQSubscriber
}

func NewEventsService

func NewEventsService(rabbitmqURL string, log logger.Logger, publisherConfig *PublisherConfig, subscriberConfig *SubscriberConfig) (*EventsService, error)

func (*EventsService) Close

func (s *EventsService) Close() error

type PublisherConfig

type PublisherConfig struct {
	MessageTTL          time.Duration
	MaxRetries          int
	PublishTimeout      time.Duration
	ReconnectBackoff    time.Duration
	MaxReconnectBackoff time.Duration
}

type RabbitMQPublisher

type RabbitMQPublisher struct {
	// contains filtered or unexported fields
}

func NewRabbitMQPublisher

func NewRabbitMQPublisher(rabbitmqURL string, logger logger.Logger, config *PublisherConfig) (*RabbitMQPublisher, error)

func (*RabbitMQPublisher) Close

func (r *RabbitMQPublisher) Close() error

Close gracefully shuts down the publisher

func (*RabbitMQPublisher) PublishFanoutEvent

func (r *RabbitMQPublisher) PublishFanoutEvent(ctx context.Context, entityId string, entityType enum.EntityType, message interface{}) error

func (*RabbitMQPublisher) PublishNotification added in v0.1.6

func (r *RabbitMQPublisher) PublishNotification(ctx context.Context, tenant string, entityId string, entityType enum.EntityType, details *utils.EventCompletedDetails)

func (*RabbitMQPublisher) PublishNotificationBulk added in v0.1.6

func (r *RabbitMQPublisher) PublishNotificationBulk(ctx context.Context, tenant string, entityIds []string, entityType enum.EntityType, details *utils.EventCompletedDetails)

func (*RabbitMQPublisher) PublishReceiveEmailEvent added in v0.1.13

func (r *RabbitMQPublisher) PublishReceiveEmailEvent(ctx context.Context, message dto.EmailReceived) error

func (*RabbitMQPublisher) PublishSendEmailEvent added in v0.1.6

func (r *RabbitMQPublisher) PublishSendEmailEvent(ctx context.Context, email *models.EmailStore) error

type RabbitMQSubscriber added in v0.1.6

type RabbitMQSubscriber struct {
	// contains filtered or unexported fields
}

func NewRabbitMQSubscriber added in v0.1.6

func NewRabbitMQSubscriber(rabbitmqURL string, logger logger.Logger, config *SubscriberConfig) (*RabbitMQSubscriber, error)

func (*RabbitMQSubscriber) Close added in v0.1.6

func (r *RabbitMQSubscriber) Close() error

func (*RabbitMQSubscriber) ListenQueue added in v0.1.6

func (r *RabbitMQSubscriber) ListenQueue(queueName string) error

ListenQueue starts listening to a standard queue

func (*RabbitMQSubscriber) ListenQueueExclusive added in v0.1.6

func (r *RabbitMQSubscriber) ListenQueueExclusive(queueName string) error

ListenQueueExclusive starts listening to an exclusive queue

func (*RabbitMQSubscriber) RegisterListener added in v0.1.6

func (r *RabbitMQSubscriber) RegisterListener(listener interfaces.EventListener)

type SubscriberConfig added in v0.1.6

type SubscriberConfig struct {
	MaxRetries          int
	ReconnectBackoff    time.Duration
	MaxReconnectBackoff time.Duration
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL