* 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()
 | |
| }
 |