pub struct PubsubClient<T> { /* private fields */ }
Expand description

For working with topics in a cache. Momento topics are conceptually located on a cache. They are best-effort multicast. To use them, create a cache then start subscribing and publishing!

Momento topic subscriptions try to give you information about the quality of the stream you are receiving. For example, you might miss messages if your network is slow, or if some intermediate switch fails, or due to rate limiting. It is also possible, though we try to avoid it, that messages could briefly come out of order between subscribers. We try to tell you when things like this happen via a Discontinuity in your subscription stream. If you do not care about occasional discontinuities then don’t bother handling them! You might still want to log them just in case ;-)

Implementations§

source§

impl PubsubClient<Channel>

source

pub async fn connect<D>(dst: D) -> Result<Self, Error>where D: TryInto<Endpoint>, D::Error: Into<StdError>,

Attempt to create a new client by connecting to a given endpoint.

source§

impl<T> PubsubClient<T>where T: GrpcService<BoxBody>, T::Error: Into<StdError>, T::ResponseBody: Body<Data = Bytes> + Send + 'static, <T::ResponseBody as Body>::Error: Into<StdError> + Send,

source

pub fn new(inner: T) -> Self

source

pub fn with_origin(inner: T, origin: Uri) -> Self

source

pub fn with_interceptor<F>( inner: T, interceptor: F ) -> PubsubClient<InterceptedService<T, F>>where F: Interceptor, T::ResponseBody: Default, T: Service<Request<BoxBody>, Response = Response<<T as GrpcService<BoxBody>>::ResponseBody>>, <T as Service<Request<BoxBody>>>::Error: Into<StdError> + Send + Sync,

source

pub fn send_compressed(self, encoding: CompressionEncoding) -> Self

Compress requests with the given encoding.

This requires the server to support it otherwise it might respond with an error.

source

pub fn accept_compressed(self, encoding: CompressionEncoding) -> Self

Enable decompressing responses.

source

pub async fn publish( &mut self, request: impl IntoRequest<PublishRequest> ) -> Result<Response<Empty>, Status>

Publish a message to a topic.

If a topic has no subscribers, then the effect of Publish MAY be either of:

  • It is dropped and the topic is nonexistent.
  • It is accepted to the topic as the next message.

Publish() does not wait for subscribers to accept. It returns Ok upon accepting the topic value. It also returns Ok if there are no subscribers and the value happens to be dropped. Publish() can not guarantee delivery in theory but in practice it should almost always deliver to subscribers.

REQUIRES HEADER authorization: Momento auth token

source

pub async fn subscribe( &mut self, request: impl IntoRequest<SubscriptionRequest> ) -> Result<Response<Streaming<SubscriptionItem>>, Status>

Subscribe to notifications from a topic.

You will receive a stream of values and (hopefully occasional) discontinuities. Values will appear as copies of the payloads you Publish() to the topic.

REQUIRES HEADER authorization: Momento auth token

Trait Implementations§

source§

impl<T: Clone> Clone for PubsubClient<T>

source§

fn clone(&self) -> PubsubClient<T>

Returns a copy 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<T: Debug> Debug for PubsubClient<T>

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for PubsubClient<T>where T: RefUnwindSafe,

§

impl<T> Send for PubsubClient<T>where T: Send,

§

impl<T> Sync for PubsubClient<T>where T: Sync,

§

impl<T> Unpin for PubsubClient<T>where T: Unpin,

§

impl<T> UnwindSafe for PubsubClient<T>where T: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FromRef<T> for Twhere T: Clone,

§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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 Twhere U: From<T>,

const: unstable · 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<T> ToOwned for Twhere T: Clone,

§

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 Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

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