pgmqtt

pgmqtt

pgmqtt : CDC-to-MQTT broker for PostgreSQL

Overview

ID Extension Package Version Category License Language
9620
pgmqtt
pgmqtt
0.1.0
ETL
Elastic License 2.0
Rust
Attribute Has Binary Has Library Need Load Has DDL Relocatable Trusted
--s-d--
No
Yes
No
Yes
no
no

manually upgraded PGRX from 0.16.1 to 0.17.0 by Vonng; requires wal_level = logical for CDC.

Packages

Type Repo Version PG Major Compatibility Package Pattern Dependencies
EXT
PIGSTY
0.1.0
18
17
16
15
14
pgmqtt -
RPM
PIGSTY
0.1.0
18
17
16
15
14
pgmqtt_$v -
DEB
PIGSTY
0.1.0
18
17
16
15
14
postgresql-$v-pgmqtt -
Linux / PG PG18 PG17 PG16 PG15 PG14
el8.x86_64
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
el8.aarch64
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
el9.x86_64
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
el9.aarch64
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
el10.x86_64
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
el10.aarch64
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
d12.x86_64
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
d12.aarch64
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
d13.x86_64
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
d13.aarch64
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
u22.x86_64
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
u22.aarch64
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
u24.x86_64
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
u24.aarch64
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
Package Version OS ORG SIZE File URL
pgmqtt_18 0.1.0 el8.x86_64 pigsty 1.7 MiB pgmqtt_18-0.1.0-1PIGSTY.el8.x86_64.rpm
pgmqtt_18 0.1.0 el8.aarch64 pigsty 1.4 MiB pgmqtt_18-0.1.0-1PIGSTY.el8.aarch64.rpm
pgmqtt_18 0.1.0 el9.x86_64 pigsty 1.7 MiB pgmqtt_18-0.1.0-1PIGSTY.el9.x86_64.rpm
pgmqtt_18 0.1.0 el9.aarch64 pigsty 1.5 MiB pgmqtt_18-0.1.0-1PIGSTY.el9.aarch64.rpm
pgmqtt_18 0.1.0 el10.x86_64 pigsty 1.6 MiB pgmqtt_18-0.1.0-1PIGSTY.el10.x86_64.rpm
pgmqtt_18 0.1.0 el10.aarch64 pigsty 1.4 MiB pgmqtt_18-0.1.0-1PIGSTY.el10.aarch64.rpm
postgresql-18-pgmqtt 0.1.0 d12.x86_64 pigsty 1.4 MiB postgresql-18-pgmqtt_0.1.0-1PIGSTY~bookworm_amd64.deb
postgresql-18-pgmqtt 0.1.0 d12.aarch64 pigsty 1.2 MiB postgresql-18-pgmqtt_0.1.0-1PIGSTY~bookworm_arm64.deb
postgresql-18-pgmqtt 0.1.0 d13.x86_64 pigsty 1.4 MiB postgresql-18-pgmqtt_0.1.0-1PIGSTY~trixie_amd64.deb
postgresql-18-pgmqtt 0.1.0 d13.aarch64 pigsty 1.2 MiB postgresql-18-pgmqtt_0.1.0-1PIGSTY~trixie_arm64.deb
postgresql-18-pgmqtt 0.1.0 u22.x86_64 pigsty 1.5 MiB postgresql-18-pgmqtt_0.1.0-1PIGSTY~jammy_amd64.deb
postgresql-18-pgmqtt 0.1.0 u22.aarch64 pigsty 1.3 MiB postgresql-18-pgmqtt_0.1.0-1PIGSTY~jammy_arm64.deb
postgresql-18-pgmqtt 0.1.0 u24.x86_64 pigsty 1.5 MiB postgresql-18-pgmqtt_0.1.0-1PIGSTY~noble_amd64.deb
postgresql-18-pgmqtt 0.1.0 u24.aarch64 pigsty 1.3 MiB postgresql-18-pgmqtt_0.1.0-1PIGSTY~noble_arm64.deb
Package Version OS ORG SIZE File URL
pgmqtt_17 0.1.0 el8.x86_64 pigsty 1.7 MiB pgmqtt_17-0.1.0-1PIGSTY.el8.x86_64.rpm
pgmqtt_17 0.1.0 el8.aarch64 pigsty 1.4 MiB pgmqtt_17-0.1.0-1PIGSTY.el8.aarch64.rpm
pgmqtt_17 0.1.0 el9.x86_64 pigsty 1.7 MiB pgmqtt_17-0.1.0-1PIGSTY.el9.x86_64.rpm
pgmqtt_17 0.1.0 el9.aarch64 pigsty 1.5 MiB pgmqtt_17-0.1.0-1PIGSTY.el9.aarch64.rpm
pgmqtt_17 0.1.0 el10.x86_64 pigsty 1.6 MiB pgmqtt_17-0.1.0-1PIGSTY.el10.x86_64.rpm
pgmqtt_17 0.1.0 el10.aarch64 pigsty 1.4 MiB pgmqtt_17-0.1.0-1PIGSTY.el10.aarch64.rpm
postgresql-17-pgmqtt 0.1.0 d12.x86_64 pigsty 1.4 MiB postgresql-17-pgmqtt_0.1.0-1PIGSTY~bookworm_amd64.deb
postgresql-17-pgmqtt 0.1.0 d12.aarch64 pigsty 1.2 MiB postgresql-17-pgmqtt_0.1.0-1PIGSTY~bookworm_arm64.deb
postgresql-17-pgmqtt 0.1.0 d13.x86_64 pigsty 1.4 MiB postgresql-17-pgmqtt_0.1.0-1PIGSTY~trixie_amd64.deb
postgresql-17-pgmqtt 0.1.0 d13.aarch64 pigsty 1.2 MiB postgresql-17-pgmqtt_0.1.0-1PIGSTY~trixie_arm64.deb
postgresql-17-pgmqtt 0.1.0 u22.x86_64 pigsty 1.5 MiB postgresql-17-pgmqtt_0.1.0-1PIGSTY~jammy_amd64.deb
postgresql-17-pgmqtt 0.1.0 u22.aarch64 pigsty 1.3 MiB postgresql-17-pgmqtt_0.1.0-1PIGSTY~jammy_arm64.deb
postgresql-17-pgmqtt 0.1.0 u24.x86_64 pigsty 1.5 MiB postgresql-17-pgmqtt_0.1.0-1PIGSTY~noble_amd64.deb
postgresql-17-pgmqtt 0.1.0 u24.aarch64 pigsty 1.3 MiB postgresql-17-pgmqtt_0.1.0-1PIGSTY~noble_arm64.deb
Package Version OS ORG SIZE File URL
pgmqtt_16 0.1.0 el8.x86_64 pigsty 1.7 MiB pgmqtt_16-0.1.0-1PIGSTY.el8.x86_64.rpm
pgmqtt_16 0.1.0 el8.aarch64 pigsty 1.4 MiB pgmqtt_16-0.1.0-1PIGSTY.el8.aarch64.rpm
pgmqtt_16 0.1.0 el9.x86_64 pigsty 1.7 MiB pgmqtt_16-0.1.0-1PIGSTY.el9.x86_64.rpm
pgmqtt_16 0.1.0 el9.aarch64 pigsty 1.5 MiB pgmqtt_16-0.1.0-1PIGSTY.el9.aarch64.rpm
pgmqtt_16 0.1.0 el10.x86_64 pigsty 1.6 MiB pgmqtt_16-0.1.0-1PIGSTY.el10.x86_64.rpm
pgmqtt_16 0.1.0 el10.aarch64 pigsty 1.4 MiB pgmqtt_16-0.1.0-1PIGSTY.el10.aarch64.rpm
postgresql-16-pgmqtt 0.1.0 d12.x86_64 pigsty 1.4 MiB postgresql-16-pgmqtt_0.1.0-1PIGSTY~bookworm_amd64.deb
postgresql-16-pgmqtt 0.1.0 d12.aarch64 pigsty 1.2 MiB postgresql-16-pgmqtt_0.1.0-1PIGSTY~bookworm_arm64.deb
postgresql-16-pgmqtt 0.1.0 d13.x86_64 pigsty 1.4 MiB postgresql-16-pgmqtt_0.1.0-1PIGSTY~trixie_amd64.deb
postgresql-16-pgmqtt 0.1.0 d13.aarch64 pigsty 1.2 MiB postgresql-16-pgmqtt_0.1.0-1PIGSTY~trixie_arm64.deb
postgresql-16-pgmqtt 0.1.0 u22.x86_64 pigsty 1.5 MiB postgresql-16-pgmqtt_0.1.0-1PIGSTY~jammy_amd64.deb
postgresql-16-pgmqtt 0.1.0 u22.aarch64 pigsty 1.3 MiB postgresql-16-pgmqtt_0.1.0-1PIGSTY~jammy_arm64.deb
postgresql-16-pgmqtt 0.1.0 u24.x86_64 pigsty 1.5 MiB postgresql-16-pgmqtt_0.1.0-1PIGSTY~noble_amd64.deb
postgresql-16-pgmqtt 0.1.0 u24.aarch64 pigsty 1.3 MiB postgresql-16-pgmqtt_0.1.0-1PIGSTY~noble_arm64.deb
Package Version OS ORG SIZE File URL
pgmqtt_15 0.1.0 el8.x86_64 pigsty 1.7 MiB pgmqtt_15-0.1.0-1PIGSTY.el8.x86_64.rpm
pgmqtt_15 0.1.0 el8.aarch64 pigsty 1.4 MiB pgmqtt_15-0.1.0-1PIGSTY.el8.aarch64.rpm
pgmqtt_15 0.1.0 el9.x86_64 pigsty 1.7 MiB pgmqtt_15-0.1.0-1PIGSTY.el9.x86_64.rpm
pgmqtt_15 0.1.0 el9.aarch64 pigsty 1.5 MiB pgmqtt_15-0.1.0-1PIGSTY.el9.aarch64.rpm
pgmqtt_15 0.1.0 el10.x86_64 pigsty 1.6 MiB pgmqtt_15-0.1.0-1PIGSTY.el10.x86_64.rpm
pgmqtt_15 0.1.0 el10.aarch64 pigsty 1.4 MiB pgmqtt_15-0.1.0-1PIGSTY.el10.aarch64.rpm
postgresql-15-pgmqtt 0.1.0 d12.x86_64 pigsty 1.4 MiB postgresql-15-pgmqtt_0.1.0-1PIGSTY~bookworm_amd64.deb
postgresql-15-pgmqtt 0.1.0 d12.aarch64 pigsty 1.2 MiB postgresql-15-pgmqtt_0.1.0-1PIGSTY~bookworm_arm64.deb
postgresql-15-pgmqtt 0.1.0 d13.x86_64 pigsty 1.4 MiB postgresql-15-pgmqtt_0.1.0-1PIGSTY~trixie_amd64.deb
postgresql-15-pgmqtt 0.1.0 d13.aarch64 pigsty 1.2 MiB postgresql-15-pgmqtt_0.1.0-1PIGSTY~trixie_arm64.deb
postgresql-15-pgmqtt 0.1.0 u22.x86_64 pigsty 1.5 MiB postgresql-15-pgmqtt_0.1.0-1PIGSTY~jammy_amd64.deb
postgresql-15-pgmqtt 0.1.0 u22.aarch64 pigsty 1.3 MiB postgresql-15-pgmqtt_0.1.0-1PIGSTY~jammy_arm64.deb
postgresql-15-pgmqtt 0.1.0 u24.x86_64 pigsty 1.5 MiB postgresql-15-pgmqtt_0.1.0-1PIGSTY~noble_amd64.deb
postgresql-15-pgmqtt 0.1.0 u24.aarch64 pigsty 1.3 MiB postgresql-15-pgmqtt_0.1.0-1PIGSTY~noble_arm64.deb
Package Version OS ORG SIZE File URL
pgmqtt_14 0.1.0 el8.x86_64 pigsty 1.7 MiB pgmqtt_14-0.1.0-1PIGSTY.el8.x86_64.rpm
pgmqtt_14 0.1.0 el8.aarch64 pigsty 1.4 MiB pgmqtt_14-0.1.0-1PIGSTY.el8.aarch64.rpm
pgmqtt_14 0.1.0 el9.x86_64 pigsty 1.7 MiB pgmqtt_14-0.1.0-1PIGSTY.el9.x86_64.rpm
pgmqtt_14 0.1.0 el9.aarch64 pigsty 1.5 MiB pgmqtt_14-0.1.0-1PIGSTY.el9.aarch64.rpm
pgmqtt_14 0.1.0 el10.x86_64 pigsty 1.6 MiB pgmqtt_14-0.1.0-1PIGSTY.el10.x86_64.rpm
pgmqtt_14 0.1.0 el10.aarch64 pigsty 1.4 MiB pgmqtt_14-0.1.0-1PIGSTY.el10.aarch64.rpm
postgresql-14-pgmqtt 0.1.0 d12.x86_64 pigsty 1.4 MiB postgresql-14-pgmqtt_0.1.0-1PIGSTY~bookworm_amd64.deb
postgresql-14-pgmqtt 0.1.0 d12.aarch64 pigsty 1.2 MiB postgresql-14-pgmqtt_0.1.0-1PIGSTY~bookworm_arm64.deb
postgresql-14-pgmqtt 0.1.0 d13.x86_64 pigsty 1.4 MiB postgresql-14-pgmqtt_0.1.0-1PIGSTY~trixie_amd64.deb
postgresql-14-pgmqtt 0.1.0 d13.aarch64 pigsty 1.2 MiB postgresql-14-pgmqtt_0.1.0-1PIGSTY~trixie_arm64.deb
postgresql-14-pgmqtt 0.1.0 u22.x86_64 pigsty 1.5 MiB postgresql-14-pgmqtt_0.1.0-1PIGSTY~jammy_amd64.deb
postgresql-14-pgmqtt 0.1.0 u22.aarch64 pigsty 1.3 MiB postgresql-14-pgmqtt_0.1.0-1PIGSTY~jammy_arm64.deb
postgresql-14-pgmqtt 0.1.0 u24.x86_64 pigsty 1.5 MiB postgresql-14-pgmqtt_0.1.0-1PIGSTY~noble_amd64.deb
postgresql-14-pgmqtt 0.1.0 u24.aarch64 pigsty 1.3 MiB postgresql-14-pgmqtt_0.1.0-1PIGSTY~noble_arm64.deb

