Skip to main content

ConnectedZmqQueue

Struct ConnectedZmqQueue 

Source
pub struct ConnectedZmqQueue<Role = Bind> { /* private fields */ }
Expand description

The connected form of ZmqQueue; sockets attach per subscription and per publisher.

Implementations§

Source§

impl<Role> ConnectedZmqQueue<Role>

Source

pub fn bound_address(&self) -> Option<String>

The address a local subscription resolved by binding (useful with an ephemeral tcp://...:0 endpoint); None until a subscription has bound.

Source

pub fn publisher(&self) -> ZmqQueuePublisher

A publisher from the connected form.

Trait Implementations§

Source§

impl<Role: EndpointRole> ConnectedBroker for ConnectedZmqQueue<Role>

Source§

type Error = ZmqError

The error type returned by connected-broker operations.
Source§

type Closed = ()

The terminal witness returned by shutdown. Read more
Source§

fn shutdown(self) -> impl Future<Output = Result<(), Self::Error>>

Closes the broker connection, flushing in-flight publishes and stopping background tasks, consuming the connected form. Read more
Source§

impl<Role> Debug for ConnectedZmqQueue<Role>

Source§

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

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

impl<Role: EndpointRole> DefaultPublish for ConnectedZmqQueue<Role>

Source§

type Policy = ZmqQueuePublish

The broker’s plain publish policy, constructible with its defaults.
Source§

impl<Role: EndpointRole> PublishPolicy<ConnectedZmqQueue<Role>> for ZmqQueuePublish

Source§

fn pair( self, connected: &ConnectedZmqQueue<Role>, ) -> impl Future<Output = Result<Self::Live, PairError>>

On the bind side the publisher’s socket attaches here, so it listens once the service has started; a dialing publisher attaches on its first publish.

§Errors

Returns PairError when the socket of a binding publisher cannot take the endpoint.

Source§

fn channel_bindings(&self, channel: &str) -> Bindings

The destination reaches the binding, because on this pattern it is also what frame 0 of every message on the channel holds.

Source§

type Live = ZmqQueuePublisher

The live form this policy pairs into: a Publisher for a leaf policy, or the live wiring form for a combinator stack (a typed publisher over a policy pairs into the same typed publisher over the live leaf).
Source§

fn operation_bindings(&self, channel: &str) -> Bindings

What a publish through this policy adds to its send operation in the document. Read more
Source§

fn message_bindings(&self, channel: &str) -> Bindings

What a publish through this policy adds to the messages that leave through it. Read more
Source§

fn reply_address_location(&self) -> Option<&'static str>

Where a client finds the address of a reply this policy publishes, as a runtime expression. Read more
Source§

impl Subscribe for ConnectedZmqQueue<Bind>

Source§

type Copies = AddressedCopies

The subscribe name is the address: the subscription binds the endpoint, a PUSH socket of this service dials that listener, and a publish under the subscription’s name reaches it. The runtime publishes a retry copy there, and nothing has to be written at the mount site.

This is the whole retry path on ZeroMQ. Nothing settles a delivery, so a handler asking for retry_after is served only by the deferred copy the runtime publishes here. Competing consumers still compete for that copy, so the worker that retries is not necessarily the one that asked.

Source§

type Subscriber = ZmqSubscriber

The subscriber type opened by a by-name subscription.
Source§

async fn subscribe(&self, name: &str) -> Result<Self::Subscriber, Self::Error>

Opens a subscription to name, producing this broker’s Subscriber. Read more
Source§

fn declare_retry( &self, name: &str, declaration: &RetryDeclaration, ) -> Result<(), DeclareRetryError>

Takes what a registration mounted by a bare name declared about its retries, before the subscription opens. Read more
Source§

impl Subscribe for ConnectedZmqQueue<Connect>

Source§

type Copies = NamedCopies

A subscription that dials reads from the PUSH peer at the endpoint, a ventilator that sends and takes nothing, so a copy published back to it is refused by the handshake. The subscription therefore addresses no copy, and every registration names where its copies go: .out_retry(policy).to("name") over a broker that reaches a consumer, or a transform that names one per delivery. A registration that names neither is refused before the subscription opens, and a .build() chain that names neither does not compile.

Source§

type Subscriber = ZmqSubscriber

The subscriber type opened by a by-name subscription.
Source§

async fn subscribe(&self, name: &str) -> Result<Self::Subscriber, Self::Error>

Opens a subscription to name, producing this broker’s Subscriber. Read more
Source§

fn declare_retry( &self, name: &str, declaration: &RetryDeclaration, ) -> Result<(), DeclareRetryError>

Takes what a registration mounted by a bare name declared about its retries, before the subscription opens. Read more
Source§

impl<Role: EndpointRole> TestableBroker for ConnectedZmqQueue<Role>

The queue’s routing: a peer that pushes into an endpoint a subscription binds reaches that subscription, and one that subscriptions dial hands each message to one of them in turn, whatever its name frame says. A publish of this service reaches its own subscription only through the listener that subscription bound.

Source§

fn install_coordinator(&self, coordinator: Coordinator)

Installs the harness coordinator into this broker’s bus for a test run. Idempotent: a second install on the same broker is ignored.
Source§

fn inject(&self, message: OutgoingMessage<'_>)

Injects a message onto the bus as an external producer would, synchronously (no awaiting). Routes through the broker’s normal fanout, so it is recorded and counted like any publish. Read more
Source§

fn published(&self, name: &str) -> Vec<RawMessage>

Returns every message published to name on this broker, in publish order, after the evicted ones. Backs the harness’s published::<T>(name) assertions and expect_published.
Source§

fn routes(&self, _destination: &str, subscriptions: &[&str]) -> Vec<usize>

Which subscriptions of this broker a message published to destination is delivered to, as the broker’s own routing picks them: the positions in subscriptions (the names the app subscribed under on this broker) of the ones it delivers to. Read more
Source§

fn evicted(&self, name: &str) -> usize

How many of the oldest messages published to name this broker no longer holds, so published starts after them. Read more
Source§

fn backlog(&self) -> Backlog

What a subscription opened by name receives of the messages published to that name before it opened, as the real broker answers it: Backlog::Missed for publish/subscribe, Backlog::Delivered for a queue or a log that keeps them. Read more

Auto Trait Implementations§

§

impl<Role = Bind> !RefUnwindSafe for ConnectedZmqQueue<Role>

§

impl<Role = Bind> !UnwindSafe for ConnectedZmqQueue<Role>

§

impl<Role> Freeze for ConnectedZmqQueue<Role>
where PhantomData<fn() -> Role>: Freeze,

§

impl<Role> Send for ConnectedZmqQueue<Role>
where PhantomData<fn() -> Role>: Send,

§

impl<Role> Sync for ConnectedZmqQueue<Role>
where PhantomData<fn() -> Role>: Sync,

§

impl<Role> Unpin for ConnectedZmqQueue<Role>
where PhantomData<fn() -> Role>: Unpin,

§

impl<Role> UnsafeUnpin for ConnectedZmqQueue<Role>
where PhantomData<fn() -> Role>: UnsafeUnpin,

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> PublishedThrough<DefaultSlot> for T

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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