28 lines
483 B
Go
28 lines
483 B
Go
package pubsub
|
|
|
|
import "context"
|
|
|
|
type Subject string
|
|
|
|
func (subject Subject) String() string {
|
|
return string(subject)
|
|
}
|
|
|
|
type Message interface{}
|
|
|
|
type Publishing struct{}
|
|
|
|
type PublishOption func(*Publishing)
|
|
|
|
type Publisher interface {
|
|
Publish(context.Context, Subject, Message, ...PublishOption) error
|
|
}
|
|
|
|
type MessageHandler interface {
|
|
HandleMessage(context.Context, *Message) error
|
|
}
|
|
|
|
type Subscriber interface {
|
|
Subscribe(context.Context, Subject, MessageHandler) error
|
|
}
|