mongodb

package
v0.16.0 Latest Latest
Warning

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

Go to latest
Published: Dec 8, 2022 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// Interval in which to do a sweep of various unprocessed events.
	PeriodicSweepInterval = 15 * time.Second

	// Settings for how old different kind of unprocessed events needs to be
	// to be processed by the periodic sweep.
	PeriodicSweepAge   = 15 * time.Second
	PeriodicCleanupAge = 10 * time.Minute
)

Functions

func NewGracefulContext

func NewGracefulContext(ctx context.Context, idle, forceAfter time.Duration) (
	c context.Context,
	keepAlive func(),
	cancel func(),
)

NewGracefulContext will create a GracefulContext with an idle time which should be longer than a typical operation cadence, and a "force after" duration which should be long enough to let some amount of operations to finish.

Types

type GracefulContext

type GracefulContext struct {
	context.Context
	// contains filtered or unexported fields
}

GracefulContext is a context that can be gracefully cancelled after the original context has been canceled, but with a grace period to let operations finish. The KeepAlive method should be used to signal that operations are still ongoing.

func (*GracefulContext) Done

func (g *GracefulContext) Done() <-chan struct{}

Done implements the Done method of the context.Context interface.

type Option

type Option func(*Outbox) error

Option is an option setter used to configure creation.

func WithWatchToken

func WithWatchToken(token string) Option

WithWatchToken sets a token, used for watching outbox events stored with the same token. This can be used to let parts of a system watch their own events by setting a common token, for example a service name. If each host should watch their local events the hostname can often be used.

type Outbox

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

Outbox implements an eventhorizon.Outbox for MongoDB.

func NewOutbox

func NewOutbox(uri, dbName string, options ...Option) (*Outbox, error)

NewOutbox creates a new Outbox with a MongoDB URI: `mongodb://hostname`.

func NewOutboxWithClient

func NewOutboxWithClient(client *mongo.Client, dbName string, options ...Option) (*Outbox, error)

NewOutboxWithClient creates a new Outbox with a client.

func (*Outbox) AddHandler

func (o *Outbox) AddHandler(ctx context.Context, m eh.EventMatcher, h eh.EventHandler) error

AddHandler implements the AddHandler method of the eventhorizon.Outbox interface.

func (*Outbox) Client

func (o *Outbox) Client() *mongo.Client

Client returns the MongoDB client used by the outbox. To use the outbox with the EventStore it needs to be created with the same client.

func (*Outbox) Close

func (o *Outbox) Close() error

Close implements the Close method of the eventhorizon.EventBus interface.

func (*Outbox) Errors

func (o *Outbox) Errors() <-chan error

Errors implements the Errors method of the eventhorizon.EventBus interface.

func (*Outbox) HandleEvent

func (o *Outbox) HandleEvent(ctx context.Context, event eh.Event) error

HandleEvent implements the HandleEvent method of the eventhorizon.EventHandler interface.

func (*Outbox) HandlerType

func (o *Outbox) HandlerType() eh.EventHandlerType

HandlerType implements the HandlerType method of the eventhorizon.EventHandler interface.

func (*Outbox) Start

func (o *Outbox) Start()

Start implements the Start method of the eventhorizon.Outbox interface.

Jump to

Keyboard shortcuts

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