code: func NewBroker(opts ...broker.Option) broker.Broker {
  	// Default options.
  	bopts := &brokerOptions{
  		maxIdle:        DefaultMaxIdle,
  		maxActive:      DefaultMaxActive,
  		idleTimeout:    DefaultIdleTimeout,
  		connectTimeout: DefaultConnectTimeout,
  		readTimeout:    DefaultReadTimeout,
  		writeTimeout:   DefaultWriteTimeout,
  	}
  
  	// Initialize with empty broker options.
  	options := broker.Options{
  		Codec:   json.Marshaler{},
  		Context: context.WithValue(context.Background(), optionsKey, bopts),
  	}
  
  	for _, o := range opts {
  		o(&options)
  	}
  
  	return &redisBroker{
  		opts:  options,
  		bopts: bopts,
  	}
  }
docs: // NewBroker returns a new broker implemented using the Redis pub/sub
  // protocol. The connection address may be a fully qualified IANA address such
  // as: redis://user:secret@localhost:6379/0?foo=bar&qux=baz