Skip to main content

MessageBus

Trait MessageBus 

Source
pub trait MessageBus:
    Send
    + Sync
    + Clone
    + 'static {
    // Required methods
    fn publish<'life0, 'async_trait>(
        &'life0 self,
        subject: String,
        payload: Bytes,
    ) -> Pin<Box<dyn Future<Output = Result<(), PublishError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn request<'life0, 'async_trait>(
        &'life0 self,
        subject: String,
        payload: Bytes,
    ) -> Pin<Box<dyn Future<Output = Result<Message, RequestError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
}
Expand description

A trait abstraction over message bus (e.g. NATS) interactions.

Required Methods§

Source

fn publish<'life0, 'async_trait>( &'life0 self, subject: String, payload: Bytes, ) -> Pin<Box<dyn Future<Output = Result<(), PublishError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Publishes a message to a given subject.

Source

fn request<'life0, 'async_trait>( &'life0 self, subject: String, payload: Bytes, ) -> Pin<Box<dyn Future<Output = Result<Message, RequestError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Sends a request message to a given subject and waits for a response.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl MessageBus for Client

Source§

fn publish<'life0, 'async_trait>( &'life0 self, subject: String, payload: Bytes, ) -> Pin<Box<dyn Future<Output = Result<(), PublishError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source§

fn request<'life0, 'async_trait>( &'life0 self, subject: String, payload: Bytes, ) -> Pin<Box<dyn Future<Output = Result<Message, RequestError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Implementors§