Current section

Files

Jump to
retort lib retort amqp default.ex
Raw

lib/retort/amqp/default.ex

defmodule Retort.AMQP.Default do
@moduledoc """
Uses the `AMQP` package to setup a channel and queue.
"""
@behaviour Retort.AMQP
# Functions
@spec consume(%AMQP.Channel{}, String.t) :: {:ok, String.t}
def consume(channel = %AMQP.Channel{}, queue) when is_binary(queue), do: AMQP.Basic.consume(channel, queue)
@spec declare_queue(%AMQP.Channel{}, String.t) ::
{:ok, %{queue: String.t, message_count: non_neg_integer, consumer_count: non_neg_integer}}
def declare_queue(channel = %AMQP.Channel{}, queue) when is_binary(queue) do
AMQP.Queue.declare(channel, queue, durable: false)
end
@spec open(%AMQP.Connection{}) :: {:ok, %AMQP.Channel{}}
def open(connection = %AMQP.Connection{}), do: AMQP.Channel.open(connection)
@spec prefetch_count(%AMQP.Channel{}, pos_integer) :: :ok
def prefetch_count(channel = %AMQP.Channel{}, prefetch_count)
when is_integer(prefetch_count) and prefetch_count > 0 do
AMQP.Basic.qos(channel, prefetch_count: prefetch_count)
end
end