> 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 writes the messages the Outbox Archiver takes from your Outbox into an Azure Blob Storage container.
- [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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
