rabbitmq安裝及簡單demo練習

參考:https://my.oschina.net/loveorange/blog/3026473html

安裝參考連接:瀏覽器

1. 下載本身須要的rabbitmq_server(http://www.rabbitmq.com/download.html)版本和erlang環境(http://www.erlang.org/downloads)。spa

2. 先安裝erlang環境,並添加環境變量。.net

control panel --> (Viewed By Category)選擇System and Security -->選擇System 插件

 

 

 

 環境變量添加可參考https://my.oschina.net/loveorange/blog/30264733d

3. 驗證erl是否安裝成功code

以管理員身份輸入cmd打開控制面板,輸入erl驗證是否安裝成功server

 

 4. 安裝rabbitmqhtm

安裝完成後 cmd 命令到安裝目錄下的sbin 目錄 鍵入命令: rabbitmq-plugins.bat enable rabbitmq_management  開啓插件對象

鍵入: rabbitmq-server  啓動MQ

瀏覽器http://localhost:15672/ 訪問MQ的主頁 初始化密碼和用戶名都是: guest  

 

5. rabbitmq在.NET中的簡單應用

1、 程序準備

(1)瀏覽器中打開QM主頁後,添加用戶。(若是沒有添加有權限的用戶,則沒法在程序中建立鏈接

 

 

 (2)初始添加用戶後,用戶沒有權限,顯示以下:

 

 

此時, 鼠標點擊用戶名test,點擊set permission 爲該用戶設置權限

 

 

 

 

 

 

 2、 程序實現

生產者:

namespace Send
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Start!");
            IConnectionFactory conFactory = new ConnectionFactory//建立鏈接工廠對象
            {
                HostName = "10.64.228.211",
                Port = 5672,
                UserName = "wl",
                Password = "123456"
            };
            using (IConnection con = conFactory.CreateConnection())//建立鏈接
            {
                using (IModel channel = con.CreateModel())//建立通道
                {
                    // 建立交換機
                    string queueName = "testQueue1";
                    string exchangeName = "exchangeTest1";
                    string routingKey = "routingKeyTest1";
                    channel.ExchangeDeclare(exchangeName, ExchangeType.Direct);

                    //建立一個消息隊列並綁定到交換機上
                    channel.QueueDeclare(queueName, true, false, false, null);
                    channel.QueueBind(queueName, exchangeName,routingKey,null);

                    //Console.WriteLine("消息內容:");
                    string message = string.Empty;
                    for (int i= 0; i< 10000; i++)
                    {
                        message = Thread.CurrentThread.ManagedThreadId + i.ToString();
                        byte[] body = Encoding.UTF8.GetBytes(message);//消息內容
                        //發送消息到消息隊列
                        channel.BasicPublish(exchangeName, routingKey, null, body);
                    }

                    
                   // Console.Write("成功發送消息:" + message);
                }
            }

        }
    }
}

 

啓動該服務,能夠在rabbitmq的主頁中看到接收的消息。

 

 

消費者

namespace Receive
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            IConnectionFactory conFactory = new ConnectionFactory//建立鏈接工廠對象
            {
                HostName = "10.64.228.211",
                Port = 5672,
                UserName = "wl",
                Password = "123456"
            };
            using (IConnection conn = conFactory.CreateConnection())//建立鏈接
            {
                using (IModel channel = conn.CreateModel())//建立通道
                {
                    // 取出消息
                    string queueName = "testQueue1";

                    //建立消費者對象
                    var consumer = new EventingBasicConsumer(channel);
                    consumer.Received += (model, ea) =>
                    {
                        byte[] message = ea.Body;//接收到的消息
                        Encoding.UTF8.GetString(message);
                    };

                    //消費者開啓監聽
                    var consumeResult = channel.BasicConsume(queueName, true,consumer);
                    Console.ReadKey();
                }
            }

        }
    }
}

 

啓動消費服務,mq會消費隊列中消息。

 

 

 顯示消息已經被消費。

相關文章
相關標籤/搜索