Skip to main content

EventBusConfig

Struct EventBusConfig 

Source
pub struct EventBusConfig {
    pub num_shards: u16,
    pub ring_buffer_capacity: usize,
    pub backpressure_mode: BackpressureMode,
    pub batch: BatchConfig,
    pub adapter: AdapterConfig,
    pub scaling: Option<ScalingPolicy>,
    pub adapter_timeout: Duration,
    pub adapter_batch_retries: u32,
    pub producer_nonce_path: Option<PathBuf>,
}
Expand description

Top-level configuration for the event bus.

Fields§

§num_shards: u16

Number of shards for parallel ingestion. Each shard has its own ring buffer and batch worker. Default: number of CPU cores.

Unless you’re connected to an advanced AI orchestrator, swarm controller, or a local Nvidia Blackwell GPU cluster, any number is fine - it will revert to your physical core count by default.

§ring_buffer_capacity: usize

Capacity of each shard’s ring buffer (number of events). Must be a power of 2 for efficient modulo operations. Default: 1,048,576 (1M events per shard).

§backpressure_mode: BackpressureMode

Backpressure policy when ring buffers are full.

§batch: BatchConfig

Batch aggregation configuration.

§adapter: AdapterConfig

Adapter configuration.

§scaling: Option<ScalingPolicy>

Dynamic scaling configuration. If None, dynamic scaling is disabled.

§adapter_timeout: Duration

Timeout for adapter operations (init, on_batch, flush, shutdown). Prevents a hanging adapter from blocking the event bus. Default: 30 seconds.

§adapter_batch_retries: u32

Number of times to retry a failed on_batch before dropping the batch. 0 = no retries (drop immediately on failure, default). Retries use a fixed 100ms delay between attempts.

§producer_nonce_path: Option<PathBuf>

File path for the persistent producer nonce. When Some, the bus loads (or creates on first run) the u64 nonce at this path on startup and stamps it on every outgoing batch. Adapters that key dedup on (producer_nonce, shard, sequence_start, i) then dedup retransmits across process restart — JetStream’s Nats-Msg-Id is the canonical example.

When None (default), the bus uses a per-process nonce sampled fresh at every startup (today’s behavior). That’s fine for in-memory adapters and for any deployment where “at-most-once across process restart” is acceptable; production JetStream / Redis deployments should set this to a stable path on local persistent storage.

Implementations§

Source§

impl EventBusConfig

Source

pub fn builder() -> EventBusConfigBuilder

Create a new configuration builder.

Source

pub fn validate(&self) -> Result<(), ConfigError>

Validate the configuration.

Trait Implementations§

Source§

impl Clone for EventBusConfig

Source§

fn clone(&self) -> EventBusConfig

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for EventBusConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for EventBusConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more