pg-transactional-outbox
Version:
A PostgreSQL based transactional outbox and inbox pattern implementation to support exactly once message processing (with at least once message delivery).
14 lines (11 loc) • 485 B
text/typescript
import { TransactionalMessage } from '../../message/transactional-message';
/**
* A concurrency controller that defines how concurrency must be handled when
* processing messages: in parallel and/or sequentially or use some other logic.
*/
export interface ReplicationConcurrencyController {
/** Acquire a lock (if any) and return a function to release it. */
acquire(message: TransactionalMessage): Promise<() => void>;
/** Cancel all pending locks. */
cancel(): void;
}