https://github.com/astorre88/pers_queue
The library implements persistent queue for Elixir applications.
https://github.com/astorre88/pers_queue
elixir mnesia queue
Last synced: 4 months ago
JSON representation
The library implements persistent queue for Elixir applications.
- Host: GitHub
- URL: https://github.com/astorre88/pers_queue
- Owner: astorre88
- License: mit
- Created: 2018-06-15T18:56:24.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2018-06-16T14:44:57.000Z (about 8 years ago)
- Last Synced: 2025-10-10T11:24:34.765Z (8 months ago)
- Topics: elixir, mnesia, queue
- Language: Elixir
- Size: 25.4 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# PersQueue
[](https://travis-ci.org/astorre88/pers_queue)
[](https://coveralls.io/github/astorre88/pers_queue?branch=master)
The library implements persistent queue for Elixir applications.
## Installation
1) Add `pers_queue` to your deps:
```elixir
def deps do
[
{:pers_queue, "~> 0.0.1"}
]
end
```
2) Add `pers_queue` to the list of application dependencies:
```elixir
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:
```bash
$ mix pers_queue.setup
```
This will create the Mnesia schema and message database for you.
## Usage
```elixir
# 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
```