Comparison with Alternatives
RabbitMQ does not ship with a built-in message backup tool. Several approaches exist, each with tradeoffs. This page compares OSO RabbitMQ Backup against common alternatives.
Comparison Table
| Feature | OSO RabbitMQ Backup | Shovel / Federation | RabbitIO | rmq-dump | Manual FS Backup | Portworx / Velero |
|---|---|---|---|---|---|---|
| Non-destructive | Yes | Copies (not backup) | No (consumes) | No (consumes) | Yes | Yes |
| Message backup | Yes | N/A (replication) | Yes | Yes | Yes (raw files) | Yes (raw files) |
| Definitions backup | Yes | No | No | No | Yes (rabbitmqctl) | Yes (full disk) |
| Point-in-time restore | Yes | No | No | No | No | No (snapshot only) |
| Cloud storage | S3, Azure, GCS | N/A | Local only | Local only | Local | Cloud volumes |
| Selective queue backup | Yes | Per-shovel config | Yes | Yes | No (all or nothing) | No |
| Stream queue support | Yes | No | No | No | Yes (raw files) | Yes (raw files) |
| Resumable | Yes (checkpoints) | N/A | No | No | No | No |
| Compression | zstd, lz4 | N/A | No | No | No | Volume-level |
| Integrity verification | validate --deep | N/A | No | No | No | No |
| No broker downtime | Yes | Yes | Yes | Yes | Requires stop | Snapshot (brief freeze) |
| No filesystem access | Yes | Yes | Yes | Yes | No (needs access) | No (needs access) |
| Cross-version restore | Yes | Version-dependent | Limited | Limited | No | No |
| Deployment | Single binary | Built-in plugin | Python package | Go binary | Shell scripts | K8s operator |
| Active maintenance | Yes | RabbitMQ core | Limited | Archived | N/A | Yes |
Detailed Comparisons
OSO RabbitMQ Backup vs. Shovel / Federation
Shovel and Federation are RabbitMQ plugins for replicating messages between brokers in real time. They are not backup tools.
| Aspect | OSO RabbitMQ Backup | Shovel / Federation |
|---|---|---|
| Purpose | Backup and restore | Live replication |
| Data flow | Non-destructive snapshot to storage | Continuous message forwarding |
| Storage | S3 / Azure / GCS / filesystem | Another RabbitMQ broker |
| Point-in-time | Yes | No |
| Restore to past state | Yes | No (only current state) |
| Config complexity | Single YAML file | Per-queue shovel config |
When to use Shovel/Federation: Active-active clusters, real-time replication, cross-datacenter message routing.
When to use OSO RabbitMQ Backup: Disaster recovery, compliance archival, migration, point-in-time restore.
OSO RabbitMQ Backup vs. RabbitIO
RabbitIO is a Python tool for dumping and loading RabbitMQ messages.
| Aspect | OSO RabbitMQ Backup | RabbitIO |
|---|---|---|
| Language | Rust (single binary) | Python (pip install) |
| Backup method | Non-destructive (requeue) | Consumes messages (destructive) |
| Cloud storage | S3, Azure, GCS, filesystem | Local filesystem only |
| Definitions | Yes | No |
| Compression | zstd, lz4 | No |
| Streams | Yes | No |
| Resumable | Yes | No |
| PITR | Yes | No |
Key difference: RabbitIO consumes messages during backup, removing them from the queue. OSO RabbitMQ Backup reads and requeues, leaving messages intact.
OSO RabbitMQ Backup vs. rmq-dump
rmq-dump is a Go-based tool for dumping RabbitMQ messages.
| Aspect | OSO RabbitMQ Backup | rmq-dump |
|---|---|---|
| Language | Rust | Go |
| Backup method | Non-destructive (requeue) | Consumes messages (destructive) |
| Cloud storage | S3, Azure, GCS, filesystem | Local filesystem only |
| Definitions | Yes | No |
| Compression | zstd, lz4 | No |
| Active development | Yes | Archived / unmaintained |
OSO RabbitMQ Backup vs. Manual Filesystem Backup
Stopping RabbitMQ and copying the Mnesia database directory.
| Aspect | OSO RabbitMQ Backup | Filesystem Backup |
|---|---|---|
| Downtime required | No | Yes (must stop broker) |
| Filesystem access | Not needed | Required (SSH/local) |
| Portability | Cross-version, cross-platform | Same RabbitMQ version only |
| Selective backup | Per-queue, per-vhost | All or nothing |
| Cloud deployment | Works everywhere | Difficult with managed services |
| Message-level restore | Yes (PITR, filtering) | No (restore entire state) |
| Complexity | Single command | Stop broker, copy files, restart |
Filesystem backup is the only option that captures internal Mnesia state perfectly, but it requires downtime and is not portable across versions.
OSO RabbitMQ Backup vs. Portworx / Velero (Volume Snapshots)
Kubernetes volume snapshot tools capture the entire disk state.
| Aspect | OSO RabbitMQ Backup | Portworx / Velero |
|---|---|---|
| Scope | Application-level (messages + definitions) | Infrastructure-level (full volume) |
| Downtime | None | Brief freeze during snapshot |
| Restore granularity | Per-queue, per-message, PITR | Full volume only |
| Storage | Object storage | Cloud volume snapshots |
| Cross-cluster restore | Yes (any RabbitMQ) | Same storage provider |
| Cross-version | Yes | No (same RabbitMQ version) |
| Kubernetes required | No | Yes |
| Message integrity | Application-consistent | Crash-consistent |
Volume snapshots are useful as an additional safety net but do not replace application-level backup for granular restore.
When to Use OSO RabbitMQ Backup
Choose OSO RabbitMQ Backup when you need:
- Non-destructive backup -- messages must remain available to consumers
- Cloud storage -- backups stored in S3, Azure Blob, or GCS
- Point-in-time restore -- recover specific time windows
- Cross-cluster migration -- move between clusters or versions
- Compliance archival -- long-term retention with integrity verification
- Selective backup -- specific queues, vhosts, or queue types
- No broker access -- works remotely via AMQP and HTTP API
- Stream queue backup -- native Stream Protocol support
Complementary Tools
OSO RabbitMQ Backup can be used alongside other tools:
| Tool | Use With OSO RabbitMQ Backup For |
|---|---|
| Shovel | Real-time replication + periodic backup for DR |
| Federation | Multi-datacenter routing + backup for archival |
| Velero | Volume snapshots as additional safety net |
| Prometheus | Monitoring backup progress and alerting on failures |