diff --git a/elixir/emit_log.exs b/elixir/emit_log.exs new file mode 100644 index 00000000..730399d0 --- /dev/null +++ b/elixir/emit_log.exs @@ -0,0 +1,14 @@ +{:ok, connection} = AMQP.Connection.open +{:ok, channel} = AMQP.Channel.open(connection) + +message = + case System.argv do + [] -> "Hello World!" + words -> Enum.join(words, " ") + end + +AMQP.Exchange.declare(channel, "logs", :fanout) +AMQP.Basic.publish(channel, "logs", "", message) +IO.puts " [x] Sent '#{message}'" + +AMQP.Connection.close(connection) diff --git a/elixir/receive_logs.exs b/elixir/receive_logs.exs new file mode 100644 index 00000000..f5fe71c1 --- /dev/null +++ b/elixir/receive_logs.exs @@ -0,0 +1,21 @@ +defmodule ReceiveLogs do + def wait_for_messages(channel) do + receive do + {:basic_deliver, payload, _meta} -> + IO.puts " [x] Received #{payload}" + + wait_for_messages(channel) + end + end +end + +{:ok, connection} = AMQP.Connection.open +{:ok, channel} = AMQP.Channel.open(connection) + +AMQP.Exchange.declare(channel, "logs", :fanout) +{:ok, %{queue: queue_name}} = AMQP.Queue.declare(channel, "", exclusive: true) +AMQP.Queue.bind(channel, queue_name, "logs") +AMQP.Basic.consume(channel, queue_name, nil, no_ack: true) +IO.puts " [*] Waiting for messages. To exit press CTRL+C, CTRL+C" + +ReceiveLogs.wait_for_messages(channel)