README.md

# ExqLimit

[![CI](https://github.com/ananthakumaran/exq_limit/actions/workflows/ci.yml/badge.svg)](<https://github.com/ananthakumaran/exq_limit/actions/workflows/ci.yml/badge.svg>)
[![Hex.pm](https://img.shields.io/hexpm/v/exq_limit.svg)](<https://hex.pm/packages/exq_limit>)
[![Hex Docs](https://img.shields.io/badge/hex-docs-lightgreen.svg)](<https://hexdocs.pm/exq_limit/ExqLimit.Global.html>)
[![License](https://img.shields.io/hexpm/l/exq_limit.svg)](<https://github.com/ananthakumaran/exq_limit/blob/master/LICENSE>)

ExqLimit implements different types of rate limiting for
[Exq](https://github.com/akira/exq) queue.

## Example

```elixir
config :exq,
  queues: [{"default", {ExqLimit.Global, limit: 10}}]
```

## Types

[ExqLimit.Global](https://hexdocs.pm/exq_limit/ExqLimit.Global.html) - Global concurrency limit across all worker nodes.

[ExqLimit.Local](https://hexdocs.pm/exq_limit/ExqLimit.Local.html) - Local concurrency limit for a worker node.

[ExqLimit.GCRA](https://hexdocs.pm/exq_limit/ExqLimit.GCRA.html) - An implementation of GCRA algorithm.

[ExqLimit.And](https://hexdocs.pm/exq_limit/ExqLimit.And.html) - A limiter which allows to combine other limiters.