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).
39 lines • 1.96 kB
TypeScript
import { MessageNotFoundRetryStrategy } from '../strategies/message-not-found-retry-strategy';
import { MessageProcessingDbClientStrategy } from '../strategies/message-processing-db-client-strategy';
import { MessageProcessingTimeoutStrategy } from '../strategies/message-processing-timeout-strategy';
import { MessageProcessingTransactionLevelStrategy } from '../strategies/message-processing-transaction-level-strategy';
import { MessageRetryStrategy } from '../strategies/message-retry-strategy';
import { PoisonousMessageRetryStrategy } from '../strategies/poisonous-message-retry-strategy';
export interface HandlerStrategies {
/**
* Defines the message processing timeout strategy. By default, it uses the
* configured messageProcessingTimeoutInMs.
*/
messageProcessingTimeoutStrategy: MessageProcessingTimeoutStrategy;
/**
* Defines the PostgreSQL transaction level to use for handling a message.
*/
messageProcessingTransactionLevelStrategy: MessageProcessingTransactionLevelStrategy;
/**
* Decides from what pool to take a database client. This can be helpful if some
* message handlers have to run in higher trust roles than others.
*/
messageProcessingDbClientStrategy: MessageProcessingDbClientStrategy;
/**
* Decides if a message should be retried or not based on the current amount
* of attempts.
*/
messageRetryStrategy: MessageRetryStrategy;
/**
* Decide based on the message, the poisonous attempts counter (which is
* already increased by one), and the processing attempts if the message
* should be retried again or not.
*/
poisonousMessageRetryStrategy: PoisonousMessageRetryStrategy;
/**
* Decides if the message loading and locking should be retried when the
* message was not found (yet).
*/
messageNotFoundRetryStrategy: MessageNotFoundRetryStrategy;
}
//# sourceMappingURL=handler-strategies.d.ts.map