View Source Datapio Message Queue

This project implements a simple message queue application in pure Elixir.

features

✨ Features

  • distributed message queues with Horde
  • multiple load-balanced consumers

example

⚗️ Example

defmodule Example.Consumer do
  use Datapio.MQ.Consumer

  def handle_message(msg, data) do
    IO.inspect({:received, msg, data})
    :timer.sleep(1000)
    :ack
  end

  def handle_shutdown(data) do
    IO.inspect(:shutdown)
  end
end

{:ok, _} = Datapio.MQ.start_queue(Example.Queue)
{:ok, _} = Datapio.MQ.start_consumer([
  id: 0,
  module: Example.Consumer,
  queue: Example.Queue,
  data: :foo
])
{:ok, _} = Datapio.MQ.start_consumer([
  id: 1,
  module: Example.Consumer,
  queue: Example.Queue,
  data: :bar
])

:ok = Datapio.MQ.Queue.publish(Example.Queue, :hello)
:ok = Datapio.MQ.Queue.publish(Example.Queue, :world)