View Source Subscribing to Messages

After defining a connection with:

defmodule MyApp.MyConnection do
  use RabbitMQStream.Connection
end

You can subscribe to messages from a stream with:

{:ok, _subscription_id} = MyApp.MyConnection.subscribe("stream-01", self(), :next, 999)

The message will be received with the format {:message, RabbitMQStream.Message.Data.DeliverData}.

example

Example

An example GenServer handler that receives messages from a stream could be written like this:

defmodule MyApp.MySubscriber do
  use GenServer
  alias RabbitMQStream.OsirisChunk

  def start_link do
    GenServer.start_link(__MODULE__, %{})
  end

  def init(state) do
    {:ok, subscription_id} = MyApp.MyConnection.subscribe("stream-01", self(), :next, 999)

    {:ok, Map.put(state, :subscription_id, subscription_id)}
  end

  def handle_info({:message, %OsirisChunk{} = message}, state) do
    # do something with message
    {:noreply, state}
  end
end