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

Link to this function ack(consumer, message_id) View Source
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
Link to this function add(consumer, message_content) View Source
add(consumer :: String.t(), message_content :: String.t()) :: :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

Gets a message from persistent queue.

Accepts the consumer name.

Example

PersQueue.get("consumer1") # => %PersQueue.Message{consumer: "consumer1", content: "a", id: 1}
Link to this function reject(consumer, message_id) View Source
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