Files

76 lines
3.0 KiB
Go

package reliable
const DurableSettingsBlockKey = "durable_delivery"
type DurableTransport string
const (
DurableTransportDirect DurableTransport = "direct"
DurableTransportJetStream DurableTransport = "jetstream"
)
type DurableProvisioningMode string
const (
DurableProvisioningHybrid DurableProvisioningMode = "hybrid"
DurableProvisioningApp DurableProvisioningMode = "app"
DurableProvisioningOps DurableProvisioningMode = "ops"
)
type DurableEnvironment string
const (
DurableEnvironmentNonProduction DurableEnvironment = "non-production"
DurableEnvironmentProduction DurableEnvironment = "production"
)
type DurableDeliverPolicy string
const (
DurableDeliverAll DurableDeliverPolicy = "all"
DurableDeliverNew DurableDeliverPolicy = "new"
)
type DurablePublisherSettings struct {
Transport DurableTransport `mapstructure:"transport" yaml:"transport"`
DurableSubjects []string `mapstructure:"durable_subjects" yaml:"durable_subjects"`
}
type DurableStreamSettings struct {
Name string `mapstructure:"name" yaml:"name"`
Subjects []string `mapstructure:"subjects" yaml:"subjects"`
MaxAgeHours int `mapstructure:"max_age_hours" yaml:"max_age_hours"`
Storage string `mapstructure:"storage" yaml:"storage"`
Replicas int `mapstructure:"replicas" yaml:"replicas"`
}
type DurableParkingSettings struct {
StreamName string `mapstructure:"stream_name" yaml:"stream_name"`
SubjectPrefix string `mapstructure:"subject_prefix" yaml:"subject_prefix"`
MaxOperatorReplays int `mapstructure:"max_operator_replays" yaml:"max_operator_replays"`
}
type DurableProvisioningSettings struct {
Mode DurableProvisioningMode `mapstructure:"mode" yaml:"mode"`
Environment DurableEnvironment `mapstructure:"environment" yaml:"environment"`
}
type DurableConsumerSettings struct {
Subject string `mapstructure:"subject" yaml:"subject"`
Durable string `mapstructure:"durable" yaml:"durable"`
DeliverPolicy DurableDeliverPolicy `mapstructure:"deliver_policy" yaml:"deliver_policy"`
AckWaitSeconds int `mapstructure:"ack_wait_seconds" yaml:"ack_wait_seconds"`
MaxDeliver int `mapstructure:"max_deliver" yaml:"max_deliver"`
InactiveThresholdSeconds int `mapstructure:"inactive_threshold_seconds" yaml:"inactive_threshold_seconds"`
}
type DurableSettings struct {
Enabled bool `mapstructure:"enabled" yaml:"enabled"`
Publisher DurablePublisherSettings `mapstructure:"publisher" yaml:"publisher"`
Stream DurableStreamSettings `mapstructure:"stream" yaml:"stream"`
Parking DurableParkingSettings `mapstructure:"parking" yaml:"parking"`
Provisioning DurableProvisioningSettings `mapstructure:"provisioning" yaml:"provisioning"`
Consumers []DurableConsumerSettings `mapstructure:"consumers" yaml:"consumers"`
ServiceName string `mapstructure:"-" yaml:"-"`
}