Skip to main content

ConnectedPulsarBroker

Struct ConnectedPulsarBroker 

Source
pub struct ConnectedPulsarBroker { /* private fields */ }
Expand description

The typed witness that connect succeeded: holds the live client directly.

Implementations§

Source§

impl ConnectedPulsarBroker

Source

pub fn publisher(&self) -> PulsarPublisher

A publisher from the connected form. It rides the same cell-backed publisher type as the early path; by now connect has filled the cell, so it resolves immediately.

Source

pub async fn subscribe_descriptor( &self, descriptor: PulsarSubscription, ) -> Result<PulsarSubscriber, PulsarError>

Opens the subscription described by descriptor.

§Errors

Returns PulsarError when the descriptor is invalid, the consumer cannot be created, or the broker is shut down.

Trait Implementations§

Source§

impl ConnectedBroker for ConnectedPulsarBroker

Source§

type Error = PulsarError

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

type Closed = ()

The terminal witness returned by shutdown. Read more
Source§

async fn shutdown(self) -> Result<(), Self::Error>

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

impl Debug for ConnectedPulsarBroker

Source§

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

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

impl DefaultPublish for ConnectedPulsarBroker

Source§

type Policy = PulsarPublish

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

impl PublishPolicy<ConnectedPulsarBroker> for PulsarPublish

Source§

type Live = PulsarPublisher

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 pair( self, connected: &ConnectedPulsarBroker, ) -> impl Future<Output = Result<Self::Live, PairError>>

Pairs the policy with a connected broker, producing the live publisher. Read more
Source§

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

What a publish through this policy adds to its channel in the generated AsyncAPI document. Read more
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 ConnectedPulsarBroker

Source§

type Copies = BrokerMoves

A bare name opens the same consumer a descriptor does, so a spent delivery moves at the client here too, under the policy the registration declared.

Source§

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

A bare name joins the broker’s default subscription, so the handlers mounted by name compete on one durable cursor. A broker that names none refuses with PulsarError::Invalid naming the setting.

Source§

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

Maps the declaration onto the consumer this name opens: the limit and the topic become the client’s own DeadLetterPolicy, built in subscribe where the connection exists.

Source§

type Subscriber = PulsarSubscriber

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

impl SubscriptionSource<ConnectedPulsarBroker> for PulsarSubscription

The Pulsar client moves a spent delivery itself: it counts the redeliveries of a message and, past the consumer’s limit, produces it to the dead-letter topic and acknowledges the original. Nothing is republished from the service, on any of the three addressing forms, so out_retry(..) over this descriptor is a compile error and the registration’s declaration reaches the consumer instead.

Source§

fn declare_retry(self, declaration: &RetryDeclaration) -> Self

Records the declaration; the consumer is built from it in subscribe, where the connection exists.

Source§

type Subscriber = PulsarSubscriber

The subscriber type this source opens.
Source§

type Copies = BrokerMoves

Who publishes the copies this subscription’s retries are made of, and who names where they go: AddressedCopies, NamedCopies or BrokerMoves. Read more
Source§

fn name(&self) -> &str

The name (subject / channel) this subscription binds to. Read more
Source§

async fn subscribe( self, connected: &ConnectedPulsarBroker, ) -> Result<PulsarSubscriber, PulsarError>

Opens the subscription against the connected broker. Called once at startup. Read more
Source§

fn channel_bindings(&self) -> Bindings

What this subscription adds to its channel in the generated AsyncAPI document. Read more
Source§

fn operation_bindings(&self) -> Bindings

What this subscription adds to its receive operation in the document. Read more
Source§

fn declare_retry_on( &self, connected: &C, declaration: &RetryDeclaration, ) -> Result<(), DeclareRetryError>

Carries the registration’s declaration to the broker, at the same point and before the subscription opens. Read more
Source§

fn message_bindings(&self) -> Bindings

What this subscription adds to the messages that arrive on it. Read more
Source§

impl TestableBroker for ConnectedPulsarBroker

Available on crate feature testing only.

The harness’s view of the connected broker: what it injects and reads back on the in-process transport, and, on either transport, which subscriptions a publish reaches.

§Panics

inject and published panic on a broker connected with connect: the harness drives only the transport connect_in_process produced, and a live connection has no log to read and no synchronous way to take a message. inject panics on a message a server refuses (a destination that is no topic name, a header value that is not UTF-8), which the trait gives no way to report.

Source§

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

Pulsar’s routing: a message reaches every subscription over its topic once, and within one subscription one of its consumers, so each durable subscription the topic reaches is owed the message once, by one of its consumers in subscriptions. In process that is the consumer the transport picks for the next message; against a server, which picks its consumer itself, it is the first of them. A topic reads the same under either spelling, and a pattern matches the fully qualified names of the namespace its prefix names.

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 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§

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