Production-ready NATS JetStream bridge for Ruby/Rails with outbox, inbox, DLQ, and overlap-safe stream provisioning.
Highlights
- Transactional outbox and idempotent inbox (optional) for exactly-once pipelines.
- Durable pull consumers with retries, backoff, and DLQ routing.
- Auto stream/consumer provisioning with overlap protection.
- Rails-native: generators, migrations, health check, and eager-loading safety.
- Mock NATS for fast, no-infra testing.
Quick Start
# Gemfile
gem "jetstream_bridge", "~> 5.0"
bundle install
bin/rails g jetstream_bridge:install
bin/rails db:migrate
The install generator creates the initializer, migrations, and optional health check scaffold. For full configuration options and non-Rails boot flows, see docs/GETTING_STARTED.md.
Publish:
JetstreamBridge.publish(event_type: "user.created", resource_type: "user", payload: { id: 1 })
Consume:
consumer = JetstreamBridge::Consumer.new do |event|
User.upsert({ id: event.payload["id"] })
end
consumer.run!
Documentation
- Getting Started - Setup, configuration, and basic usage
- Architecture & Topology - Internal architecture, message flow, and patterns
- Production Guide - Production deployment and monitoring
- Restricted Permissions & Provisioning - Manual provisioning and security
- Testing with Mock NATS - Fast, no-infra testing
License
MIT