* broker ErrorHandler option Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org> * rewrite Event interface, add error Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org> * implement new interface Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org> * change ErrorHandler func to broker.Handler Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org> * fix Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
		
			
				
	
	
		
			68 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Package broker is an interface used for asynchronous messaging
 | 
						|
package broker
 | 
						|
 | 
						|
// Broker is an interface used for asynchronous messaging.
 | 
						|
type Broker interface {
 | 
						|
	Init(...Option) error
 | 
						|
	Options() Options
 | 
						|
	Address() string
 | 
						|
	Connect() error
 | 
						|
	Disconnect() error
 | 
						|
	Publish(topic string, m *Message, opts ...PublishOption) error
 | 
						|
	Subscribe(topic string, h Handler, opts ...SubscribeOption) (Subscriber, error)
 | 
						|
	String() string
 | 
						|
}
 | 
						|
 | 
						|
// Handler is used to process messages via a subscription of a topic.
 | 
						|
// The handler is passed a publication interface which contains the
 | 
						|
// message and optional Ack method to acknowledge receipt of the message.
 | 
						|
type Handler func(Event) error
 | 
						|
 | 
						|
type Message struct {
 | 
						|
	Header map[string]string
 | 
						|
	Body   []byte
 | 
						|
}
 | 
						|
 | 
						|
// Event is given to a subscription handler for processing
 | 
						|
type Event interface {
 | 
						|
	Topic() string
 | 
						|
	Message() *Message
 | 
						|
	Ack() error
 | 
						|
	Error() error
 | 
						|
}
 | 
						|
 | 
						|
// Subscriber is a convenience return type for the Subscribe method
 | 
						|
type Subscriber interface {
 | 
						|
	Options() SubscribeOptions
 | 
						|
	Topic() string
 | 
						|
	Unsubscribe() error
 | 
						|
}
 | 
						|
 | 
						|
var (
 | 
						|
	DefaultBroker Broker = NewBroker()
 | 
						|
)
 | 
						|
 | 
						|
func Init(opts ...Option) error {
 | 
						|
	return DefaultBroker.Init(opts...)
 | 
						|
}
 | 
						|
 | 
						|
func Connect() error {
 | 
						|
	return DefaultBroker.Connect()
 | 
						|
}
 | 
						|
 | 
						|
func Disconnect() error {
 | 
						|
	return DefaultBroker.Disconnect()
 | 
						|
}
 | 
						|
 | 
						|
func Publish(topic string, msg *Message, opts ...PublishOption) error {
 | 
						|
	return DefaultBroker.Publish(topic, msg, opts...)
 | 
						|
}
 | 
						|
 | 
						|
func Subscribe(topic string, handler Handler, opts ...SubscribeOption) (Subscriber, error) {
 | 
						|
	return DefaultBroker.Subscribe(topic, handler, opts...)
 | 
						|
}
 | 
						|
 | 
						|
func String() string {
 | 
						|
	return DefaultBroker.String()
 | 
						|
}
 |