In this quickstart, you’ll create a real-time data pipeline that streams changes from a Postgres database to an Azure Event Hub. You’ll:

  • Boot Sequin
  • Connect to a sample playground database
  • Configure an Event Hub to receive database changes
  • See your changes flow in real-time

By the end, you’ll have hands-on experience setting up Postgres change data capture (CDC) with Sequin. This same pattern can be used to setup your own Postgres CDC pipeline with Azure Event Hubs.

Prerequisites

  • An Azure account with Event Hubs namespace
  • An Event Hub within that namespace

Create a Shared Access Policy key

While it’s recommended to create a dedicated Shared Access Policy for Sequin, you can use the default policy for this quickstart:

  1. In the Azure Portal, navigate to your Event Hubs namespace
  2. Click “Shared access policies” in the left sidebar
  3. To use the default policy:
    • Click “RootManageSharedAccessKey”
    • If no keys are present, click the “Regenerate primary key” button
    • Copy either the “Primary key” or “Secondary key”
    • Note the policy name (“RootManageSharedAccessKey”)

Run Sequin

The easiest way to get started with Sequin is with our Docker Compose file. This file starts a Postgres database, Redis instance, and Sequin server.

1

Create directory and start services

  1. Download sequin-docker-compose.zip.
  2. Unzip the file.
  3. Navigate to the unzipped directory and start the services:
cd sequin-docker-compose && docker compose up -d
2

Verify services are running

Check that Sequin is running using docker ps:

docker ps

You should see output like the following:

CONTAINER ID   IMAGE                           COMMAND                  CREATED          STATUS                    PORTS                              NAMES
bd5c458cabde   sequin/sequin:latest            "/scripts/start_comm…"   11 seconds ago   Up 9 seconds              4000/tcp, 0.0.0.0:7376->7376/tcp   sequin-sequin-1
3bacd89765e7   grafana/grafana                 "/run.sh"                11 seconds ago   Up 11 seconds             0.0.0.0:3000->3000/tcp             sequin-sequin_grafana-1
3ad41319a66c   postgres:16                     "docker-entrypoint.s…"   11 seconds ago   Up 11 seconds (healthy)   0.0.0.0:7377->5432/tcp             sequin-sequin_postgres-1
6139a5fc4e80   redis:7                         "docker-entrypoint.s…"   11 seconds ago   Up 11 seconds             0.0.0.0:7378->6379/tcp             sequin-sequin_redis-1
7e07a5b052de   prom/prometheus                 "/bin/prometheus --c…"   11 seconds ago   Up 11 seconds             0.0.0.0:9090->9090/tcp             sequin-sequin_prometheus-1

Sequin, Postgres, Redis, Prometheus, and Grafana should be up and running (status: Up).

Login

The Docker Compose file automatically configures Sequin with an admin user and a playground database.

Let’s log in to the Sequin web console:

1

Open the web console

After starting the Docker Compose services, open the Sequin web console at http://localhost:7376:

2

Login with default credentials

Use the following default credentials to login:

  • Email:
admin@sequinstream.com
  • Password:
sequinpassword!

View the playground database

To get you started quickly, Sequin’s Docker Compose file creates a logical database called sequin_playground with a sample dataset in the public.products table.

Let’s take a look:

1

Navigate to Databases

In the Sequin web console, click Databases in the sidebar.

2

Select playground database

Click on the pre-configured sequin-playground database:

The database “Health” should be green.

3

View contents of the products table

Let’s get a sense of what’s in the products table. Run the following command:

docker exec -i sequin-sequin_postgres-1 \
  psql -U postgres -d sequin_playground -c \
  "select id, name, price from products;"

This command connects to the running Postgres container and runs a psql command.

You should see a list of the rows in the products table:

  id |         name          | price 
----+-----------------------+-------
  1 | Avocados (3 pack)     |  5.99
  2 | Flank Steak (1 lb)    |  8.99
  3 | Salmon Fillet (12 oz) | 14.99
  4 | Baby Spinach (16 oz)  |  4.99
  5 | Sourdough Bread       |  6.99
  6 | Blueberries (6 oz)    |  3.99
(6 rows)

We’ll make modifications to this table in a bit.

Create an Event Hub Sink

With the playground database connected, you can create a sink. This sink will send changes to the products table to your Event Hub:

1

Navigate to Sinks

Click “Sinks” in the sidebar navigation, then click “Create Sink”.

2

Select sink type

Select “Azure Event Hub” as the sink type and click “Continue”.

3

Note "Source" configuration

In the “Source” card, note that the sequin-playground database and products table are pre-selected. Leave these defaults:

4

Setup a backfill

Toggle open the “Initial backfill” card and select “Backfill all rows”:

5

Configure "Event Hub"

In the “Event Hub Configuration” card, enter your Event Hub details:

  • Namespace: Your Event Hubs namespace (e.g., my-namespace)
  • Event Hub Name: The name of your Event Hub (e.g., products)
  • Shared Access Key Name: The name of your Shared Access Policy (e.g., RootManageSharedAccessKey)
  • Shared Access Key: The primary or secondary key from your Shared Access Policy
6

Test the connection

At the bottom of the form, click the “Test Connection” button. If you provided proper credentials, it should succeed.

Sequin can connect to your Event Hub.

7

Create the sink

You can leave the rest of the defaults. As configured, the Event Hub will first receive a backfill of all rows currently in the products table. Then, it will receive all changes to the products table in real-time.

Click “Create Sink” to finish setting up your Event Hub sink.

See changes flow to your Event Hub

On the new sink’s overview page, you should see the “Health” status turn green, indicating data is flowing to your Event Hub.

Let’s confirm messages are flowing:

1

Messages tab

Click the “Messages” tab. You’ll see a list of the recently delivered messages:

Sequin indicates it backfilled the products table to your Event Hub.

2

View in Azure Portal

In the Azure Portal:

  1. Navigate to your Event Hub
  2. Click “Process Data”
  3. Select “Data Explorer” in the left sidebar
  4. Click “View events”

You should see a list of events. Click on any event to view its details, including its body. The messages are read events from the initial backfill of the products table.

Messages are flowing from Sequin to your Event Hub.

3

Make some changes

Let’s make some changes to the products table and see them flow to your Event Hub.

In your terminal, run the following command to insert a new row into the products table:

docker exec -i sequin-sequin_postgres-1 \
  psql -U postgres -d sequin_playground -c \
  "insert into products (name, price) values ('Organic Honey (16 oz)', 12.99);"

In the Data Explorer, click “View events” and you should see the new message appear.

Feel free to try other changes:

Each change will appear in your Event Hub within a few seconds.

Great work!

You’ve successfully:

  • Set up a complete Postgres change data capture pipeline
  • Loaded existing data through a backfill
  • Made changes to the products table
  • Verified changes are flowing to your Event Hub

Ready to stream

Now you’re ready to connect your own database to Sequin and start streaming changes: