retry-go
backoff
Our great sponsors
retry-go | backoff | |
---|---|---|
5 | 6 | |
2,223 | 3,249 | |
3.5% | - | |
6.2 | 3.1 | |
12 days ago | about 1 month ago | |
Go | Go | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
retry-go
-
Retry operations with constant, delays and exponential backoff strategies
Why this instead of https://github.com/avast/retry-go or https://github.com/cenkalti/backoff ?
- Network Error Handling
-
retry package for golang
What is that advantage of your package compared to other ones like https://github.com/avast/retry-go?
-
Go, NATS, gRPC and PostgreSQL clean architecture microservice with monitoring and tracing 👋
processCreateEmail handling create email events, it's start tracing span, increase metrics counters, then unmarshal message data, and call usecase create method, if it fails, we retry for 3 times using retry-go, if it still fails, we check is the current message redelivered and if redelivery count > maxRedeliveryCount(it's up to your business logic, here is 3 times limit), handling error cases can be very different and depends on your service business logic, in this example used Dead Letter Queue approach.
-
Go, Kafka, gRPC and MongoDB microservice with metrics and tracing 👋
Workers validate message body then call usecase, if it's returns error, try for retry, good library for retry is retry-go, if again fails, publish error message to very simple Dead Letter Queue as i said, didn't implement here any interesting business logic, so in real production we have to handle error cases in the better way. And after message success processed commit it.
backoff
-
Retry operations with constant, delays and exponential backoff strategies
Why this instead of https://github.com/avast/retry-go or https://github.com/cenkalti/backoff ?
-
Gosyphus: Retries with exponential backoff
What about https://github.com/cenkalti/backoff?
-
Libraries you use most of your projects?
In addition to the ones you mentioned, I also always use: + sqlc - Compile SQL to type-safe code + gqlgen - generate GraphQL server from schema + oapi-codegen - Go client and server boilerplate from OpenAPI 3 specifications + pester - Go http calls with retries and backoff + backoff - exponential backoff algorithm in Go
-
retry package for golang
May I suggest directions to improve? - add option for exponential or linear backoff - stop early on non-retriable errors Example: https://pkg.go.dev/github.com/cenkalti/backoff/v4 (do not know about its author, just a package I've been using).
- How to implement a retry mechanism for goroutines?
-
Queuing up API requests with waitgroups?
I have used https://github.com/cenkalti/backoff a few years ago and I don't know if it's the best candidate at this point but it's worth to consider in combination with or as an alternative to x/time/rate if you are going that route.
What are some alternatives?
kafka-go - Kafka library in Go
go-wiki - This is a Golang open-source module that makes it easy to access and parse data from Wikipedia (Wikipedia API wrapper)
pgx - PostgreSQL driver and toolkit for Go
try - Simple idiomatic retry package for Go
Echo - High performance, minimalist Go web framework
pp - Colored pretty printer for Go language
Gin - Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin.
sqlc - Generate type-safe code from SQL
grpc-go - The Go language implementation of gRPC. HTTP/2 based RPC
pretty - Pretty printing for Go values
sarama - Sarama is a Go library for Apache Kafka. [Moved to: https://github.com/IBM/sarama]
retry - Small, full-featured, 100% test-covered retry package for golang.