1. 程式人生 > >[轉]Rabbitmq的使用及Web監控工具使用

[轉]Rabbitmq的使用及Web監控工具使用

本文轉自:https://blog.csdn.net/xingxing513234072/article/details/51014850

一、文件資料

       1、官方網站: http://www.rabbitmq.com/        2、安裝教程: http://www.rabbitmq.com/install-windows.html   二、安裝指南       1、下載並按照OTP(必須在安裝RabbitMQ Server前安裝):
http://www.erlang.org/download.html

            32位:OTP 17.5 Windows 32-bit Binary File (91.0 MB)             64位:OTP 17.5 Windows 64-bit Binary File (91.1 MB)       2、下載並安裝RabbitMQ Server: http://www.rabbitmq.com/download.html
            選擇windows平臺,直接從官方連結下載,同時也可以從github上下載,安裝完成後,服務自動啟動(services.msc)
      3、下載並安裝.Net客戶端: http://www.rabbitmq.com/dotnet.html
              http://www.rabbitmq.com/releases/rabbitmq-dotnet-client/v3.5.1/rabbitmq-dotnet-client-3.5.1-dotnet-4.0.zip
              (選擇的是.net 4.0版本,同時也可以通過nuget下載)   三、命令列工具       1、定位到rabbitmq安裝目錄:           windows 7   cd C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.5.1\sbin           Widows Serve  cd /d C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.5.1\sbin       2、執行rabbitmq命令列工具(rabbitmqctl ):          rabbitmqctl -q status       //列印了一些rabbitmq服務狀態資訊,包括記憶體,硬碟,和使用erlong的版本資訊          rabbitmqctl list_queues     //檢視所有佇列訊息   四、C#客戶端使用

         1、服務端程式碼

 

  1.   namespace Server
  2.   {
  3.   class Program
  4.   {
  5.   static void Main(string[] args)
  6.   {
  7.   var factory = new ConnectionFactory() { HostName = "localhost" };
  8.   using (var connection = factory.CreateConnection())
  9.   {
  10.   using (var channel = connection.CreateModel())
  11.   {
  12.   //定義佇列(hello為佇列名)
  13.   channel.QueueDeclare( "hello", false, false, false, null);
  14.    
  15.   var consumer = new QueueingBasicConsumer(channel);
  16.   channel.BasicConsume( "hello", true, consumer);
  17.    
  18.   Console.WriteLine( " [*] Waiting for messages." +
  19.   "To exit press CTRL+C");
  20.   while (true)
  21.   {
  22.   //接受客戶端傳送的訊息並打印出來
  23.   var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
  24.    
  25.   var body = ea.Body;
  26.   var message = Encoding.UTF8.GetString(body);
  27.   Console.WriteLine( " [x] Received {0}", message);
  28.   }
  29.   }
  30.   }
  31.   }
  32.   }
  33.   }


  2、客戶端程式碼

 

  1.   namespace Client
  2.   {
  3.   class Program
  4.   {
  5.   static void Main(string[] args)
  6.   {
  7.   var factory = new ConnectionFactory() { HostName = "localhost" };
  8.   using (var connection = factory.CreateConnection())
  9.   {
  10.   using (var channel = connection.CreateModel())
  11.   {
  12.   //定義佇列(hello為佇列名)
  13.   channel.QueueDeclare( "hello", false, false, false, null);
  14.   //傳送到佇列的訊息,包含時間戳
  15.   string message = "Hello World!" + "_" + DateTime.Now.ToString();
  16.   var body = Encoding.UTF8.GetBytes(message);
  17.   channel.BasicPublish( "", "hello", null, body);
  18.   Console.WriteLine( " [x] Sent {0}", message);
  19.   }
  20.   }
  21.   }
  22.   }
  23.   }

 

如果啟動服務端前啟動了客戶端,訊息就會存放到佇列中,da   五、RabbitMQ GUID使用        1、官方提供的一個web管理工具(rabbitmq_management)               http://www.rabbitmq.com/management.html        2、安裝了Rabbitmq後,預設也安裝了該管理工具,執行命令即可啟動             rabbitmq-plugins enable rabbitmq_management(先定位到rabbitmq安裝目錄)                        3、啟動後,直接在瀏覽器地址輸入: http://localhost:15672/   賬號密碼都是:guest        

 



六、異常問題

1、None of the specified endpoints were reachable

      生產端和消費端的factory引數要統一

  var factory = new ConnectionFactory();
  factory.UserName = QueueSetttiong.UserName; //使用者名稱,對應Management工具的admin-->user
  factory.Password = QueueSetttiong.Password; //密碼,對應Management工具的admin-->密碼
  factory.HostName = QueueSetttiong.HostName; //本地部署服務直接用hostname即可
  factory.Port = AmqpTcpEndpoint.UseDefaultPort;
  factory.VirtualHost = QueueSetttiong.VirtualHost; //使用預設值: "/"
  factory.Protocol = Protocols.DefaultProtocol;