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).
16 lines (14 loc) • 487 B
text/typescript
import { Mutex } from 'async-mutex';
import { ReplicationConcurrencyController } from './concurrency-controller';
/**
* Uses a single mutex to execute a single message at a time in the WAL sort order
* @returns The controller to acquire and release the mutex
*/
export const createReplicationMutexConcurrencyController =
(): ReplicationConcurrencyController => {
const m = new Mutex();
return {
acquire: () => m.acquire(),
cancel: () => m.cancel(),
};
};