ConduitAMQP

An AMQP adapter for Conduit.

Installation

This package can be installed as:

  1. Add conduit_amqp to your list of dependencies in mix.exs:
```elixir
def deps do
[{:conduit_amqp, "~> 0.3.0"}]
end
```
  1. Ensure conduit_amqp is started before your application:
```elixir
def application do
[applications: [:conduit_amqp]]
end
```

Configuring the Adapter

# config/config.exs
config :my_app, MyApp.Broker,
adapter: ConduitAMQP,
url: "amqp://my_app:secret@my-rabbit-host.com"

For the full set of options, see ConduitAQMP.

Configuring Exchanges

You can define exchanges with the exchange macro in the configure block of your Broker. The exchange macro accepts the name of the exchange and options for the exchange.

Options

Example

defmodule MyApp.Broker do
use Conduit.Broker, otp_app: :my_app
configure do
exchange "my.topic", type: "topic", durable: true
end
end

Configuring Queues

You can define queues with the queue macro in the configure block of your Broker. The queue macro accepts the name of the queue and options for the exchange.

Options

Example

defmodule MyApp.Broker do
use Conduit.Broker, otp_app: :my_app
configure do
queue "my.queue", from: ["#.created.user"], exchange: "amq.topic", durable: true
end
end

Publishing Messages

TODO

Special Headers

TODO

Architecture

ConduitAQMP architecture

When ConduitAMQP is used as an adapter for Conduit, it starts ConduitAMQP as a child supervisor. ConduitAMQP starts:

  1. ConduitAQMP.ConnPool - Creates and supervises a pool of AMQP connections.
  2. ConduitAMQP.PubSub - Creates and supervises ConduitAMQP.PubPool and ConduitAMQP.SubPool.
  3. ConduitAMQP.Subscribers - A supervisor for subscribers that process messages.