GenAmqp

GenAMQP is a set of utilities to make microservices using the worker pattern, where you can have many workers listening on a queue and they can execute this in a synchronous or asynchronous.

Installation

If available in Hex, the package can be installed as:

  1. Add gen_amqp to your list of dependencies in mix.exs:
```elixir
def deps do
  [{:gen_amqp, "~> 0.7.0"}]
end

def application do
  [applications: [:gen_amqp]]
end
```
  1. Add the connection url to the config.exs
```elixir
config :gen_amqp, GenAMQP.Conn,
  amqp_url: System.get_env("RABBITCONN") || "amqp://@localhost"
```
  1. Create a module and configure it:
```elixir
defmodule ServerDemo do
  @moduledoc false

  use GenAMQP.Server, event: "demo", size: 5 # amount of instances

  def execute(_) do
    {:reply, "ok"}
  end
end
```
  1. Add it to the app:
```elixir
defmodule DemoApp do
  @moduledoc false

  use Application

  def start(_type, _args) do
    import Supervisor.Spec, warn: false

    # Define supervisors and child supervisors to be supervised
    children = [
      supervisor(ServerDemo, []),
    ]

    opts = [strategy: :one_for_one, name: Core.Supervisor]
    Supervisor.start_link(children, opts)
  end
end
```