Rabbit 進階之自動任務分配

消息隊列的使用場景 很大一部分是要進行耗時處理,所以 Rabbit 優勢就會很明顯,在我的上一篇博客中使用發佈/訂閱的訂閱模式來接收消息時,

可以直接啓動多個實例. 我將發送消息稍加修改(快速發送1000個消息),代碼如下

發送多個消息

 static void Main(string[] args)
        {
            var factory = new ConnectionFactory();
            factory.UserName = "guest";
            factory.Password = "guest";
            factory.VirtualHost = "/";
            factory.HostName = "127.0.0.1";

            var conn = factory.CreateConnection();
            var channel = conn.CreateModel();
            channel.ExchangeDeclare("exchange", ExchangeType.Direct);
            channel.QueueDeclare("myRabbit", false, false, false, null);
            channel.QueueBind("myRabbit", "exchange", "123", null);

            for (int i = 0; i < 1000; i++)
            {
                byte[] messageBodyBytes = Encoding.UTF8.GetBytes("msg"+i);
                channel.BasicPublish("exchange", "123", null, messageBodyBytes);
            }
           
        }


繼續使用原來的接收程序, 但是 我打開了3個應用程序同事等待消息發送, 然後 啓動發送程序

結果, 3個程序都會收到1000個消息嗎?  No No No  是三個程序一起處理了這1000個消息.

運行結果


官網稱這個爲工作隊列(work queue) 這樣 ,在消息處理端耗時較大時,可以開啓更多的 處理程序來應對,支持分佈式,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章