Rabbit 进阶之自动任务分配

来源:互联网 发布:ug编程教学视频下载 编辑:程序博客网 时间:2024/05/21 14:07

消息队列的使用场景 很大一部分是要进行耗时处理,所以 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) 这样 ,在消息处理端耗时较大时,可以开启更多的 处理程序来应对,支持分布式,

0 0
原创粉丝点击