mirror of
				https://github.com/go-micro/go-micro.git
				synced 2025-10-30 23:27:41 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			81 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package server
 | |
| 
 | |
| import "context"
 | |
| 
 | |
| type HandlerOption func(*HandlerOptions)
 | |
| 
 | |
| type HandlerOptions struct {
 | |
| 	Internal bool
 | |
| 	Metadata map[string]map[string]string
 | |
| }
 | |
| 
 | |
| type SubscriberOption func(*SubscriberOptions)
 | |
| 
 | |
| type SubscriberOptions struct {
 | |
| 	// AutoAck defaults to true. When a handler returns
 | |
| 	// with a nil error the message is acked.
 | |
| 	AutoAck  bool
 | |
| 	Queue    string
 | |
| 	Internal bool
 | |
| 	Context  context.Context
 | |
| }
 | |
| 
 | |
| // EndpointMetadata is a Handler option that allows metadata to be added to
 | |
| // individual endpoints.
 | |
| func EndpointMetadata(name string, md map[string]string) HandlerOption {
 | |
| 	return func(o *HandlerOptions) {
 | |
| 		o.Metadata[name] = md
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // Internal Handler options specifies that a handler is not advertised
 | |
| // to the discovery system. In the future this may also limit request
 | |
| // to the internal network or authorised user.
 | |
| func InternalHandler(b bool) HandlerOption {
 | |
| 	return func(o *HandlerOptions) {
 | |
| 		o.Internal = b
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // Internal Subscriber options specifies that a subscriber is not advertised
 | |
| // to the discovery system.
 | |
| func InternalSubscriber(b bool) SubscriberOption {
 | |
| 	return func(o *SubscriberOptions) {
 | |
| 		o.Internal = b
 | |
| 	}
 | |
| }
 | |
| func NewSubscriberOptions(opts ...SubscriberOption) SubscriberOptions {
 | |
| 	opt := SubscriberOptions{
 | |
| 		AutoAck: true,
 | |
| 		Context: context.Background(),
 | |
| 	}
 | |
| 
 | |
| 	for _, o := range opts {
 | |
| 		o(&opt)
 | |
| 	}
 | |
| 
 | |
| 	return opt
 | |
| }
 | |
| 
 | |
| // DisableAutoAck will disable auto acking of messages
 | |
| // after they have been handled.
 | |
| func DisableAutoAck() SubscriberOption {
 | |
| 	return func(o *SubscriberOptions) {
 | |
| 		o.AutoAck = false
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // Shared queue name distributed messages across subscribers
 | |
| func SubscriberQueue(n string) SubscriberOption {
 | |
| 	return func(o *SubscriberOptions) {
 | |
| 		o.Queue = n
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // SubscriberContext set context options to allow broker SubscriberOption passed
 | |
| func SubscriberContext(ctx context.Context) SubscriberOption {
 | |
| 	return func(o *SubscriberOptions) {
 | |
| 		o.Context = ctx
 | |
| 	}
 | |
| }
 |