Aa message broker we use Eclipse Mosquitto which is dead simple to set up if you don't have to change the default settings. Such a default installation is neither secure nor highly available, but for our demo it will do just fine. The event generators are written in Python3 with Eclipse paho mqtt for Python.
There are at least two ways to generate events from a PostgreSQL database, pg_recvlogical and NOTIFY / LISTEN. Both have their advantages and shortcomings.
- Configured on server and database level
- Generates comprehensive information about everything that happens in the database
- No additional programming neccessary
- Needs plugins to decode messages, e.g. into JSON
- Filtering has to be done later, e.g. by the decoder plugin
NOTIFY / LISTEN:
- Configured on DDL and table level
- Generates exactly the information and format you program into the triggers
- Filtering can be done before sending the message
- Needs trigger programming
- The message size is limited to 8000 bytes
Examples for both approaches can be found here. The NOTIFY / LISTEN example lacks a proper decoder but this makes be a good excercise to start with. The pg_recvlogical example needs the wal2json plugin, which can be found here and the proper setup, which is also explained in the Readme. Please note, that the slot used in the example is mqtt_slot, not test_slot:
pg_recvlogical -d postgres --slot mqtt_slot --create-slot -P wal2json
Otherwise, setup.sql should generate all objects to run both examples.