當前位置:
首頁 > 知識 > RabbitMQ 使用場景一

RabbitMQ 使用場景一

安裝環境

1.下載安裝Erlang 運行時環境

2.下載安裝RabbitMQ Server 應用程序

3.啟動 RabbitMQ 服務(默認啟動)

4.安裝管理平台插件並打開遠程訪問許可權

4.1.打開 RabbitMQ Comman Prompt

4.2.執行 rabbitmq-plugins enable rabbitmq_management

4.3.訪問 http://localhost:15672 查看 RabbitMQ Server 相關信息(默認賬密為guest)

RabbitMQ 使用場景一

4.4.新增遠程訪問用戶

RabbitMQ 使用場景一

4.5.點擊 Set permission 授權給新用戶

RabbitMQ 使用場景一

4.6.停止 RabbitMQ 服務

4.7.修改 ...
abbitmq_server-3.6.10etc
abbitmq.config.example 文件(新增第18行代碼)

RabbitMQ 使用場景一

4.8.啟動 RabbitMQ 服務

4.9.訪問 http://IP:15672 測試是否成功

RabbitMQ 使用場景一

基本概念

RabbitMQ 使用場景一

RabbitMQ 使用場景一

單個消息生產者 VS 單個消息消費者

在 .NET 中使用 RabbitMQ 需要下載它的客戶端程序集來獲取並引用 RabbitMQ 相關的組件。

1 using RabbitMQ.Client;
2 using System;
3 using System.Text;
4
5 //消息生產者控制台
6 namespace Producer
7 {
8 class Program
9 {
10 static void Main(string[] args)
11 {
12 //創建連接工廠對象
13 var factory = new ConnectionFactory
14 {
15 //目標主機IP或名稱
16 HostName = "10.202.228.107",
17 //RabbitMQ Server的用戶名稱
18 UserName = "Tua",
19 //RabbitMQ Server的密碼
20 Password = "Tua",
21 //RabbitMQ Server的默認埠號是5672可以不用指定
22 Port = 5672
23 };
24 //創建連接對象
25 using (var connection = factory.CreateConnection)
26 {
27 //創建消息信道對象
28 using (var channel = connection.CreateModel)
29 {
30 //創建消息隊列,只有在該消息隊列不存在時才會創建
31 channel.QueueDeclare
32 (
33 //消息隊列名稱
34 queue: "Tua",
35 //是否開啟持久,true:即不會因為RabbitMQ服務崩潰重啟而丟失消息隊列
36 durable: false,
37 //是否開啟反外,true:即只允許在當前連接中被訪問,當連接斷開時會自動清除該消息隊列
38 exclusive: false,
39 //是否開啟自動刪除,true:即當無任何消息消費者時,也就是說最後一個連接斷開時會自動清除該消息隊列
40 autoDelete: false,
41 //用於消息隊列的其它屬性(構造參數)
42 arguments: null
43 );
44 string msg = "Mr.Tua";
45 //將字元串消息轉換成二進位數組
46 var body = Encoding.UTF8.GetBytes(msg);
47 //發送消息,將消息發布到消息隊列中
48 channel.BasicPublish
49 (
50 //消息交換機名稱
51 exchange: string.Empty,
52 //路由鍵名稱
53 routingKey: "Tua",
54 //消息的其它屬性
55 basicProperties: null,
56 //消息內容
57 body: body
58 );
59 Console.WriteLine("Producer sent message: {0}", msg);
60 Console.ReadLine;
61 }
62 }
63 }
64 }
65 }

1 using RabbitMQ.Client;
2 using RabbitMQ.Client.Events;
3 using System;
4 using System.Text;
5
6 //消息消費者控制台
7 namespace Consumer
8 {
9 class Program
10 {
11 static void Main(string[] args)
12 {
13 var factory = new ConnectionFactory
14 {
15 //目標主機為本地
16 HostName = "localhost"
17 };
18 using (var connection = factory.CreateConnection)
19 {
20 using (var channel = connection.CreateModel)
21 {
22 //創建消息隊列,用於確保不受發送端和接收端先後啟動順序影響
23 channel.QueueDeclare
24 (
25 queue: "Tua",
26 durable: false,
27 exclusive: false,
28 autoDelete: false,
29 arguments: null
30 );
31 //創建消息消費者對象
32 var consumer = new EventingBasicConsumer(channel);
33 //非同步接收消息時的回調
34 consumer.Received += (sender, e) =>
35 {
36 var body = e.Body;
37 var msg = Encoding.UTF8.GetString(body);
38 Console.WriteLine("Consumer received message: {0}", msg);
39 };
40 //啟動消息消費者
41 //消息消費者處理完消息任務時需要回應消息生產者,使其刪除該消息
42 //如果消息消費者沒有回應,那麼消息生產者會將該消息重新發送給其它消息消費者
43 channel.BasicConsume
44 (
45 queue: "Tua",
46 //是否自動回應,false:即需要手動進行消息回應
47 noAck: true,
48 consumer: consumer
49 );
50 Console.ReadLine;
51 }
52 }
53 }
54 }
55 }

運行結果

啟動消息生產者控制台:

RabbitMQ 使用場景一

啟動消息消費者控制台:

RabbitMQ 使用場景一

在 RabbitMQ Comman Prompt 中執行 rabbitmqctl list_queues 查看消息隊列:

RabbitMQ 使用場景一

從本示例的運行結果可以看出 Producer 在 RabbitMQ Server 中創建了一個名為 Tua 的消息隊列並含有一條 Mr.Tua 的消息,當 Consumer 接收到該消息後並且 Producer 得到了回應就會立即刪除該消息。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 達人科技 的精彩文章:

[Android]Android焦點流程代碼分析
vue-resource pos提交t數據時碰到Django csrf
Go語言學習筆記(六)net
MySQL日期、時間相關內容

TAG:達人科技 |

您可能感興趣

場景模擬,VR音樂應用《Mondulia Studi》來襲
油畫場景欣賞——William·Glacken
多場景全能 BOSE Soundlink Revolve體驗
BOSE Soundlink Revolve體驗:多場景全能
拓寬使用場景的HyperX Cloud Mix,是可靠的戰力
學習Blockchain的應用場景
switch case和if else使用場景
小米Face ID供應商Mantis Vision:虛擬會議場景很快就會實現
一圖整合《Avengers: Infinity War》電影從漫畫汲取的場景
《Realities》新場景《Glückauf!DLC》,體驗德國最後一個工業煤礦
油畫場景欣賞——évariste·Carpentier
油畫場景欣賞——Frederick·Goodall
Chris Evans 透露歷年《Captain America》電影最喜愛場景
Christian Dada x Onitsuka Tige月底發售;Vans在加州開展沉浸式多元場景體驗
【專訪】小米Face ID供應商Mantis Vision:虛擬會議場景很快就會實現
「Science重磅」DeepMind生成查詢網路GQN,無監督學習展現3D場景
應用場景鏈Application scene chain為你打開物聯網的正確姿勢
華為在OpenStack Days China上分享混合雲行業場景及優秀實踐
來自Google DeepMind神經網路具有驚人的場景渲染技巧
拓寬了使用場景的HyperX Cloud Mix,是玩家的可靠戰力