Windows平台安装与使用RabbitMQ

    1. 首先需要下载 Erlang, RabbitMQ基于Erlang语言开发:
         Windows平台安装与使用RabbitMQ_第1张图片
          这里下载19.3 Windows 64-bit的:
        
          运行安装即可:
          Windows平台安装与使用RabbitMQ_第2张图片
    2. 下载 RabbitMQ windows平台版本:
      Windows平台安装与使用RabbitMQ_第3张图片
      安装(安装时会提示是否elr.exe访问私有网络,点击允许即可)
      Windows平台安装与使用RabbitMQ_第4张图片
      启动RabbitMQ后,它将以服务的方式运行:
         
       默认情况下,对RabbitMQ的Web管理页面是没有开启的,需要手动开启:
       Windows平台安装与使用RabbitMQ_第5张图片
       开启后,默认端口为15672,默认用户为guest,其密码为:guest,注意,该用户只能在localhost域名下访问,外网是无法访问的,需要添加用户并分配角色,登陆后页面如下:
      Windows平台安装与使用RabbitMQ_第6张图片
    3. 上面安装完后,现在使用C#语言来测试使用以下。在.NET平台,需要先安装 .Net Rabbit客户端:
     这里下载3.6.10版本的,面对.Net4.5版本的:
  
       添加环境变量:
     Windows平台安装与使用RabbitMQ_第7张图片
    4. 创建消费者测试项目并添加引用:
     Windows平台安装与使用RabbitMQ_第8张图片
     添加对RabbitMQ.Client.dll的引用。编辑cs文件如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RabbitMQ.Client;
using RabbitMQ.Client.Events;

namespace TestRabbitMQConsumer
{
    class Program
    {
        static void Main(string[] args)
        {
            var conn_factory = new ConnectionFactory();

            conn_factory.HostName = "localhost";
            conn_factory.UserName = "guest";
            conn_factory.Password = "guest";

            IConnection conn = conn_factory.CreateConnection();
            IModel channel = conn.CreateModel(); // 创建信道

            channel.ExchangeDeclare("jim-exchange", ExchangeType.Direct, true, false, null);

            channel.QueueDeclare("jim-queue", false, false, false, null);

            channel.QueueBind("jim-queue", "jim-exchange", "jim");

            QueueingBasicConsumer consumer = new QueueingBasicConsumer(channel); // 订阅消费者
            String consumer_tag = channel.BasicConsume("jim-queue", false, consumer); // 开始消费

            while (true) { // 处理发来的消息
                BasicDeliverEventArgs event_args = (BasicDeliverEventArgs)consumer.Queue.Dequeue(); //消息为空则停止执行并等待消息到来

                IBasicProperties msg_props = event_args.BasicProperties;
                String msg_body = Encoding.ASCII.GetString(event_args.Body);

                channel.BasicAck(event_args.DeliveryTag, false);

                if (msg_body == "quit")
                {
                    channel.BasicCancel(consumer_tag);
                    break;
                }
                else
                {
                    Console.WriteLine($"Receive Message Body: {msg_body}");
                }
            }
            Environment.Exit(0);
        }
    }
}

     运行该消息消费者,因为还没有消息,因此,空白:
    Windows平台安装与使用RabbitMQ_第9张图片
     在Web管理后台我们可以看到一些相关信息:
   Windows平台安装与使用RabbitMQ_第10张图片
     5. 创建了消息消费者后,现在来实现消息生产者,创建新项目,对RabbitMQ.Client.dll引用同第4步配置,修改cs文件代码如下:
       
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RabbitMQ.Client;
using RabbitMQ.Client.Events;

namespace TestRabbitMQProducer
{
    class Program
    {
        static void Main(string[] args)
        {
            var conn_factory = new ConnectionFactory();

            conn_factory.HostName = "localhost";
            conn_factory.UserName = "guest";
            conn_factory.Password = "guest";

            IConnection conn = conn_factory.CreateConnection();
            IModel channel = conn.CreateModel();

            channel.ExchangeDeclare("jim-exchange", ExchangeType.Direct, true, false, null);

            String msg_body = "I am producer.";

            IBasicProperties msg_props = channel.CreateBasicProperties();
            msg_props.ContentType = "text/plain";

            channel.BasicPublish("jim-exchange", "jim", msg_props, Encoding.ASCII.GetBytes(msg_body));

            Environment.Exit(0);
        }
    }
}

       生产者让交换器"jim-exchange",以键"jim"投递了消息,这样,在消费者端,就会按预定配置,获取消息体msg_body,消息体需要字节数组,因此这里使用Encoding.ASCII.GetBytes()来进行转换。
       现在来启动消息生产者,并看看消费者是否能收到消息:
      Windows平台安装与使用RabbitMQ_第11张图片
 可以看到,消息传递成功了。我们也可以使用Web端来发送一个消息"haha",也能投递成功:
Windows平台安装与使用RabbitMQ_第12张图片
        这里基于 .Net 平台实现消息生产和消费,同样,很方便可以移植到Java或python等其他平台上,实现系统异构化。

你可能感兴趣的:(Windows)