Skip to content

Queue-config-type ​

QueueConfig is the public serializable config type used to describe synchronous queue wrapping. On the root src facade, it is re-exported from src/config_model, which is the real owner of the concrete queue config model.

Interface ​

moonbit
pub using @config_model { type QueueConfig }

output ​

  • QueueConfig - Public queue config object containing max_pending and overflow.

Explanation ​

Detailed rules explaining key parameters and behaviors

  • This root surface is a re-export, not the concrete owner definition.
  • The concrete type lives in @config_model.QueueConfig, not in @utils.
  • The current fields are max_pending : Int and overflow : QueueOverflowPolicy.
  • QueueConfig::new(...) constructs this type as the normal handwritten entry point.
  • queue_config_to_json(...) and stringify_queue_config(...) serialize the same public config shape for tooling or persistence.

How to Use ​

Here are some specific examples provided.

When Need A Typed Queue Policy Value ​

When synchronous queue behavior should be carried as config instead of attached immediately to a logger:

moonbit
let queue : QueueConfig = QueueConfig::new(32, overflow=QueueOverflowPolicy::DropOldest)

In this example, the queue policy stays as one typed value that can be embedded into larger config objects later.

When Need To Inspect Or Export Queue Settings ​

When queue wrapping policy should be serialized or logged before build time:

moonbit
let queue = QueueConfig::new(8)
println(stringify_queue_config(queue, pretty=true))

In this example, the same public config type supports both inspection and later runtime assembly.

Error Case ​

e.g.:

  • QueueConfig itself does not have a runtime failure mode.

  • If queue config is never attached to a LoggerConfig, it remains valid data but has no effect on built runtime loggers.

Notes ​

  1. Use QueueConfig::new(...) when you need a value of this type in code.

  2. Use QueuedSink or Logger::with_queue(...) when you need direct runtime queue composition instead of config data.

Published from the repository docs folder with VitePress.