pub struct Client { /* private fields */ }Expand description
Client is a Cloneable handle to NATS connection.
Client should not be created directly. Instead, one of two methods can be used:
crate::connect and crate::ConnectOptions::connect
Implementations§
Source§impl Client
impl Client
Sourcepub fn server_info(&self) -> ServerInfo
pub fn server_info(&self) -> ServerInfo
Returns last received info from the server.
§Examples
let client = async_nats::connect("demo.nats.io").await?;
println!("info: {:?}", client.server_info());Sourcepub fn is_server_compatible(&self, major: i64, minor: i64, patch: i64) -> bool
pub fn is_server_compatible(&self, major: i64, minor: i64, patch: i64) -> bool
Returns true if the server version is compatible with the version components.
§Examples
let client = async_nats::connect("demo.nats.io").await?;
assert!(client.is_server_compatible(2, 8, 4));Sourcepub async fn publish<S: ToSubject>(
&self,
subject: S,
payload: Bytes,
) -> Result<(), PublishError>
pub async fn publish<S: ToSubject>( &self, subject: S, payload: Bytes, ) -> Result<(), PublishError>
Sourcepub fn publish_sink<S: ToSubject>(&self, subject: S) -> Publisher
pub fn publish_sink<S: ToSubject>(&self, subject: S) -> Publisher
Sourcepub async fn publish_with_headers<S: ToSubject>(
&self,
subject: S,
headers: HeaderMap,
payload: Bytes,
) -> Result<(), PublishError>
pub async fn publish_with_headers<S: ToSubject>( &self, subject: S, headers: HeaderMap, payload: Bytes, ) -> Result<(), PublishError>
Publish a Message with headers to a given subject.
§Examples
use std::str::FromStr;
let client = async_nats::connect("demo.nats.io").await?;
let mut headers = async_nats::HeaderMap::new();
headers.insert(
"X-Header",
async_nats::HeaderValue::from_str("Value").unwrap(),
);
client
.publish_with_headers("events.data", headers, "payload".into())
.await?;Sourcepub fn publish_with_headers_sink<S: ToSubject>(
&self,
subject: S,
headers: HeaderMap,
) -> Publisher
pub fn publish_with_headers_sink<S: ToSubject>( &self, subject: S, headers: HeaderMap, ) -> Publisher
Sourcepub async fn publish_with_reply<S: ToSubject, R: ToSubject>(
&self,
subject: S,
reply: R,
payload: Bytes,
) -> Result<(), PublishError>
pub async fn publish_with_reply<S: ToSubject, R: ToSubject>( &self, subject: S, reply: R, payload: Bytes, ) -> Result<(), PublishError>
Publish a Message to a given subject, with specified response subject to which the subscriber can respond. This method does not await for the response.
§Examples
let client = async_nats::connect("demo.nats.io").await?;
client
.publish_with_reply("events.data", "reply_subject", "payload".into())
.await?;Sourcepub fn publish_with_reply_sink<S: ToSubject, R: ToSubject>(
&self,
subject: S,
reply: R,
) -> Publisher
pub fn publish_with_reply_sink<S: ToSubject, R: ToSubject>( &self, subject: S, reply: R, ) -> Publisher
Sourcepub async fn publish_with_reply_and_headers<S: ToSubject, R: ToSubject>(
&self,
subject: S,
reply: R,
headers: HeaderMap,
payload: Bytes,
) -> Result<(), PublishError>
pub async fn publish_with_reply_and_headers<S: ToSubject, R: ToSubject>( &self, subject: S, reply: R, headers: HeaderMap, payload: Bytes, ) -> Result<(), PublishError>
Publish a Message to a given subject with headers and specified response subject to which the subscriber can respond. This method does not await for the response.
§Examples
use std::str::FromStr;
let client = async_nats::connect("demo.nats.io").await?;
let mut headers = async_nats::HeaderMap::new();
client
.publish_with_reply_and_headers("events.data", "reply_subject", headers, "payload".into())
.await?;Sourcepub fn publish_with_reply_and_headers_sink<S: ToSubject, R: ToSubject>(
&self,
subject: S,
reply: R,
headers: HeaderMap,
) -> Publisher
pub fn publish_with_reply_and_headers_sink<S: ToSubject, R: ToSubject>( &self, subject: S, reply: R, headers: HeaderMap, ) -> Publisher
Sourcepub async fn request<S: ToSubject>(
&self,
subject: S,
payload: Bytes,
) -> Result<Message, RequestError>
pub async fn request<S: ToSubject>( &self, subject: S, payload: Bytes, ) -> Result<Message, RequestError>
Sends the request with headers.
§Examples
let client = async_nats::connect("demo.nats.io").await?;
let response = client.request("service", "data".into()).await?;Sourcepub async fn request_with_headers<S: ToSubject>(
&self,
subject: S,
headers: HeaderMap,
payload: Bytes,
) -> Result<Message, RequestError>
pub async fn request_with_headers<S: ToSubject>( &self, subject: S, headers: HeaderMap, payload: Bytes, ) -> Result<Message, RequestError>
Sends the request with headers.
§Examples
let client = async_nats::connect("demo.nats.io").await?;
let mut headers = async_nats::HeaderMap::new();
headers.insert("Key", "Value");
let response = client
.request_with_headers("service", headers, "data".into())
.await?;Sourcepub async fn send_request<S: ToSubject>(
&self,
subject: S,
request: Request,
) -> Result<Message, RequestError>
pub async fn send_request<S: ToSubject>( &self, subject: S, request: Request, ) -> Result<Message, RequestError>
Sourcepub fn new_inbox(&self) -> String
pub fn new_inbox(&self) -> String
Create a new globally unique inbox which can be used for replies.
§Examples
let reply = nc.new_inbox();
let rsub = nc.subscribe(reply).await?;Sourcepub async fn subscribe<S: ToSubject>(
&self,
subject: S,
) -> Result<Subscriber, SubscribeError>
pub async fn subscribe<S: ToSubject>( &self, subject: S, ) -> Result<Subscriber, SubscribeError>
Sourcepub async fn queue_subscribe<S: ToSubject>(
&self,
subject: S,
queue_group: String,
) -> Result<Subscriber, SubscribeError>
pub async fn queue_subscribe<S: ToSubject>( &self, subject: S, queue_group: String, ) -> Result<Subscriber, SubscribeError>
Subscribes to a subject with a queue group to receive messages.
§Examples
use futures::StreamExt;
let client = async_nats::connect("demo.nats.io").await?;
let mut subscription = client.queue_subscribe("events.>", "queue".into()).await?;
while let Some(message) = subscription.next().await {
println!("received message: {:?}", message);
}Sourcepub async fn flush(&self) -> Result<(), FlushError>
pub async fn flush(&self) -> Result<(), FlushError>
Flushes the internal buffer ensuring that all messages are sent.
§Examples
let client = async_nats::connect("demo.nats.io").await?;
client.flush().await?;Sourcepub fn connection_state(&self) -> State
pub fn connection_state(&self) -> State
Returns the current state of the connection.
§Examples
let client = async_nats::connect("demo.nats.io").await?;
println!("connection state: {}", client.connection_state());Sourcepub async fn force_reconnect(&self) -> Result<(), ReconnectError>
pub async fn force_reconnect(&self) -> Result<(), ReconnectError>
Forces the client to reconnect.
Keep in mind that client will reconnect automatically if the connection is lost and this
method does not have to be used in normal circumstances.
However, if you want to force the client to reconnect, for example to re-trigger
the auth-callback, or manually rebalance connections, this method can be useful.
This method does not wait for connection to be re-established.
§Examples
let client = async_nats::connect("demo.nats.io").await?;
client.force_reconnect().await?;Trait Implementations§
Source§impl ServiceExt for Client
Available on crate feature service only.
impl ServiceExt for Client
service only.