Skip to content

PostgreSQL and Blob ​

Agentweaver.Persistence.Postgres stores outbox events and consumer inbox receipts in a service-owned schema. It does not create domain tables or a relay service.

Independent caller-owned producer and consumer transactions using PostgresOutbox. EnqueueAsync stores the event with producer state; AdmitAsync applies effects only for Admitted, skips duplicates, and acknowledges consumer delivery after commit. The shared caller lane does not imply one product host.
Separate producer and consumer transactions couple local state to outbox writes and inbox admission. The host-driven relay is shown separately; transport delivery remains at least once.
A caller invokes OutboxRelay.RelayOnceAsync. It claims leased events from PostgresOutbox, publishes through IOutboxPublisher, and acknowledges confirmed publishes with the current lease token. Failed or cancelled publishes are not acknowledged and remain reclaimable.
The library does not start a daemon. Relay lease acknowledgment follows confirmed publication and is distinct from a consumer acknowledging delivery after its transaction commits.

Call EnqueueAsync with the same open connection and transaction as the domain state change. PostgreSQL assigns stream sequence numbers and enforces stable event IDs and idempotency keys.

ClaimAsync leases the earliest undelivered event per stream. AcknowledgeAsync accepts only a current, unexpired lease token.

OutboxRelay publishes through an injected IOutboxPublisher, then acknowledges only confirmed publishes with the current lease token. A failed, cancelled, or fenced publish remains unacknowledged and can be reclaimed; a publish may still have completed externally before a failure. The host calls RelayOnceAsync. The library does not start a daemon or provide exactly-once delivery.

Call AdmitAsync with the same transaction as consumer state and any new outbox event. Apply effects only for InboxAdmission.Admitted. Skip effects for InboxAdmission.Duplicate. Acknowledge delivery after commit.

Delivery remains at least once. The inbox prevents duplicate committed local effects when the consumer gates all effects on the receipt and transaction.

Agentweaver.ObjectStore.AzureBlob implements IObjectStore for opaque platform objects. It does not provide agent workspace storage, create a container, authorize callers, or fall back to disk.

The Blob container exists before adapter use. The caller owns authorization, authoritative references, retention, and upload-stream lifetime. Blob writes do not commit PostgreSQL references.