Struct nats::subscription::Subscription [−][src]
pub struct Subscription(_);
A Subscription
receives Message
s published
to specific NATS Subject
s.
Implementations
impl Subscription
[src]
impl Subscription
[src]pub fn receiver(&self) -> &Receiver<Message>
[src]
Get a crossbeam Receiver for subscription messages.
Useful for crossbeam_channel::select
macro
Example
let sub1_ch = sub1.receiver(); let sub2_ch = sub2.receiver(); crossbeam_channel::select! { recv(sub1_ch) -> msg => { println!("Got message from sub1: {:?}", msg); Ok(()) } recv(sub2_ch) -> msg => { println!("Got message from sub2: {:?}", msg); Ok(()) } }
pub fn next(&self) -> Option<Message>
[src]
Get the next message, or None if the subscription has been unsubscribed or the connection closed.
Example
if let Some(msg) = sub.next() {}
pub fn try_next(&self) -> Option<Message>
[src]
Try to get the next message, or None if no messages are present or if the subscription has been unsubscribed or the connection closed.
Example
if let Some(msg) = sub.try_next() { println!("Received {}", msg); }
pub fn next_timeout(&self, timeout: Duration) -> Result<Message>
[src]
Get the next message, or a timeout error if no messages are available for timout.
Example
if let Ok(msg) = sub.next_timeout(std::time::Duration::from_secs(1)) {}
pub fn messages(&self) -> Iter<'_>ⓘ
[src]
pub fn iter(&self) -> Iter<'_>ⓘ
[src]
pub fn try_iter(&self) -> TryIter<'_>ⓘ
[src]
pub fn timeout_iter(&self, timeout: Duration) -> TimeoutIter<'_>ⓘNotable traits for TimeoutIter<'a>
impl<'a> Iterator for TimeoutIter<'a> type Item = Message;
[src]
Notable traits for TimeoutIter<'a>
impl<'a> Iterator for TimeoutIter<'a> type Item = Message;
Returns a blocking message iterator with a time deadline for blocking.
Example
for msg in sub.timeout_iter(std::time::Duration::from_secs(1)) {}
pub fn with_handler<F>(self, handler: F) -> Handler where
F: Fn(Message) -> Result<()> + Send + 'static,
[src]
F: Fn(Message) -> Result<()> + Send + 'static,
Attach a closure to handle messages. This closure will execute in a
separate thread. The result of this call is a Handler
which can
not be iterated and must be unsubscribed or closed directly to
unregister interest. A Handler
will not unregister interest with
the server when drop(&mut self)
is called.
Example
nc.subscribe("bar")?.with_handler(move |msg| { println!("Received {}", &msg); Ok(()) });
pub fn unsubscribe(self) -> Result<()>
[src]
Unsubscribe a subscription immediately without draining.
Use drain
instead if you want any pending messages
to be processed by a handler, if one is configured.
Example
let sub = nc.subscribe("foo")?; sub.unsubscribe()?;
pub fn close(self) -> Result<()>
[src]
Close a subscription. Same as unsubscribe
Use drain
instead if you want any pending messages
to be processed by a handler, if one is configured.
Example
let sub = nc.subscribe("foo")?; sub.close()?;
pub fn drain(&self) -> Result<()>
[src]
Send an unsubscription then flush the connection, allowing any unprocessed messages to be handled by a handler function if one is configured.
After the flush returns, we know that a round-trip to the server has happened after it received our unsubscription, so we shut down the subscriber afterwards.
A similar method exists on the Connection
struct
which will drain all subscriptions for the NATS
client, and transition the entire system into
the closed state afterward.
Example
let mut sub = nc.subscribe("test.drain")?; nc.publish("test.drain", "message")?; sub.drain()?; let mut received = false; for _ in sub { received = true; } assert!(received);
Trait Implementations
impl Clone for Subscription
[src]
impl Clone for Subscription
[src]fn clone(&self) -> Subscription
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl IntoIterator for Subscription
[src]
impl IntoIterator for Subscription
[src]Auto Trait Implementations
impl !RefUnwindSafe for Subscription
impl !RefUnwindSafe for Subscription
impl Send for Subscription
impl Send for Subscription
impl Sync for Subscription
impl Sync for Subscription
impl Unpin for Subscription
impl Unpin for Subscription
impl !UnwindSafe for Subscription
impl !UnwindSafe for Subscription