Current section

Files

Jump to
natsio examples sub.exs
Raw

examples/sub.exs

# Copyright 2016 Apcera Inc. All rights reserved.
alias Nats.Client
defmodule Sub do
def receive_loop(pid), do: receive_loop(pid, :infinite)
def receive_loop(pid, how_many) do
IO.puts "starting; receiving #{how_many} messages..."
receive_loop1(pid, how_many)
end
defp receive_loop1(_, 0), do: true
defp receive_loop1(pid, num_left) do
receive do
w -> IO.puts("received NATS message: #{inspect(w)}")
continue(pid, num_left)
end
end
defp continue(pid, :infinite), do: receive_loop1(pid, :infinite)
defp continue(pid, num), do: receive_loop1(pid, num - 1)
end
subject_pat = ">"
IO.puts "starting NATS nats link..."
{:ok, pid} = Client.start_link
receive do after 500 -> true end
IO.puts "subscribing..."
Client.subscribe(pid, self(), subject_pat);
Sub.receive_loop(pid)
IO.puts "exiting..."