joetjen.net
EN DE
← Alle Bibliotheken
Elixir

ordoq

Eine begrenzte, lokale Prioritäts-Warteschlange im Speicher für asynchrone Callbacks, mit einem überwachten Worker-Pool, der mit der Abhängigkeit startet.

Absicht

Für Hintergrundarbeit innerhalb eines Prozesses — und ehrlich darüber, was das heißt. Die Aufnahme ist begrenzt: Eine volle Warteschlange antwortet mit :overloaded, statt zu wachsen. Nichts ist dauerhaft oder zwischen BEAM-Instanzen geteilt; Arbeit, die einen Neustart überleben muss, gehört in RabbitMQ oder Ähnliches. Wiederholungen sind standardmäßig aus, denn eine Wiederholung macht die Ausführung zu „mindestens einmal“.

Beispiel
defmodule MailJob do
  def deliver(touch, recipient) do
    :ok = touch.(nil)
    send(recipient, :delivered)
  end
end

{:ok, job_id} = Ordoq.enqueue(MailJob, :deliver, [self()], priority: 5)
Installation
{:ordoq, "~> 0.1"}
ElixirJob queueOTP