README

Stellar Event Service

Stellar provides an internal distributed event system for services to communicate. Stellar uses the NATS scalable event service. It is simple and straightforward making an incredibly reliable messaging system. One example of how this is used is with the Application service. It publishes a message whenever an application is updated (created, removed, etc). The proxy service subscribes to the application subject and reloads the proxy service whenever there is an update.

Stellar uses the typeurl package from containerd to marshal an Any type used in the Stellar event message.

Here is an example of using the Stellar Event service:

stream, err := c.EventsService().Subscribe(context.Background(), &eventsapi.SubscribeRequest{
	Subject: "stellar.>",
})
if err != nil {
	logrus.WithError(err).Error("error subscribing to application events")
	return
}

for {
	evt, err := stream.Recv()
	if err != nil {
		logrus.WithError(err).Error("error subscribing to application events")
		return
	}

	logrus.Infof("event %+v received", evt)
}

To publish an event, there is a helper function, PublishEvent:

c, err := s.client()
if err != nil {
	return err
}
defer c.Close()

if err := stellar.PublishEvent(c, "subject", v); err != nil {
	return err
}
Expand ▾ Collapse ▴

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func New

func New(cfg *stellar.Config, a *element.Agent) (*service, error)

Types

This section is empty.