PostgreSQL Message Broker
Overview
How It Works
Benefits
Use Existing Infrastructure
Transactional Messaging
Familiar Tooling
When to Use
Limitations
Performance Constraints
Message Size
No Native Routing
Configuration
NuGet Package
Database Table
Producer Configuration
Basic Producer Setup
Publishing Messages
Consumer Configuration
Basic Consumer Setup
Consuming Messages
Configuration Options
PostgresPublication
Property
Type
Description
Default
PostgresSubscription
Property
Type
Description
Default
RelationalDatabaseConfiguration
Property
Type
Description
Message Visibility
How It Works
Visibility Timeout Example
JSON vs JSONB
Feature
JSON
JSONB
Configuration
Scheduled Messages
Transactional Messaging
Using the Outbox Pattern
Monitoring and Observability
Query Queue Depth
Query In-Flight Messages
Find Stuck Messages
OpenTelemetry Integration
Best Practices
1. Use JSONB for Production
2. Set Appropriate Visibility Timeout
3. Use Connection Pooling
4. Monitor Queue Depth
5. Index Your Queue Table
6. Regular Cleanup
7. Use Claim Check for Large Messages
8. Separate Queue Tables for High Volume
Comparison with Other Transports
Feature
PostgreSQL
RabbitMQ
Kafka
AWS SQS
Troubleshooting
Messages Not Being Consumed
High Database Load
Messages Processed Multiple Times
Slow Message Retrieval
Additional Resources
Last updated
Was this helpful?
