retry-go
stan.go
Our great sponsors
retry-go | stan.go | |
---|---|---|
5 | 2 | |
2,217 | 705 | |
3.5% | 0.4% | |
5.7 | 0.0 | |
7 days ago | 2 months ago | |
Go | Go | |
MIT License | Apache License 2.0 |
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.
stan.go
-
Show HN: DriftDB is an open source WebSocket back end for real-time apps
Nats is not something I see as a competitor for external clients (browsers, mobile apps), primarily because it doesn't handle reconnections / message delivery / quality-of-service / at-least-once or exactly-once delivery (except for MQTT).
> When the connection is lost, your application would have to re-create it and all subscriptions if any. https://github.com/nats-io/stan.go#connection-status
Therefore, I don't see what it adds here. It seems designed for service communication, not client-server. They also don't list browsers as a use case https://docs.nats.io/nats-concepts/overview#use-cases. (though it is of course possible, it's just not ideal IMHO.)
They still have a js/browser client library though if you want to use them: https://github.com/nats-io/nats.ws. And yes, their servers "have websocket support".
-
Go, NATS, gRPC and PostgreSQL clean architecture microservice with monitoring and tracing 👋
Hi, in this article I've tried to make microservice using: 🚀 NATS as message broker gRPC Go implementation of gRPC PostgreSQL as database Jaeger open source, end-to-end distributed tracing Prometheus monitoring and alerting Grafana for to compose observability dashboards with everything from Prometheus MailHog Web and API based SMTP testing Redis Type-safe Redis client for Golang Nginx HTTP and reverse proxy server swag Swagger for Go
What are some alternatives?
kafka-go - Kafka library in Go
Go-NATS-Streaming-gRPC-PostgreSQL - Go Nats Streaming gRPC PostgerSQL emails microservice
pgx - PostgreSQL driver and toolkit for Go
NATS - High-Performance server for NATS.io, the cloud and edge native messaging system.
Echo - High performance, minimalist Go web framework
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.
driftdb - A real-time data backend for browser-based applications.
grpc-go - The Go language implementation of gRPC. HTTP/2 based RPC
mqtt-to-kafka-bridge - Move your messages from MQTT to Apache Kafka in real-time :rocket:
sarama - Sarama is a Go library for Apache Kafka. [Moved to: https://github.com/IBM/sarama]
opentracing-javascript - OpenTracing API for Javascript (both Node and browser). 🛑 This library is DEPRECATED! https://github.com/opentracing/specification/issues/163