Documentation
¶
Index ¶
- Constants
- func DecodeEventData[T any](ctx context.Context, event *dto.Event) (T, error)
- func GetEventType[T any]() string
- type BaseEventListener
- type EventListener
- type EventsService
- type PublisherConfig
- type RabbitMQPublisher
- func (r *RabbitMQPublisher) Close() error
- func (r *RabbitMQPublisher) PublishFanoutEvent(ctx context.Context, entityId string, entityType enum.EntityType, ...) error
- func (r *RabbitMQPublisher) PublishNotification(ctx context.Context, tenant string, entityId string, ...)
- func (r *RabbitMQPublisher) PublishNotificationBulk(ctx context.Context, tenant string, entityIds []string, ...)
- func (r *RabbitMQPublisher) PublishReceiveEmailEvent(ctx context.Context, message dto.EmailReceived) error
- func (r *RabbitMQPublisher) PublishSendEmailEvent(ctx context.Context, email *models.EmailStore) error
- type RabbitMQSubscriber
- type SubscriberConfig
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 GetEventType ¶ added in v0.1.6
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
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 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)
Click to show internal directories.
Click to hide internal directories.