Queue

Configuration

Config structs, YAML examples, and option helpers for Queue

YAML Configuration Example

config.yaml
extensions:
  queue:
    driver: "rabbitmq"              # "inmemory", "redis", "rabbitmq", "nats"
    url: "amqp://guest:guest@localhost:5672/"
    vhost: "/"

    # Connection settings
    maxConnections: 10
    maxIdleConnections: 5
    connectTimeout: "10s"
    readTimeout: "30s"
    writeTimeout: "30s"
    keepAlive: "60s"

    # Retry settings
    maxRetries: 3
    retryBackoff: "100ms"
    retryMultiplier: 2.0
    maxRetryBackoff: "30s"

    # Consumer defaults
    defaultPrefetch: 10
    defaultConcurrency: 1
    defaultTimeout: "30s"

    # Features
    enableDeadLetter: true
    deadLetterSuffix: ".dlq"
    enablePersistence: true
    enablePriority: false
    enableDelayed: false
    maxMessageSize: 1048576         # 1 MB

    # TLS
    enableTLS: false
    tlsCertFile: ""
    tlsKeyFile: ""
    tlsCAFile: ""

    # Observability
    enableMetrics: true
    enableTracing: true

    # Optional: reuse Redis from database extension
    databaseRedisConnection: ""

The extension loads config from extensions.queue first, falling back to queue.

Programmatic Configuration

ext := queue.NewExtension(
    queue.WithDriver("redis"),
    queue.WithURL("redis://localhost:6379"),
    queue.WithDeadLetter(true),
    queue.WithConcurrency(5),
    queue.WithPrefetch(20),
)

Config Struct Reference

Config

Source: config.go

FieldTypeDefaultDescription
Driverstring"inmemory"Queue backend
URLstring""Connection URL
Hosts[]stringnilMultiple host URLs
Usernamestring""Auth username
Passwordstring""Auth password
VHoststring""Virtual host (RabbitMQ)
MaxConnectionsint10Connection pool max
MaxIdleConnectionsint5Idle connection max
ConnectTimeouttime.Duration10sConnection timeout
ReadTimeouttime.Duration30sRead timeout
WriteTimeouttime.Duration30sWrite timeout
KeepAlivetime.Duration60sConnection keepalive
MaxRetriesint3Max retry attempts
RetryBackofftime.Duration100msInitial retry backoff
RetryMultiplierfloat642.0Backoff multiplier
MaxRetryBackofftime.Duration30sMaximum retry backoff
DefaultPrefetchint10Default consumer prefetch
DefaultConcurrencyint1Default consumer concurrency
DefaultTimeouttime.Duration30sDefault message timeout
EnableDeadLetterbooltrueRoute failed messages to DLQ
DeadLetterSuffixstring".dlq"DLQ name suffix
EnablePersistencebooltruePersist messages to disk
EnablePriorityboolfalseEnable priority queues
EnableDelayedboolfalseEnable delayed messages
MaxMessageSizeint641048576 (1 MB)Maximum message size
EnableTLSboolfalseEnable TLS
EnableMetricsbooltrueEnable metrics
EnableTracingbooltrueEnable tracing
DatabaseRedisConnectionstring""Reuse Redis from database extension

Option Helpers

FunctionDescription
WithDriver(driver)Set queue backend driver
WithURL(url)Set connection URL
WithHosts(hosts...)Set multiple host URLs
WithAuth(username, password)Set authentication credentials
WithVHost(vhost)Set virtual host (RabbitMQ)
WithMaxConnections(max)Set connection pool size
WithPrefetch(prefetch)Set default consumer prefetch
WithConcurrency(concurrency)Set default consumer concurrency
WithTimeout(timeout)Set default message timeout
WithDeadLetter(enable)Toggle dead-letter queue routing
WithPersistence(enable)Toggle message persistence
WithPriority(enable)Toggle priority queue support
WithDelayed(enable)Toggle delayed message support
WithTLS(certFile, keyFile, caFile)Enable TLS
WithMetrics(enable)Toggle metrics
WithTracing(enable)Toggle tracing
WithDatabaseRedisConnection(name)Reuse Redis from database extension
WithConfig(config)Provide a complete config struct

How is this guide?

On this page