我的RabbitMQ學習之1(介紹)
阿新 • • 發佈:2017-12-27
代理 tutorials 轉發數據 一個 mode 圖片 ssa 方式 初始化
官方網址:http://www.rabbitmq.com
我翻譯官網的文檔,僅供自己學習用...................
RabbitMQ 是什麽,它就是一個消息隊列,用在哪裏,用在不需要及時處理的地方,比如發送驗證碼,發送郵件等等,多用戶訂閱,最大化發揮系統性能,
RabbitMQ是一個消息代理:它接受和轉發消息。你可以把它想象成一個郵局:當你把郵件放在郵箱裏時,你可以確定郵差先生最終會把郵件發送給你的收件人。在這個比喻中,RabbitMQ是郵政信箱,郵局和郵遞員。
RabbitMQ與郵局的主要區別是它不處理紙張,而是接受,存儲和轉發數據消息的二進制數據塊。
-
-
隊列是RabbitMQ內部的郵箱名稱。盡管消息流經RabbitMQ和您的應用程序,但它們只能存儲在隊列中。甲隊列僅由主機的存儲器&磁盤限制約束,它本質上是一個大的消息緩沖器。許多生產者可以發送消息到一個隊列,許多消費者可以嘗試從一個隊列接收數據。這就是我們代表隊列的方式:
-
消費與接受有類似的意義。一個消費者是一個程序,主要是等待接收信息:
請註意,生產者,消費者和經紀人不必駐留在同一主機上; 事實上在大多數應用程序中,他們沒有
“P”是我們的生產者,“C”是我們的消費者。中間的盒子是一個隊列 - 一個RabbitMQ代表消費者的消息緩沖區。
簡單的 生產者 -> 消費者 模式 使用
1.消費者
//初始化一個連接 生產者 -> (發布者) var factory = new ConnectionFactory() { HostName = "localhost" }; using (var connection = factory.CreateConnection()) using (var channel = connection.CreateModel()) {//定義一個隊列 channel.QueueDeclare(queue: "order", durable: true, exclusive: false, autoDelete: false, arguments: null); var body = Encoding.UTF8.GetBytes(message); IBasicProperties properties = channel.CreateBasicProperties(); //生產一條信息 channel.BasicPublish(exchange: "", routingKey: "order", basicProperties: properties, body: body); Console.WriteLine("開始發送:--{0}", message); }
2.簡單的 消費者 模式
//初始化一個連接 生產者 -> (消費者) var factory = new ConnectionFactory() { HostName = "localhost" }; using (var connection = factory.CreateConnection()) using (var channel = connection.CreateModel()) { //對應的隊列 channel.QueueDeclare(queue: "order", durable: true, exclusive: false, autoDelete: false, arguments: null); var consumer = new EventingBasicConsumer(channel); //接受消息 consumer.Received += (model, ea) => { var body = ea.Body; var message = Encoding.UTF8.GetString(body); Console.WriteLine("接受到信息: {0} mode:{1}", message, model); }; channel.BasicConsume("order", true, consumer); Console.ReadLine(); }
我的RabbitMQ學習之1(介紹)