Skip to main content

Subscribe

Struct Subscribe 

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

Builder for the client::Subscriber::subscribe method.

Implementations§

Source§

impl Subscribe

Source

pub fn build(self) -> MessageStream

Creates a new stream to receive messages from the subscription.

§Example
let mut stream = client
    .subscribe("projects/my-project/subscriptions/my-subscription")
    .build();
while let Some((m, h)) = stream.next().await.transpose()? {
    println!("Received message m={m:?}");
    h.ack();
}

Note that the underlying connection with the server is lazy-initialized. It is not established until MessageStream::next() is called.

Source

pub fn set_max_lease<T: Into<Duration>>(self, v: T) -> Self

Sets the maximum lease deadline for a message.

§Example
let stream = client.subscribe("projects/my-project/subscriptions/my-subscription")
    .set_max_lease(Duration::from_secs(3600))
    .build();

The client holds a message for at most this amount. After a message has been held for this long, the client will stop extending its lease.

The default value is 60 minutes. If it takes your application longer than 60 minutes to process a message, you should increase this value.

Source

pub fn set_max_lease_extension<T: Into<Duration>>(self, v: T) -> Self

Sets the maximum duration to extend lease deadlines by.

§Example
let stream = client.subscribe("projects/my-project/subscriptions/my-subscription")
    .set_max_lease_extension(Duration::from_secs(20))
    .build();

The client extends lease deadlines by at most this amount.

If the server does not hear back from the client within this deadline (e.g. if an application crashes), it will resend any unacknowledged messages to another subscriber.

Note that this value is independent of the ack deadline configured on the subscription.

The minimum deadline you can specify is 10 seconds. The maximum deadline you can specify is 10 minutes. The client clamps the supplied value to this range.

The default value is 60 seconds.

Source

pub fn set_max_outstanding_messages<T: Into<i64>>(self, v: T) -> Self

Flow control settings for the maximum number of outstanding messages.

§Example
let stream = client.subscribe("projects/my-project/subscriptions/my-subscription")
    .set_max_outstanding_messages(2000)
    .build();

The server will stop sending messages to a client when this many messages are outstanding (i.e. that have not been acked). The server resumes sending messages when the outstanding message count drops below this value.

The limit applies per-stream. It is not a global limit.

Use a value <= 0 to set no limit on the number of outstanding messages.

The default value is 1000 messages.

Source

pub fn set_max_outstanding_bytes<T: Into<i64>>(self, v: T) -> Self

Flow control settings for the maximum number of outstanding bytes.

§Example
const MIB: i64 = 1024 * 1024;
let stream = client.subscribe("projects/my-project/subscriptions/my-subscription")
    .set_max_outstanding_bytes(200 * MIB)
    .build();

The server will stop sending messages to a client when this many bytes of messages are outstanding (i.e. that have not been acked). The server resumes sending messages when the outstanding byte count drops below this value.

The limit applies per-stream. It is not a global limit.

Use a value <= 0 to set no limit on the number of outstanding bytes.

The default value is 100 MiB.

Source

pub fn set_shutdown_behavior(self, v: ShutdownBehavior) -> Self

Sets the shutdown behavior for the stream.

§Example
use google_cloud_pubsub::subscriber::ShutdownBehavior::NackImmediately;
let stream = client.subscribe("projects/my-project/subscriptions/my-subscription")
    .set_shutdown_behavior(NackImmediately)
    .build();

The default behavior is WaitForProcessing.

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