一、RabbitMQ安裝與測試連接


一、下載NuGet支持的RabbitMQ.Client客戶端庫與安裝RabbitMQ服務。

1、安裝客戶端庫操作服務。

 

2、安裝服務。

步驟一、下載Erlang。

步驟二、下載RabbitMQ服務

 

采納版本。

 

 

下載實踐:

 

 

 

 

3、運行服務:

1、執行rabbitmq命令行工具(rabbitmqctl ):

  rabbitmqctl -q status       //打印了一些rabbitmq服務狀態信息,包括內存,硬盤,和使用erlong的版本信息

  rabbitmqctl list_queues     //查看所有隊列消息

  

RabbitMQ GUID使用:

安裝了Rabbitmq后,默認也安裝了該管理工具,執行命令即可啟動:

  rabbitmq-plugins enable rabbitmq_management(先定位到rabbitmq安裝目錄) 

啟動后,直接在瀏覽器地址輸入:http://localhost:15672/   賬號密碼都是:guest    

 

4、添加用戶、授權、登錄:

5、代碼測試:

為了展示RabbitMQ的基本使用,我們發送一個HelloWorld消息,然后接收並處理:

首先創建一個控制台程序,用來將消息發送到RabbitMQ的消息隊列中,代碼如下:

        static void Main(string[] args)
        {
            var factory = new ConnectionFactory();
            factory.HostName = "localhost";
            factory.UserName = "Bruce";
            factory.Password = "Bruce123456";
            using (var connection = factory.CreateConnection())
            {
                using (var channel = connection.CreateModel())
                {
                    //1、創建名為queue1隊列。
                    channel.QueueDeclare("queue1", false, false, false, null);
                    string message = "Hello World2";
                    var body = Encoding.UTF8.GetBytes(message);
                    //2、消息是實體對象的話,需要序列化和然后轉化為二進制數組。
                    channel.BasicPublish("", "queue1", null, body);
                    Console.WriteLine(" set {0}", message);
                }
            }
        }
View Code

 

點擊隊列名進入

 

首先,需要創建一個ConnectionFactory,設置目標,由於是在本機,所以設置為localhost,如果RabbitMQ不在本機,只需要設置目標機器的IP地址或者機器名稱即可,然后設置前面創建的用戶名Bruce和密碼Bruce123456。

緊接着要創建一個Channel,如果要發送消息,需要創建一個隊列,然后將消息發布到這個隊列中。在創建隊列的時候,只有RabbitMQ上該隊列不存在,才會去創建。消息是以二進制數組的形式傳輸的,所以如果消息是實體對象的話,需要序列化和然后轉化為二進制數組。

現在客戶端發送代碼已經寫好了,運行之后,消息會發布到RabbitMQ的消息隊列中,現在需要編寫服務端的代碼連接到RabbitMQ上去獲取這些消息。

自同樣,創建一個名為Receive的服務端控制台應用程序,服務端代碼如下:

        static void Main(string[] args)
        {
            var factory = new ConnectionFactory();
            factory.HostName = "localhost";
            factory.UserName = "Bruce";
            factory.Password = "Bruce123456";
            using (var connection = factory.CreateConnection())
            {
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare("queue1", false, false, false, null);
                    var consumer = new QueueingBasicConsumer(channel);
                    channel.BasicConsume("queue1", true, consumer);
                    Console.WriteLine(" waiting for message.");
                    while (true)
                    {
                        var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
                        var body = ea.Body;
                        var message = Encoding.UTF8.GetString(body);
                        Console.WriteLine("Received {0}", message);
                        Console.ReadKey();
                    }
                }
            }
        }
View Code

 

和發送一樣,首先需要定義連接,然后聲明消息隊列。要接收消息,需要定義一個Consume,然后從消息隊列中不斷Dequeue消息,然后處理。

現在發送端和接收端的代碼都寫好了,運行發送端,發送消息:

現在,名為hello的消息隊列中,發送了一條消息。這條消息存儲到了RabbitMQ的服務器上了。使用rabbitmqctl 的list_queues可以查看所有的消息隊列,以及里面的消息個數,可以看到,目前Rabbitmq上只有一個消息隊列,里面只有一條消息:

D:\Program Files\RabbitMQ Server\rabbitmq_server-3.4.2\sbin>rabbitmqctl list_queues
Listing queues ...
hello   1

現在運行接收端程序,如下:

可以看到,已經接受到了客戶端發送的Hello World,現在再來看RabitMQ上的消息隊列信息:

 命令行查看:

D:\Program Files\RabbitMQ Server\rabbitmq_server-3.4.2\sbin>rabbitmqctl list_queues
Listing queues ...
hello   0

可以看到,hello這個隊列中的消息隊列個數為0,這表示,當接收端,接收到消息之后,RabbitMQ上就把這個消息刪掉了。

自定義環境變量

1、erl環境變量配置。

(1)erl環境變量配置。

ERLANG_HOME=C:\Program Files\erl10.3

  

(2)在Path中加入。

%ERLANG_HOME%\bin;

  

(3)測試erl配置是否正確,開始-運行-cmd,輸入erl,顯示如下,證明配置正確。

 

 

1、RabbitMQ環境變量配置。

(1)RabbitMQ的安裝位置,以及安裝的版本,我的版本為3.7.3。

RABBITMQ_SERVER=C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.14 

 

(2)在Path中加入。

%RABBITMQ_SERVER%\sbin;

  

(3)激活rabbitmq_management。在CMD中鍵入如下命令

"C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.14\sbin\rabbitmq-plugins.bat" enable rabbitmq_management

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM