RabbitMQ消息队列(二):"Hello, World"[转]
2015-01-06 10:34
483 查看
2. Sending
第一个program send.cs:发送Hello world 到queue。正如我们在上篇文章提到的,你程序的第9行就是建立连接,第12行就是创建channel,第14行创建名字为hello的queue。
using System; using RabbitMQ.Client; using System.Text; class Send { public static void Main() { var factory = new ConnectionFactory() { HostName = "localhost" }; using (var connection = factory.CreateConnection()) { using (var channel = connection.CreateModel()) { channel.QueueDeclare("hello", false, false, false, null);//hello是queue的名字 string message = "Hello World!"; var body = Encoding.UTF8.GetBytes(message); channel.BasicPublish("", "hello", null, body);//hello是routing key的名字 Console.WriteLine(" [x] Sent {0}", message); } } } }
从架构图可以看出,Producer只能发送到exchange,它是不能直接发送到queue的。
第17行:现在我们使用默认的exchange(名字是空字符)。这个默认的exchange允许我们发送给指定的queue。routing_key就是指定的queue名字。
3. Receiving
第二个program receive.cs 将从queue中获取Message并且打印到屏幕。
using RabbitMQ.Client; using RabbitMQ.Client.Events; using System; using System.Text; class Receive { public static void Main() { var factory = new ConnectionFactory() { HostName = "localhost" }; using (var connection = factory.CreateConnection()) { using (var channel = connection.CreateModel()) { channel.QueueDeclare("hello", false, false, false, null);//hello是queue的名字 var consumer = new QueueingBasicConsumer(channel); channel.BasicConsume("hello", true, consumer);//hello是queue的名字,这里可以理解为hello是routing key的名字。因为这个例子没有使用指定名称的exchange(实际上使用的是默认的exchange名字),所以queue的名字和routing key的名字是相同的。在第五篇文章中介绍如果使用了指定名称的exchange,queue name和routing key的关系与用法。 Console.WriteLine(" [*] Waiting for messages." + "To exit press CTRL+C"); while (true) { var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();//阻塞 var body = ea.Body; var message = Encoding.UTF8.GetString(body); Console.WriteLine(" [x] Received {0}", message); } } } } }
4. 最终运行
先运行 send.cs ,send.cs 每次运行完都会停止。注意:现在数据已经存到queue里了。在接收它receive.cs.转:
http://www.rabbitmq.com/tutorials/tutorial-one-dotnet.html(官网) http://blog.csdn.net/anzhsoft/article/details/19570187(翻译)
相关文章推荐
- RabbitMQ消息队列(二):"Hello, World"[转]
- RabbitMQ消息队列(二):"Hello, World"[转]
- RabbitMQ消息队列(二):”Hello, World“(转)
- RabbitMQ消息队列(二):”Hello, World“
- RabbitMQ消息队列(二):”Hello, World“
- RabbitMQ消息分发模式----"Hello World"模式
- RabbitMQ消息队列(二):”Hello, World“
- RabbitMQ消息队列(二):”Hello, World“
- RabbitMQ消息分发模式----"Hello World"模式
- (转)RabbitMQ消息队列(二):”Hello, World“
- RabbitMQ消息队列(二):”Hello, World“
- RabbitMQ发布订阅"Hello World"消息
- RabbitMQ消息队列(二):”Hello, World“
- RabbitMQ消息队列(二):”Hello, World“
- RabbitMQ消息队列(二):”Hello, World“
- RabbitMQ消息队列(二):”Hello, World“
- RabbitMQ消息队列(二):”Hello, World“
- RabbitMQ消息队列(二):”Hello, World“
- RabbitMQ消息队列(二):”Hello, World“
- RabbitMQ消息队列(二):”Hello, World“