Source

pig build pkg pgmqtt;		# build rpm/deb

Install

Make sure PGDG and PIGSTY repo available:

pig repo add pgsql -u   # add both repo and update cache

Install this extension with pig:

pig install pgmqtt;		# install via package name, for the active PG version

pig install pgmqtt -v 18;   # install for PG 18
pig install pgmqtt -v 17;   # install for PG 17
pig install pgmqtt -v 16;   # install for PG 16
pig install pgmqtt -v 15;   # install for PG 15
pig install pgmqtt -v 14;   # install for PG 14

Create this extension with:

CREATE EXTENSION pgmqtt;

Usage

pgmqtt is a pgrx-based PostgreSQL extension that turns CDC into an MQTT broker. Database changes can be published to MQTT topics through SQL-defined mappings, and MQTT publishes can be written back into PostgreSQL tables.

The README’s quickstart requires wal_level = logical so CDC events can be captured correctly.

Outbound Mapping

SELECT pgmqtt_add_outbound_mapping(
    'public',
    'my_table',
    'topics/{{ op | lower }}',
    '{{ columns | tojson }}'
);

With this mapping, INSERT, UPDATE, and DELETE on the table are published as MQTT messages. Subscribers to topics/insert, topics/update, or topics/delete receive JSON payloads.

Inbound Mapping

SELECT pgmqtt_add_inbound_mapping(
    'sensor/{site_id}/temperature',
    'sensor_readings',
    '{"site_id": "{site_id}", "value": "$.temperature"}'::jsonb
);

When a client publishes to sensor/site-1/temperature with payload {"temperature": 22.5}, the README says a row is inserted into sensor_readings with the extracted values.

Client Examples

mosquitto_sub -h localhost -t 'topics/#'
mosquitto_pub -h localhost -t 'sensor/site-1/temperature' -m '{"temperature": 22.5}'

Scope

The upstream README covers the broker model, the outbound/inbound mapping examples, and basic MQTT client usage. It does not document a separate project homepage, so this stub stays at README scope.

Last updated on