Skip to content

Instantly share code, notes, and snippets.

@knewter
Created August 18, 2014 22:38
Show Gist options
  • Save knewter/b50a306960812268be21 to your computer and use it in GitHub Desktop.
Save knewter/b50a306960812268be21 to your computer and use it in GitHub Desktop.
defmodule TestConsumer do
use Exrabbit.Consumer.DSL,
exchange: "test_topic_x", new_queue: "", no_ack: false
use GenServer
require Lager
def start_link(level) do
GenServer.start_link(__MODULE__, [level])
end
init [log_level] do
{:ok, log_level, binding_key: log_level}
end
on %Message{body: body}=msg, level, consumer do
log(level, "#{inspect self()}: Got message with level #{level} and payload #{body}")
{:ack, level}
end
defp log("info", msg) do
Lager.info(msg)
end
defp log("debug", msg) do
Lager.debug(msg)
end
defp log("error", msg) do
Lager.error(msg)
end
end
defmodule RabbitEchoer do
alias Exrabbit.Producer
alias Exrabbit.Consumer
use Exrabbit.Records
def run do
exchange = exchange_declare(exchange: "test_topic_x", type: "topic")
producer = Producer.new(exchange: exchange)
{:ok, pid} = TestConsumer.start_link("info")
IO.puts "#{inspect pid} is an info TestConsumer"
Producer.publish(producer, "just a log message", routing_key: "info")
Producer.shutdown(producer)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment