> For the complete documentation index, see [llms.txt](https://brightercommand.gitbook.io/paramore-brighter-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox.md).

# Outbox and Inbox

- [Outbox Support](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/brighteroutboxsupport.md): Brighter supports storing messages that are sent via an External Bus in an Outbox, as per the Outbox Pattern.
- [MSSQL Outbox](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/brighteroutboxsupport/mssqloutbox.md): The MSSQL Outbox provides a message store for the Transactional Outbox pattern using a Microsoft SQL Server database.
- [MySQL Outbox](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/brighteroutboxsupport/mysqloutbox.md): The MySQL Outbox provides a message store for the Transactional Outbox pattern using a MySQL database.
- [Postgres Outbox](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/brighteroutboxsupport/postgresoutbox.md): The PostgreSQL Outbox provides a message store for the Transactional Outbox pattern using a PostgreSQL database.
- [Sqlite Outbox](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/brighteroutboxsupport/sqliteoutbox.md): The SQLite Outbox provides a message store for the Transactional Outbox pattern using a SQLite database.
- [Dapper Outbox](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/brighteroutboxsupport/dapperoutbox.md): The Dapper Outbox allows integration between Dapper and Brighter's outbox support.
- [EF Core Outbox](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/brighteroutboxsupport/efcoreoutbox.md): The EFCore Outbox allows integration between EF Core and Brighter's outbox support.
- [Dynamo Outbox](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/brighteroutboxsupport/dynamooutbox.md): The DynamoDb Outbox allows integration between DynamoDb and Brighter's outbox support.
- [MongoDb Outbox](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/brighteroutboxsupport/mongodboutbox.md): The MongoDB Outbox allows integration between MongoDB and Brighter's outbox support.
- [Firestore Outbox](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/brighteroutboxsupport/firestoreoutbox.md): The Firestore Outbox stores messages in a Google Cloud Firestore collection, so a message and the business write that produced it commit together.
- [Spanner Outbox](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/brighteroutboxsupport/spanneroutbox.md): The Spanner Outbox stores messages in a Google Cloud Spanner table, and it is configured entirely through the shared relational configuration.
- [InMemory Outbox](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/brighteroutboxsupport/inmemoryoutbox.md): The in-process Outbox: flushing, compaction, configuration and limits.
- [Transactional Messaging with the Outbox](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/transactionalmessagingwiththeoutbox.md): This section provides a complete example showing both producer and consumer using transactional messaging with the Outbox and Inbox patterns.
- [Outbox Archiver](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/outboxarchiver.md): The Outbox Archiver is a background service that monitors an Outbox and moves messages older than a certain age into long-term storage, keeping your Outbox small.
- [Azure Blob Archive Provider](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/outboxarchiver/azureblobarchiveprovider.md): The Azure Blob Archive Provider is a provider for Outbox Archiver.
- [Azure Archive Provider Configuration](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/outboxarchiver/azureblobarchiveprovider/azureblobconfiguration.md): The Azure Archive Provider writes messages swept from your Outbox into an Azure Blob Storage container.
- [Sweeper Circuit Breaking](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/sweepercircuitbreaking.md): Sweeper Circuit Breaking is a resilience feature that prevents failures to publish to one topic from blocking attempts to publish to other topics, when publishing messages from the Outbox.
- [Using Sweeper Circuit Breaking](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/sweepercircuitbreaking/usingsweepercircuitbreaking.md): How to wire circuit breaking into an Outbox Sweeper, tune its cooldown, and extend it with your own or a distributed breaker.
- [Inbox Support](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/brighterinboxsupport.md): Messaging makes the guaranteed, at least once promise.
- [MSSQL Inbox](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/brighterinboxsupport/mssqlinbox.md): The MSSQL Inbox allows use of MSSQL for Brighter's inbox support.
- [MySQL Inbox](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/brighterinboxsupport/mysqlinbox.md): The MySQL Inbox allows use of MySQL for Brighter's inbox support.
- [Postgres Inbox](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/brighterinboxsupport/postgresinbox.md): The Postgres Inbox allows use of Postgres for Brighter's inbox support.
- [Sqlite Inbox](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/brighterinboxsupport/sqliteinbox.md): The Sqlite Inbox allows use of Sqlite for Brighter's inbox support.
- [Dynamo Inbox](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/brighterinboxsupport/dynamoinbox.md): The DynamoDb Inbox allows use of DynamoDb for Brighter's inbox support.
- [MongoDb Inbox](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/brighterinboxsupport/mongodbinbox.md): The MongoDB Inbox allows use of MongoDB for Brighter's inbox support.
- [Firestore Inbox](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/brighterinboxsupport/firestoreinbox.md): The Firestore Inbox records the messages a consumer has already handled in a Google Cloud Firestore collection, so a redelivery is recognised rather than reprocessed.
- [Spanner Inbox](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/brighterinboxsupport/spannerinbox.md): The Spanner Inbox records the messages a consumer has already handled in a Google Cloud Spanner table, so a redelivery is recognised rather than reprocessed.
- [InMemory Inbox](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/brighterinboxsupport/inmemoryinbox.md): The in-process Inbox: when to use it, how to configure it, and its limits.
- [Replay On Seen](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/replayonseen.md): When your Inbox recognises a message it has already handled, it normally throws or logs a warning and stops — the work is done, so there is nothing to do.
- [Turning On Replay On Seen](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/replayonseen/turningonreplayonseen.md): This page is the procedure: what to switch on, what you must thread through your code, what to check before you enable it, and a worked example.
- [Replay On Seen Reference](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/replayonseen/replayonseenreference.md): Which stores support Replay On Seen, the cases where it does not fire, the events it emits, and its limitations.
- [Causation Tracking in a Custom Store](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/causationtrackingstores.md): Replay On Seen needs two things from your storage.
- [Distributed Lock](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/distributedlock.md): A distributed lock lets multiple instances of your application coordinate so that only one of them performs a given task at a time.
- [DynamoDB Distributed Lock](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/distributedlock/dynamodbdistributedlock.md): The DynamoDB locking provider implements Brighter's distributed lock on top of Amazon DynamoDB, so a single Outbox Sweeper and Archiver run when you scale out.
- [Postgres Distributed Lock](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/distributedlock/postgresdistributedlock.md): The Postgres locking provider implements Brighter's distributed lock using PostgreSQL advisory locks, so a single Outbox Sweeper and Archiver run when you scale out.
- [MSSQL Distributed Lock](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/distributedlock/mssqldistributedlock.md): The MS SQL locking provider implements Brighter's distributed lock using SQL Server application locks (sp\_getapplock / sp\_releaseapplock).
- [MySQL Distributed Lock](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/distributedlock/mysqldistributedlock.md): The MySQL locking provider implements Brighter's distributed lock using MySQL's named locks (GET\_LOCK / RELEASE\_LOCK), so a single Outbox Sweeper and Archiver run when you scale out.
- [Azure Blob Distributed Lock](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/distributedlock/azureblobdistributedlock.md): The Azure Blob locking provider implements Brighter's distributed lock using blob leases in Azure Blob Storage, so a single Outbox Sweeper and Archiver run when you scale out.
- [MongoDB Distributed Lock](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/distributedlock/mongodbdistributedlock.md): The MongoDB locking provider implements Brighter's distributed lock by writing lock documents to a MongoDB collection, so a single Outbox Sweeper and Archiver run when you scale out.
- [Firestore Distributed Lock](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/distributedlock/firestoredistributedlock.md): The Firestore locking provider implements Brighter's distributed lock using Google Cloud Firestore, so a single Outbox Sweeper and Archiver run when you scale out.
- [Box Provisioning](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/boxprovisioning.md): BoxProvisioning is the Brighter library that creates and migrates your Outbox and Inbox tables at application startup.
- [Configuring Box Provisioning](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/boxprovisioning/boxprovisioningconfiguration.md): This page is the how-to companion to Box Provisioning.
- [Upgrading Existing Deployments](https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox/boxprovisioning/boxprovisioningupgrade.md): This page is for operators of a pre-existing Brighter deployment who are adopting Database Provisioning for the first time.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://brightercommand.gitbook.io/paramore-brighter-documentation/outbox-and-inbox.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
