Expand description
Subscription runtime for event-driven GraphQL subscriptions.
FraiseQL subscriptions are compiled projections of database events, not traditional resolver-based subscriptions. Events originate from database transactions (via LISTEN/NOTIFY or CDC) and are delivered through transport adapters.
§Architecture
Database Transaction (INSERT/UPDATE/DELETE)
↓ (commits)
LISTEN/NOTIFY (PostgreSQL)
↓
SubscriptionManager (event routing)
↓
SubscriptionMatcher (filter evaluation)
↓ (parallel delivery)
├─ graphql-ws Adapter (WebSocket)
├─ Webhook Adapter (HTTP POST)
└─ Kafka Adapter (event streaming)§Example
ⓘ
use fraiseql_core::runtime::subscription::{
SubscriptionManager, SubscriptionEvent, SubscriptionId,
};
use tokio::sync::broadcast;
// Create subscription manager
let manager = SubscriptionManager::new(schema);
// Subscribe to events
let subscription_id = manager.subscribe(
"OrderCreated",
user_context,
variables,
).await?;
// Receive events
let mut receiver = manager.receiver();
while let Ok(event) = receiver.recv().await {
if event.matches_subscription(subscription_id) {
// Deliver to client
}
}
// Unsubscribe
manager.unsubscribe(subscription_id).await?;Modules§
Structs§
- Active
Subscription - A client’s active subscription.
- Delivery
Result - Result of delivering an event to multiple transports.
- Kafka
Adapter - Kafka transport adapter stub (without
kafkafeature). - Kafka
Config - Kafka transport adapter configuration.
- Kafka
Message - Kafka message format for event delivery.
- Subscription
Event - An event from the database that may trigger subscriptions.
- Subscription
Id - Unique identifier for a subscription instance.
- Subscription
Manager - Manages active subscriptions and event routing.
- Subscription
Payload - Delivery payload sent to transport adapters.
- Transport
Manager - Multi-transport delivery manager.
- Webhook
Adapter - Webhook transport adapter for HTTP POST delivery.
- Webhook
Config - Webhook transport adapter configuration.
- Webhook
Payload - Webhook payload format for event delivery.
Enums§
- Subscription
Error - Errors that can occur during subscription operations.
- Subscription
Operation - Database operation that triggered the event.
Traits§
- Transport
Adapter - Transport adapter trait for delivering subscription events.