[][src]Struct nats::Options

pub struct Options { /* fields omitted */ }

Connect options.

Implementations

impl Options[src]

pub fn new() -> Options[src]

Options for establishing a new NATS Connection.

Example

let options = nats::Options::new();
let nc = options.connect("demo.nats.io")?;

pub fn with_token(token: &str) -> Options[src]

Authenticate with NATS using a token.

Example

let nc = nats::Options::with_token("t0k3n!")
    .connect("demo.nats.io")?;

pub fn with_user_pass(user: &str, password: &str) -> Options[src]

Authenticate with NATS using a username and password.

Example

let nc = nats::Options::with_user_pass("derek", "s3cr3t!")
    .connect("demo.nats.io")?;

pub fn with_credentials(path: impl AsRef<Path>) -> Options[src]

Authenticate with NATS using a .creds file.

Example

let nc = nats::Options::with_credentials("path/to/my.creds")
    .connect("connect.ngs.global")?;

pub fn with_jwt<J, S>(jwt_cb: J, sig_cb: S) -> Options where
    J: Fn() -> Result<String> + Send + Sync + 'static,
    S: Fn(&[u8]) -> Vec<u8> + Send + Sync + 'static, 
[src]

Authenticate with a function that loads user JWT and a signature function.

Example

let seed = "SUANQDPB2RUOE4ETUA26CNX7FUKE5ZZKFCQIIW63OX225F2CO7UEXTM7ZY";
let kp = nkeys::KeyPair::from_seed(seed).unwrap();

fn load_jwt() -> std::io::Result<String> {
    todo!()
}

let nc = nats::Options::with_jwt(load_jwt, move |nonce| kp.sign(nonce).unwrap())
    .connect("localhost")?;

pub fn with_nkey<F>(nkey: &str, sig_cb: F) -> Options where
    F: Fn(&[u8]) -> Vec<u8> + Send + Sync + 'static, 
[src]

Authenticate with NATS using a public key and a signature function.

Example

let nkey = "UAMMBNV2EYR65NYZZ7IAK5SIR5ODNTTERJOBOF4KJLMWI45YOXOSWULM";
let seed = "SUANQDPB2RUOE4ETUA26CNX7FUKE5ZZKFCQIIW63OX225F2CO7UEXTM7ZY";
let kp = nkeys::KeyPair::from_seed(seed).unwrap();

let nc = nats::Options::with_nkey(nkey, move |nonce| kp.sign(nonce).unwrap())
    .connect("localhost")?;

pub fn client_cert(
    mut self: Self,
    cert: impl AsRef<Path>,
    key: impl AsRef<Path>
) -> Options
[src]

Set client certificate and private key files.

Example

let nc = nats::Options::new()
    .client_cert("client-cert.pem", "client-key.pem")
    .connect("nats://localhost:4443")?;

pub fn with_name(mut self: Self, name: &str) -> Options[src]

Add a name option to this configuration.

Example

let nc = nats::Options::new()
    .with_name("My App")
    .connect("demo.nats.io")?;

pub fn no_echo(mut self: Self) -> Options[src]

Select option to not deliver messages that we have published.

Example

let nc = nats::Options::new()
    .no_echo()
    .connect("demo.nats.io")?;

pub fn max_reconnects<T: Into<Option<usize>>>(
    mut self: Self,
    max_reconnects: T
) -> Options
[src]

Set the maximum number of reconnect attempts. If no servers remain that are under this threshold, then no further reconnect shall be attempted. The reconnect attempt for a server is reset upon successfull connection. If None then there is no maximum number of attempts.

Example

let nc = nats::Options::new()
    .max_reconnects(3)
    .connect("demo.nats.io")?;

pub fn reconnect_buffer_size(
    mut self: Self,
    reconnect_buffer_size: usize
) -> Options
[src]

Set the maximum amount of bytes to buffer when accepting outgoing traffic in disconnected mode.

The default value is 8mb.

Example

let nc = nats::Options::new()
    .reconnect_buffer_size(64 * 1024)
    .connect("demo.nats.io")?;

pub fn connect(self, nats_url: &str) -> Result<Connection>[src]

Establish a Connection with a NATS server.

Multiple servers may be specified by separating them with commas.

Example

let options = nats::Options::new();
let nc = options.connect("demo.nats.io")?;

In the below case, the second server is configured to use TLS but the first one is not. Using the tls_required method can ensure that all servers are connected to with TLS, if that is your intention.

let options = nats::Options::new();
let nc = options.connect("nats://demo.nats.io:4222,tls://demo.nats.io:4443")?;

pub fn disconnect_callback<F>(mut self: Self, cb: F) -> Self where
    F: Fn() + Send + Sync + 'static, 
[src]

Set a callback to be executed when connectivity to a server has been lost.

Example

let nc = nats::Options::new()
    .disconnect_callback(|| println!("connection has been lost"))
    .connect("demo.nats.io")?;

pub fn reconnect_callback<F>(mut self: Self, cb: F) -> Self where
    F: Fn() + Send + Sync + 'static, 
[src]

Set a callback to be executed when connectivity to a server has been reestablished.

Example

let nc = nats::Options::new()
    .reconnect_callback(|| println!("connection has been reestablished"))
    .connect("demo.nats.io")?;

pub fn close_callback<F>(mut self: Self, cb: F) -> Self where
    F: Fn() + Send + Sync + 'static, 
[src]

Set a callback to be executed when the client has been closed due to exhausting reconnect retries to known servers or by completing a drain request.

Example

let nc = nats::Options::new()
    .close_callback(|| println!("connection has been closed"))
    .connect("demo.nats.io")?;
nc.drain().unwrap();

pub fn reconnect_delay_callback<F>(mut self: Self, cb: F) -> Self where
    F: Fn(usize) -> Duration + Send + Sync + 'static, 
[src]

Set a callback to be executed for calculating the backoff duration to wait before a server reconnection attempt.

The function takes the number of reconnects as an argument and returns the Duration that should be waited before making the next connection attempt.

It is recommended that some random jitter is added to your returned Duration.

Example

let nc = nats::Options::new()
    .reconnect_delay_callback(|c| Duration::from_millis(std::cmp::min((c * 100) as u64, 8000)))
    .connect("demo.nats.io")?;

pub fn tls_required(mut self: Self, tls_required: bool) -> Options[src]

Setting this requires that TLS be set for all server connections.

If you only want to use TLS for some server connections, you may declare them separately in the connect string by prefixing them with tls://host:port instead of nats://host:port.

Examples


let nc = nats::Options::new()
    .tls_required(true)
    .connect("tls://demo.nats.io:4443")?;

pub fn add_root_certificate(mut self: Self, path: impl AsRef<Path>) -> Options[src]

Adds a root certificate file.

The file must be PEM encoded. All certificates in the file will be used.

Examples


let nc = nats::Options::new()
    .add_root_certificate("my-certs.pem")
    .connect("tls://demo.nats.io:4443")?;

Trait Implementations

impl Debug for Options[src]

impl Default for Options[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

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