Home Reference Source Test

src/subscription/PersistentSubscriptionConfig.ts

import {StreamPosition} from '../stream/StreamPosition'
import Long = require('long')

/** constant definition of consumer strategies */
export const SystemConsumerStrategies = {
  DispatchToSingle: 'DispatchToSingle',
  RoundRobin: 'RoundRobin',
  Pinned: 'Pinned'
}

/**
 * typescript interface for Persistent subscription config
 */
export interface PersistentSubscriptionConfig {
  resolveLinkTos: boolean
  startFrom: Long | number
  messageTimeoutMilliseconds: number
  recordStatistics: boolean
  maxRetryCount: number
  liveBufferSize: number
  bufferSize: number
  readBatchSize: number
  checkpointAfterTime: number
  checkpointMinCount: number
  checkpointMaxCount: number
  subscriberMaxCount: number
  namedConsumerStrategy: string
  preferRoundRobin: boolean
}

/** default persistent subscription config */
const defaultPersistentSubscriptionConfig: PersistentSubscriptionConfig = {
  resolveLinkTos: true,
  startFrom: StreamPosition.Start,
  messageTimeoutMilliseconds: 10000,
  recordStatistics: false,
  maxRetryCount: 10,
  liveBufferSize: 500,
  bufferSize: 500,
  readBatchSize: 20,
  checkpointAfterTime: 1000,
  checkpointMinCount: 10,
  checkpointMaxCount: 500,
  subscriberMaxCount: 10,
  namedConsumerStrategy: SystemConsumerStrategies.RoundRobin,
  preferRoundRobin: true
}

/**
 * merges given settings with default settings
 */
export function setPersistentSubscriptionConfig(
  customSettings: object | PersistentSubscriptionConfig
): PersistentSubscriptionConfig {
  return {...defaultPersistentSubscriptionConfig, ...customSettings}
}