Current section

Files

Jump to
jorb lib jorb backend sqs.ex
Raw

lib/jorb/backend/sqs.ex

defmodule Jorb.Backend.SQS do
@behaviour Jorb.Backend
alias ExAws.SQS
def setup(queue_name) do
SQS.create_queue(queue_name) |> ExAws.request!()
end
def enqueue(queue_name, payload) do
with {:ok, encoded} <- Poison.encode(payload),
message <- SQS.send_message(queue_name, encoded),
{:ok, _response} <- ExAws.request(message) do
{:ok, payload}
else
err -> err
end
end
def pull(queue_name) do
with request <- SQS.receive_message(queue_name, max_number_of_messages: 10),
{:ok, %{body: %{messages: messages}}} <- ExAws.request(request) do
{:ok, messages}
else
err -> err
end
end
def finalize(queue_name, message) do
SQS.delete_message(queue_name, message[:receipt_handle]) |> ExAws.request()
end
def purge(queue_name) do
with request <- SQS.purge_queue(queue_name),
{:ok, _response} <- ExAws.request(request) do
:ok
else
err -> err
end
end
end