@arturwojnar/hermes-postgresql
Version:
Production-Ready TypeScript Outbox Pattern for PostgreSQL
17 lines (16 loc) • 774 B
TypeScript
import { Duration } from '@arturwojnar/hermes';
import { Transaction } from '../subscribeToReplicationSlot/types.js';
type MessageToPublish<InsertResult> = {
transaction: Transaction<InsertResult>;
acknowledge: () => void;
};
type PublishingQueueOptions<InsertResult> = {
waitAfterFailedPublish?: Duration;
onFailedPublish?: (tx: Transaction<InsertResult>) => Promise<void>;
};
declare const createPublishingQueue: <InsertResult>(publish: (messageToPublish: MessageToPublish<InsertResult>) => Promise<void>, options?: PublishingQueueOptions<InsertResult>) => {
queue: (messageToPublish: MessageToPublish<InsertResult>) => void;
publishMessages: () => Promise<void>;
size: () => number;
};
export { createPublishingQueue, type MessageToPublish };