Skip to main content

Core Concepts

This page explains the key building blocks of Rinda and how they relate to each other.

Architecture Overview​

Account
└── Project
└── Environment (dev / staging / production)
├── Queues
│ └── Messages
└── Storage Objects

Account​

Your Rinda account is the top-level container. Each account has:

  • A billing subscription (Free, Scale, or Dedicated)
  • One or more projects
  • Per-account encryption — every account gets its own encryption key

Projects​

A project groups related queues and storage objects together. Think of it as a workspace for a single application or microservice.

  • Each project has its own set of environments
  • Queues and storage are isolated per project

Environments​

Each project comes with three environments out of the box:

EnvironmentPurpose
DevelopmentLocal development and testing
StagingPre-production validation
ProductionLive traffic

API keys are scoped to an environment, so your dev code can never accidentally write to production queues.

Queues​

A queue is a message channel. Rinda supports two types:

Standard Queues​

  • Best-effort ordering — messages are generally delivered in order, but not guaranteed
  • At-least-once delivery — messages may be delivered more than once
  • Higher throughput — no ordering constraints

FIFO Queues​

  • Strict ordering — messages are delivered in the exact order they were sent
  • Exactly-once processing — message deduplication prevents duplicates
  • Message groups — independent ordering within groups

Messages​

Messages are the data you send through queues. Key properties:

PropertyDescription
bodyAny JSON payload (up to 190 KB inline, 1 MB stored)
delaySecondsDelay before the message becomes visible (0-900s)
visibilityTimeoutTime a message stays invisible after being received
groupIdMessage group for FIFO ordering
deduplicationIdPrevents duplicate messages in FIFO queues

Message Lifecycle​

Sent → Pending → Received (invisible) → Deleted (acknowledged)
│
└→ Visible again (if not deleted within visibility timeout)
│
└→ Dead Letter Queue (after max retries)

Large Messages​

Messages over 190 KB are automatically stored in Rinda Storage and a reference pointer is sent through the queue. This is transparent — you always receive the full message body.

Message Storage​

Rinda keeps message bodies so that:

  • Large payloads can be sent at all — a body over the queue's limit is stored, and a reference travels on the queue
  • Messages can be inspected long after they were processed
  • Messages can be replayed, using the body exactly as it was sent

How long they are kept is set per account. See Message Storage.

Dead Letter Queues (DLQ)​

When a message fails to be processed after a configurable number of attempts, it is automatically moved to a dead-letter queue for investigation. DLQ can be enabled per queue with a single toggle.

Next Steps​