mirror of
https://github.com/perstarkse/minne.git
synced 2026-04-25 02:08:30 +02:00
init
new file: .aider.chat.history.md
This commit is contained in:
103
doc.rs
Normal file
103
doc.rs
Normal file
@@ -0,0 +1,103 @@
|
||||
|
||||
use amqprs::{
|
||||
callbacks::{DefaultChannelCallback, DefaultConnectionCallback},
|
||||
channel::{
|
||||
BasicConsumeArguments, BasicPublishArguments, QueueBindArguments, QueueDeclareArguments,
|
||||
},
|
||||
connection::{Connection, OpenConnectionArguments},
|
||||
consumer::DefaultConsumer,
|
||||
BasicProperties,
|
||||
};
|
||||
use tokio::time;
|
||||
|
||||
use tracing_subscriber::{fmt, prelude::*, EnvFilter};
|
||||
|
||||
#[tokio::main(flavor = "multi_thread", worker_threads = 2)]
|
||||
async fn main() {
|
||||
// construct a subscriber that prints formatted traces to stdout
|
||||
// global subscriber with log level according to RUST_LOG
|
||||
tracing_subscriber::registry()
|
||||
.with(fmt::layer())
|
||||
.with(EnvFilter::from_default_env())
|
||||
.try_init()
|
||||
.ok();
|
||||
|
||||
// open a connection to RabbitMQ server
|
||||
let connection = Connection::open(&OpenConnectionArguments::new(
|
||||
"localhost",
|
||||
5672,
|
||||
"user",
|
||||
"bitnami",
|
||||
))
|
||||
.await
|
||||
.unwrap();
|
||||
connection
|
||||
.register_callback(DefaultConnectionCallback)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
// open a channel on the connection
|
||||
let channel = connection.open_channel(None).await.unwrap();
|
||||
channel
|
||||
.register_callback(DefaultChannelCallback)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
// declare a durable queue
|
||||
let (queue_name, _, _) = channel
|
||||
.queue_declare(QueueDeclareArguments::durable_client_named(
|
||||
"amqprs.examples.basic",
|
||||
))
|
||||
.await
|
||||
.unwrap()
|
||||
.unwrap();
|
||||
|
||||
// bind the queue to exchange
|
||||
let routing_key = "amqprs.example";
|
||||
let exchange_name = "amq.topic";
|
||||
channel
|
||||
.queue_bind(QueueBindArguments::new(
|
||||
&queue_name,
|
||||
exchange_name,
|
||||
routing_key,
|
||||
))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// start consumer with given name
|
||||
let args = BasicConsumeArguments::new(&queue_name, "example_basic_pub_sub");
|
||||
|
||||
channel
|
||||
.basic_consume(DefaultConsumer::new(args.no_ack), args)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// publish message
|
||||
let content = String::from(
|
||||
r#"
|
||||
{
|
||||
"publisher": "example"
|
||||
"data": "Hello, amqprs!"
|
||||
}
|
||||
"#,
|
||||
)
|
||||
.into_bytes();
|
||||
|
||||
// create arguments for basic_publish
|
||||
let args = BasicPublishArguments::new(exchange_name, routing_key);
|
||||
|
||||
channel
|
||||
.basic_publish(BasicProperties::default(), content, args)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
// keep the `channel` and `connection` object from dropping before pub/sub is done.
|
||||
// channel/connection will be closed when drop.
|
||||
time::sleep(time::Duration::from_secs(1)).await;
|
||||
// explicitly close
|
||||
|
||||
channel.close().await.unwrap();
|
||||
connection.close().await.unwrap();
|
||||
}
|
||||
Reference in New Issue
Block a user