hystrix

package module
v1.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 31, 2019 License: Apache-2.0 Imports: 3 Imported by: 0

README

Micro Hystrix

A go-micro plugin for hystrix-go.

Usage

package main

import (
	"github.com/micro/go-micro"
	"github.com/x-punch/micro-hystrix"
)

func main() {
	service := micro.NewService(micro.WrapClient(hystrix.NewClientWrapper()))
	service.Init(micro.Name("test.srv"), micro.Address(":80"))
	if err := service.Run(); err != nil {
		panic("Failed to run service: " + err.Error())
	}
}

Default Configure in hystrix

var (
	// DefaultTimeout is how long to wait for command to complete, in milliseconds
	DefaultTimeout = 1000
	// DefaultMaxConcurrent is how many commands of the same type can run at the same time
	DefaultMaxConcurrent = 10
	// DefaultVolumeThreshold is the minimum number of requests needed before a circuit can be tripped due to health
	DefaultVolumeThreshold = 20
	// DefaultSleepWindow is how long, in milliseconds, to wait after a circuit opens before testing for recovery
	DefaultSleepWindow = 5000
	// DefaultErrorPercentThreshold causes circuits to open once the rolling measure of errors exceeds this percent of requests
	DefaultErrorPercentThreshold = 50
)

Update default config in hystrix

package main

import (
	"github.com/micro/go-micro"
	"github.com/x-punch/micro-hystrix"
)

func main() {
	hystrix.ConfigureDefault(hystrix.CommandConfig{Timeout: 1000})
	service := micro.NewService(micro.WrapClient(hystrix.NewClientWrapper()))
	service.Init(micro.Name("test.srv"), micro.Address(":80"))
	if err := service.Run(); err != nil {
		panic("Failed to run service: " + err.Error())
	}
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Configure added in v1.0.1

func Configure(cmds map[string]CommandConfig)

Configure applies settings for a set of circuits

func ConfigureCommand added in v1.0.1

func ConfigureCommand(name string, config CommandConfig)

ConfigureCommand applies settings for a circuit

func ConfigureDefault added in v1.0.2

func ConfigureDefault(config CommandConfig)

ConfigureDefault applies default settings for all circuits

func IsCircuitOpenError added in v1.0.2

func IsCircuitOpenError(err error) bool

IsCircuitOpenError represents err is hystrix circuit open error

func IsMaxConcurrencyError added in v1.0.2

func IsMaxConcurrencyError(err error) bool

IsMaxConcurrencyError represents err is hystrix max concurrency err

func IsTimeoutError added in v1.0.2

func IsTimeoutError(err error) bool

IsTimeoutError represents err is hystrix circuit timeout error

func NewClientWrapper

func NewClientWrapper() client.Wrapper

NewClientWrapper returns a hystrix client Wrapper.

Types

type CommandConfig added in v1.0.1

type CommandConfig struct {
	Timeout                int
	MaxConcurrentRequests  int
	RequestVolumeThreshold int
	SleepWindow            int
	ErrorPercentThreshold  int
}

CommandConfig is used to tune circuit settings at runtime

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL