#[cfg(feature = "tls")]
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let mut args = std::env::args().skip(1);
let redis_url = args
.next()
.unwrap_or_else(|| "rediss://127.0.0.1:6380".to_string());
let cert_path = Some("asynq/examples//certs/redis.crt");
let key_path = Some("asynq/examples//certs/redis.key");
let ca_path = Some("asynq/examples//certs/ca.crt");
fn read_bytes(path: &str) -> anyhow::Result<Vec<u8>> {
use std::io::Read;
let mut f = std::fs::File::open(path)?;
let mut buf = Vec::new();
f.read_to_end(&mut buf)?;
Ok(buf)
}
let client_tls = if let (Some(cert), Some(key)) = (cert_path, key_path) {
Some(redis::ClientTlsConfig {
client_cert: read_bytes(cert)?,
client_key: read_bytes(key)?,
})
} else {
None
};
let root_cert = if let Some(ca) = ca_path {
Some(read_bytes(ca)?)
} else {
None
};
let tls_certs = redis::TlsCertificates {
client_tls,
root_cert,
};
let conn = asynq::backend::RedisConnectionType::single_with_tls(redis_url.as_str(), tls_certs)?;
let broker = asynq::backend::RedisBroker::new(conn).await?;
let mut conn = broker.get_async_connection().await?;
let pong: String = redis::cmd("PING").query_async(&mut conn).await?;
println!("PING -> {pong}");
Ok(())
}
#[cfg(not(feature = "tls"))]
fn main() {}