use azure_identity::DeveloperToolsCredential;
use azure_storage_queue::{models::QueueMessage, QueueClient};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let account = std::env::var("AZURE_QUEUE_STORAGE_ACCOUNT_NAME")
.expect("Set AZURE_QUEUE_STORAGE_ACCOUNT_NAME environment variable");
let endpoint = format!("https://{}.queue.core.windows.net/", account);
let queue_name = "hello-world-queue";
let credential = DeveloperToolsCredential::new(None)?;
let queue_client = QueueClient::new(&endpoint, queue_name, Some(credential), None)?;
queue_client.create(None).await?;
println!("Created queue '{queue_name}'");
let body = QueueMessage {
message_text: Some("Hello, Azure Queue Storage!".to_string()),
};
queue_client.send_message(body.try_into()?, None).await?;
println!("Sent message");
let response = queue_client.receive_messages(None).await?;
let messages = response.into_model()?;
for msg in messages.items.unwrap_or_default() {
println!(
"Received: {}",
msg.message_text.as_deref().unwrap_or("<empty>")
);
}
queue_client.delete(None).await?;
println!("Deleted queue '{queue_name}'");
Ok(())
}