pubsub

package
v0.0.5 Latest Latest
Warning

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

Go to latest
Published: Nov 29, 2024 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BasePubSub

type BasePubSub struct {
	ChannelSubscriptionMap *sync.Map
}

BasePubSub ...

func (BasePubSub) Load

func (b BasePubSub) Load(ctx context.Context, id string) (interface{}, error)

Load the subscription

func (BasePubSub) LoadAndDelete

func (b BasePubSub) LoadAndDelete(ctx context.Context, id string) (interface{}, error)

LoadAndDelete the subscription

func (BasePubSub) Store

func (b BasePubSub) Store(ctx context.Context, id string, val interface{})

Store the subscription

type IPubSub

type IPubSub interface {
	Publish(ctx context.Context, publishRequest PublishRequest) error
	PublishBulk(ctx context.Context, publishRequest []PublishRequest) error
	AsyncSubscribe(ctx context.Context, subject ...string) (*subscription.Subscription, error)
	Unsubscribe(ctx context.Context, subs *subscription.Subscription) error
	AddSubscription(ctx context.Context, subject string, subs *subscription.Subscription) error
	RemoveSubscription(ctx context.Context, subject string, subs *subscription.Subscription) error
}

IPubSub is pubsub interface

func New

func New(ctx context.Context, config broker.Config) (IPubSub, error)

New returns a new pubsub type

func NewNats

func NewNats(client natspkg.INats) IPubSub

NewNats returns nats

func NewRedis

func NewRedis(client redispkg.IRedis) IPubSub

NewRedis returns redis

type Nats

type Nats struct {
	BasePubSub
	// contains filtered or unexported fields
}

Nats is wrapper for nats pubsub

func (*Nats) AddSubscription

func (n *Nats) AddSubscription(ctx context.Context, subject string, subs *subscription.Subscription) error

AddSubscription ..

func (*Nats) AsyncSubscribe

func (n *Nats) AsyncSubscribe(ctx context.Context, subject ...string) (*subscription.Subscription, error)

AsyncSubscribe to subscribe to a subject

func (*Nats) Publish

func (n *Nats) Publish(ctx context.Context, request PublishRequest) error

Publish a event

func (*Nats) PublishBulk

func (n *Nats) PublishBulk(ctx context.Context, request []PublishRequest) error

PublishBulk publishes messages in bulk

func (*Nats) RemoveSubscription

func (n *Nats) RemoveSubscription(ctx context.Context, subject string, subs *subscription.Subscription) error

RemoveSubscription ...

func (*Nats) Unsubscribe

func (n *Nats) Unsubscribe(ctx context.Context, subs *subscription.Subscription) error

Unsubscribe from a subject

type PublishRequest

type PublishRequest struct {
	Channel string
	Data    []byte
}

PublishRequest is the publishRequest

type Redis

type Redis struct {
	BasePubSub
	// contains filtered or unexported fields
}

Redis is wrapper over redis pubSub

func (*Redis) AddSubscription

func (r *Redis) AddSubscription(ctx context.Context, subject string, subs *subscription.Subscription) error

AddSubscription ...

func (*Redis) AsyncSubscribe

func (r *Redis) AsyncSubscribe(ctx context.Context, subject ...string) (*subscription.Subscription, error)

AsyncSubscribe to a subject

func (*Redis) Publish

func (r *Redis) Publish(ctx context.Context, request PublishRequest) error

Publish a event to a subject

func (*Redis) PublishBulk

func (r *Redis) PublishBulk(ctx context.Context, request []PublishRequest) error

PublishBulk publishes messages in bulk

func (*Redis) RemoveSubscription

func (r *Redis) RemoveSubscription(ctx context.Context, subject string, subs *subscription.Subscription) error

RemoveSubscription ...

func (*Redis) Unsubscribe

func (r *Redis) Unsubscribe(ctx context.Context, subs *subscription.Subscription) error

Unsubscribe a subject

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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