# Hystrix in Go

## What is hystrix



## The hytrix settings


```go
type CommandConfig struct {
	Timeout                int    `json:"timeout"`
	CommandGroup           string `json:"command_group"`
	MaxConcurrentRequests  int    `json:"max_concurrent_requests"`
	RequestVolumeThreshold int    `json:"request_volume_threshold"`
	SleepWindow            int    `json:"sleep_window"`
	ErrorPercentThreshold  int    `json:"error_percent_threshold"`
	QueueSizeRejectionThreshold int `json:"queue_size_rejection_threshold"`
}
``` 


* Timeout: how long to wait for the command to complete.
* MaxConcurrentRequests: how many commands of the same type can run at the same time.
* RequestVolumeThreshold: the minimun requests that needed before a circuit can be tripped due to health.
* SleepWindow: how long to wait in milliseconds, to wait after a circuit opens before testing for recovery.
* ErrorPercentThreshold: causes the circuit opens once the rolling measure off errors exceeds this percent of requests.
* QueueSizeRejectionThreshold: reject the requests when the queue size exceeds the given limit.



## An hystrix example
