Skip to content

Add ambatukam-go to HTTP Clients section#6435

Open
farhanturu wants to merge 1 commit into
avelino:mainfrom
farhanturu:add-ambatukam-go
Open

Add ambatukam-go to HTTP Clients section#6435
farhanturu wants to merge 1 commit into
avelino:mainfrom
farhanturu:add-ambatukam-go

Conversation

@farhanturu

Copy link
Copy Markdown

What is this?

Add ambatukam-go to the HTTP Clients section.

Why should it be included?

Ambatukam Go is a zero-dependency Go HTTP resilience library that combines 10+ production-grade patterns in one composable API:

  • Retry with exponential/constant/linear backoff + jitter
  • Circuit breaker (closed/open/half-open state machine)
  • Bulkhead (concurrency limiter with bounded queue)
  • Rate limiter (token bucket)
  • Per-attempt timeout
  • Fallback strategy
  • Singleflight (request deduplication)
  • Request ID propagation
  • Hooks (BeforeRequest, AfterResponse, OnRetry, OnStateChange, OnFallback)
  • Generic JSON helpers (GetJSON[T], PostJSON[T])
  • Health check endpoint
  • Metrics interface (Prometheus-ready)

Key differentiators:

  • Zero external dependencies (only stdlib)
  • Go 1.21+ with generics
  • 80+ tests with race detector
  • MIT license
  • Well-documented (README, COOKBOOK, FAQ, MIGRATION guides)

Example

client := ambatukam.New(
    ambatukam.WithTimeout(ambatukam.TimeoutConfig{Timeout: 2 * time.Second}),
    ambatukam.WithRetry(ambatukam.RetryConfig{MaxRetries: 3}),
    ambatukam.WithCircuitBreaker(ambatukam.CircuitConfig{FailureThreshold: 5}),
)
resp, err := client.Get(ctx, "https://api.example.com/users")

Links

Add Ambatukam Go - a composable, idiomatic Go HTTP resilience library with zero dependencies.

Features:
- Retry with exponential/constant/linear backoff + jitter
- Circuit breaker (closed/open/half-open state machine)
- Bulkhead (concurrency limiter with bounded queue)
- Rate limiter (token bucket)
- Per-attempt timeout
- Fallback strategy
- Singleflight (request deduplication)
- Request ID propagation
- Hooks (BeforeRequest, AfterResponse, OnRetry, OnStateChange, OnFallback)
- Generic JSON helpers (GetJSON[T], PostJSON[T])
- Health check endpoint
- Metrics interface (Prometheus-ready)

Go 1.21+, zero external dependencies, 80+ tests, MIT license.
@github-actions

Copy link
Copy Markdown

Automated Quality Checks

Required checks

Repo link: missing from PR body

How to fix: Add the following to your PR description:

Forge link: https://github.com/your-org/your-project

❌ **pkg.go.dev**: missing from PR body
  > **How to fix:** Add the following to your PR description:
  > ```
pkg.go.dev: https://pkg.go.dev/github.com/your-org/your-project

Go Report Card: missing from PR body

How to fix: Add the following to your PR description:

goreportcard.com: https://goreportcard.com/report/github.com/your-org/your-project


### Additional checks

⚠️ **Coverage**: missing from PR body
  > **How to fix:** Add a coverage service link to your PR description:
  > ```
Coverage: https://app.codecov.io/gh/your-org/your-project

Popular options: Codecov, Coveralls. Integrate one with your CI to track coverage automatically.


Action needed: one or more required checks failed. Please update your PR body with the missing links and ensure the repository meets the quality standards.

These checks are automated and do not replace maintainer review. See CONTRIBUTING.md for full guidelines.


PR Diff Validation

Content checks

Files changed: only README.md
Single item: one package added
Link text: matches repository name
Description: ends with punctuation
Description tone: no promotional language detected
Category size: HTTP Clients has 26 items

Automated diff validation — does not replace maintainer review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants