Struct nats::Options[][src]

pub struct Options { /* fields omitted */ }
Expand description

Connect options.

Implementations

Options for establishing a new NATS Connection.

Example

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

Authenticate with NATS using a token.

Example

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

Authenticate with NATS using a username and password.

Example

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

Authenticate with NATS using a .creds file.

This will open the provided file, load its creds, perform the desired authentication, and then zero the memory used to store the creds before continuing.

Example

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

Authenticate with NATS using a static credential str, using the creds file format. Note that this is more hazardous than using the above with_credentials method because it retains the secret in-memory for the lifetime of this client instead of zeroing the credentials after holding them for a very short time, as the with_credentials method does.

Example

let creds =
"-----BEGIN NATS USER JWT-----
eyJ0eXAiOiJqd3QiLCJhbGciOiJlZDI1NTE5...
------END NATS USER JWT------

************************* IMPORTANT *************************
NKEY Seed printed below can be used sign and prove identity.
NKEYs are sensitive and should be treated as secrets.

-----BEGIN USER NKEY SEED-----
SUAIO3FHUX5PNV2LQIIP7TZ3N4L7TX3W53MQGEIVYFIGA635OZCKEYHFLM
------END USER NKEY SEED------
";

let nc = nats::Options::with_static_credentials(creds)
    .expect("failed to parse static creds")
    .connect("connect.ngs.global")?;

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")?;

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")?;

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")?;

Set the default TLS config that will be used for connections. Note that this is less secure than specifying TLS certificate file paths using the other methods on Options, which will avoid keeping raw key material in-memory and will zero memory buffers that temporarily contain key material during connection attempts. This is intended to be used as a method of last-resort when providing well-known file paths is not feasible.

To avoid version conflicts, the rustls version used by this crate is exported as nats::rustls.

Example

let mut tls_client_config = nats::rustls::ClientConfig::default();
tls_client_config
    .set_single_client_cert(
        vec![nats::rustls::Certificate(b"MY_CERT".to_vec())],
        nats::rustls::PrivateKey(b"MY_KEY".to_vec()),
    );
let nc = nats::Options::new()
    .tls_client_config(tls_client_config)
    .connect("nats://localhost:4443")?;

Add a name option to this configuration.

Example

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

Select option to not deliver messages that we have published.

Example

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

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")?;

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")?;

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")?;

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")?;

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")?;

Set a custom JetStream API prefix. This is useful when using JetStream through exports/imports.

Example

let nc = nats::Options::new()
    .jetstream_api_prefix("some_exported_prefix".to_string())
    .connect("demo.nats.io")?;
nc.drain().unwrap();

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();

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")?;

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")?;

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

Formats the value using the given formatter. Read more

Returns the “default value” for a type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

Should always be Self

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.