pgx_pgmq 0.0.1-alpha

Postgres extension for PGMQ
docs.rs failed to build pgx_pgmq-0.0.1-alpha
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.

Postgres Message Queue

A lightweight message queue extension for Postgres.

Usage

Installation

Setup pgx.

cargo install --locked cargo-pgx
cargo pgx init

Then, clone this repo and change into this directory.

git clone git@github.com:CoreDB-io/coredb.git
cd coredb/extensions/pgmq/

Run the dev environment

cargo pgx run pg14
CREATE EXTENSION pgmq;

Creating a queue

SELECT pgmq_create('my_queue');

Enqueueing a message

pgmq=# SELECT pgmq_enqueue('my_queue', '{"foo": "bar"}');
 pgmq_enqueue 
--------------
            1

Read a message

Reads a single message from the queue.

pgmq=# SELECT pgmq_read('my_queue');
                               pgmq_read                                
------------------------------------------------------------------------
 {"message":{"foo":"bar"},"msg_id":1,"vt":"2023-01-01T13:54:15.646554"}

If the queue is empty, or if all messages are currently invisible, it will immediately return None.

pgmq=# SELECT pgmq_read('my_queue');
 pgmq_read 
-----------

Pop a message

Read a message and immediately delete it from the queue. Returns None if the queue is empty.

pgmq=# SELECT pgmq_pop('my_queue');
                                pgmq_pop                                
------------------------------------------------------------------------
 {"message":{"foo":"bar"},"msg_id":1,"vt":"2023-01-01T13:55:15.967657"}

Delete a message

Delete a message with id 1 from queue named my_queue.

pgmq=# select pgmq_delete('my_queue', 1);
 pgmq_delete 
-------------
 t