Struct momento_protos::cache_client::pubsub::pubsub_client::PubsubClient
source · 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>
impl PubsubClient<Channel>
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,
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,
pub fn new(inner: T) -> Self
pub fn with_origin(inner: T, origin: Uri) -> Self
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,
sourcepub fn send_compressed(self, encoding: CompressionEncoding) -> Self
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.
sourcepub fn accept_compressed(self, encoding: CompressionEncoding) -> Self
pub fn accept_compressed(self, encoding: CompressionEncoding) -> Self
Enable decompressing responses.
sourcepub async fn publish(
&mut self,
request: impl IntoRequest<PublishRequest>
) -> Result<Response<Empty>, Status>
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
sourcepub async fn subscribe(
&mut self,
request: impl IntoRequest<SubscriptionRequest>
) -> Result<Response<Streaming<SubscriptionItem>>, Status>
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>
impl<T: Clone> Clone for PubsubClient<T>
source§fn clone(&self) -> PubsubClient<T>
fn clone(&self) -> PubsubClient<T>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto 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> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request