Skip to main content

Publisher

Struct Publisher 

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

A Publisher client for the Cloud Pub/Sub API.

A Publisher sends messages to a specific topic. It manages message batching and sending in a background task.

let publisher = Publisher::builder("projects/my-project/topics/my-topic").build().await?;
let message_id_future = publisher.publish(Message::new().set_data("Hello, World"));

§Configuration

To configure Publisher use the with_* methods in the type returned by builder(). The default configuration should work for most applications. Common configuration changes include

  • with_endpoint(): by default this client uses the global default endpoint (https://pubsub.googleapis.com). Applications using regional endpoints or running in restricted networks (e.g. a network configured override this default.
  • with_credentials(): by default this client uses Application Default Credentials. Applications using custom authentication may need to override this default.

§Pooling and Cloning

Publisher holds a connection pool internally, it is advised to create one and then reuse it. You do not need to wrap Publisher in an Rc or Arc to reuse it.

Implementations§

Source§

impl Publisher

Source

pub fn builder<T: Into<String>>(topic: T) -> PublisherBuilder

Returns a builder for Publisher.

§Example
let publisher = Publisher::builder("projects/my-project/topics/topic").build().await?;
Source

pub fn publish(&self, msg: Message) -> PublishFuture

Publishes a message to the topic.

When this method encounters a non-recoverable error publishing for an ordering key, it will pause publishing on all new messages on that ordering key. Any outstanding messages that have not yet been published may return an error.

let message_id = publisher.publish(Message::new().set_data("Hello, World")).await?;
Source

pub async fn flush(&self)

Flushes all buffered messages across all ordering keys, sending them immediately.

let _handle = publisher.publish(Message::new().set_data("event"));
// Ensures the message above is sent without needing to track its future.
publisher.flush().await;

This method bypasses configured batching delays and returns only after all messages buffered at the time of the call have reached a terminal state (success or permanent failure).

§Recommendations
  • For most use cases, we recommend you .await the PublishFuture returned by publish to retrieve message IDs and handle specific errors.
  • Use flush() as a convenience during application shutdown to ensure the client attempts to send all outstanding data.
Source

pub fn resume_publish<T: Into<String>>(&self, ordering_key: T)

Resume accepting publish for a paused ordering key.

Publishing using an ordering key might be paused if an error is encountered while publishing, to prevent messages from being published out of order. If the ordering key is not currently paused, this function is a no-op.

§Example
if let Err(_) = publisher.publish(Message::new().set_data("foo").set_ordering_key("bar")).await {
    // Error handling code can go here.
    publisher.resume_publish("bar");
}

Trait Implementations§

Source§

impl Clone for Publisher

Source§

fn clone(&self) -> Publisher

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Publisher

Source§

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

Formats the value using the given formatter. 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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
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