PersQueue v0.0.1 PersQueue View Source
PersQueue
is persistent queue with Mnesia
backend.
Installation
1) Add pers_queue
to your deps:
def deps do
[
{:pers_queue, "~> 0.0.1"}
]
end
2) Add pers_queue
to the list of application dependencies:
def application do
[applications: [:pers_queue]]
end
Persistent Setup
PersQueue runs out of the box, but by default all messages are stored in-memory. To persist messages across application restarts, run the following mix task:
$ mix pers_queue.setup
This will create the Mnesia schema and message database for you.
Usage
# Add message:
PersQueue.add("consumer1", "a") # => :ok
PersQueue.add("consumer1", "b") # => :ok
# Get message:
PersQueue.get("consumer1") # => %PersQueue.Message{consumer: "consumer1", content: "a", id: 1}
PersQueue.get("consumer1") # => %PersQueue.Message{consumer: "consumer1", content: "b", id: 2}
# Ack message by message id:
PersQueue.ack("consumer1", 1) # => :ok
# Reject message by message id:
PersQueue.reject("consumer1", 2) # => :ok
Link to this section Summary
Functions
Acks a message and deletes it from running list
Enqueues a message to persistent queue
Gets a message from persistent queue
Rejects a message and moves it to the end of persistent queue
Starts the PersQueue application
Link to this section Functions
ack(consumer :: String.t(), message_id :: pos_integer()) :: :ok
Acks a message and deletes it from running list.
Accepts the consumer name and message id.
Example
PersQueue.ack("consumer1", 1) # => :ok
Enqueues a message to persistent queue.
Accepts the consumer name and message content.
Example
PersQueue.add("consumer1", "a") # => :ok
PersQueue.add("consumer2", "b") # => :ok
get(consumer :: String.t()) :: PersQueue.Message.t()
Gets a message from persistent queue.
Accepts the consumer name.
Example
PersQueue.get("consumer1") # => %PersQueue.Message{consumer: "consumer1", content: "a", id: 1}
reject(consumer :: String.t(), message_id :: pos_integer()) :: :ok
Rejects a message and moves it to the end of persistent queue.
Accepts the consumer name and message id.
Example
PersQueue.reject("consumer1", 1) # => :ok
Starts the PersQueue application