RabbitMQ--Hello World

1.RabbitMQ是一个消息中间件,接收并转发消息,它能够根据设置的规则进行路由,缓存和持久化。类似于现实中的邮局。

 1.1 名词解释

  a. 生产者:发送消息

         

 

 

 

       b. 消费者:接收消息

    

 

 

 

       c. 队列:消息队列,用来保存消息直到发送给消费者。它是消息的容器,也是消息的终点。一个消息可投入一个或多个队列。消息一直在队列里面,等待消费者连接到这个队列将其取走。注意:队列本质上就是一个消息缓冲区, 只受主存和磁盘的限制。

    

 

2. Hello World

 

 

 2.1 安装包

  a. RabbitMQ:install-package RabbitMQ

       b. RabbitMQ.Client: https://www.rabbitmq.com/releases/rabbitmq-dotnet-client/

2.2 创建一个Send类和一个Receive类,用来连接RebbitMQ

  Send:

var factory = new ConnectionFactory() { HostName="localhost" };
            using (var conn = factory.CreateConnection()) {
                using (var channel = conn.CreateModel()) {
                    channel.QueueDeclare(queue: "hello",
                                         durable: false,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);
                    var message = $"hello world{DateTime.Now.ToString()}";

                    var body = Encoding.UTF8.GetBytes(message);

                    channel.BasicPublish(exchange: "",
                                         routingKey: "hello",
                                         basicProperties: null,
                                         body: body);
                    Console.WriteLine($"[x] send to {message}");
                }
            }

        发送成功会后看到:

 

 

 

       Receive:

var factory = new ConnectionFactory() { HostName = "localhost" };
            using (var conn = factory.CreateConnection()) {
                using (var channel = conn.CreateModel()) {
                    channel.QueueDeclare(queue: "hello",
                                        durable: false,
                                        exclusive: false,
                                        autoDelete: false,
                                        arguments: null);
                    var consumer = new EventingBasicConsumer(channel);
                    consumer.Received += (model, ea) => {
                        var body = ea.Body;
                        var message = Encoding.UTF8.GetString(body);
                        Console.WriteLine($"[x] Received {message}");
                    };

                    channel.BasicConsume(queue:"hello",
                                         noAck: true,
                                         consumer:consumer);

                    Console.ReadKey();
                }
            }

      接收后会看到:

 

posted @ 2020-05-09 10:41  汪汪汪~~  阅读(138)  评论(0编辑  收藏  举报