一、环境搭建

    1.1、由于RabbitMQ是使用Erlang语言开发的,因此要安装Erlang运行时环境,下载地址:Erlang官网下载  CSDN分享下载

    1.2、去RabbitMQ官网下载RabbitMQ Server服务端程序,选择合适的平台版本下载并安装。

    RabbitMQ安装时,会自动在Windows服务中创建RabbitMQ服务,并自动启动。

C#队列学习笔记:RabbitMQ安装及使用

    1.3、开始->所有程序->RabbitMQ Server->RabbitMQ Command Prompt (sbin dir):

C#队列学习笔记:RabbitMQ安装及使用

    运行RabbitMQ Command Prompt与cmd下cd C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.3\sbin的效果是一样的。

    1.3.1、sbin目录下的rabbitmqctl.bat,是用来查看和控制服务端状态的。运行rabbitmqctl status检查RabbitMQ状态:

C#队列学习笔记:RabbitMQ安装及使用

    1.3.3、RabbitMQ Server上面也有用户概念,使用rabbitmqctl list_users命令,可以看到目前的用户:

C#队列学习笔记:RabbitMQ安装及使用

    可以看到,现在只有一个名为gues角色为administratort的用户,这个是RabbitMQ默认为我们创建的,它有RabbitMQ的所有权限。一般情况下,我们需要新建一个自己的用户,并设置密码及授予权限,同时设置为管理员。操作方法如下:

rabbitmqctl add_user hello world
rabbitmqctl set_permissions hello ".*" ".*" ".*"
rabbitmqctl set_user_tags hello administrator

C#队列学习笔记:RabbitMQ安装及使用

    上面的第一命令添加了一个名为hello的用户并设置了密码world;第二条命令为用户hello分别授予对所有消息队列的配置、读和写的权限;第三条命令将用户hello设置为管理员。

    现在我们可以将默认的guest用户删掉,使用下面的命令即可:

rabbitmqctl delete_user guest

    如果要修改密码,可以使用下面的命令:

rabbitmqctl change_password {username} {newpassowrd}

   二、管理界面

    RabbitMQ还有一个管理界面,是以插件形式提供的,通过该界面可以查看RabbitMQ Server当前的状态。启用命令如下: 

rabbitmq-plugins enable rabbitmq_management

C#队列学习笔记:RabbitMQ安装及使用

    现在,在浏览器中输入 http://server-name:15672/ 即可。

    注:server-name为计算机名或IP地址,如果是本地的,直接用localhost即可。登录界面,使用我们之前创建的hello用户登录。

C#队列学习笔记:RabbitMQ安装及使用

    三、开始使用

    在.NET中使用RabbitMQ需要下载RabbitMQ客户端程序集,下载解压后在bin下找到RabbitMQ.Client.dll,并添加引用到项目中。

    3.1、Hello World

    为了展示RabbitMQ的基本使用,我们发送一个HelloWorld消息,然后接收并处理。

C#队列学习笔记:RabbitMQ安装及使用

    3.1.1、创建一个名为Send的客户端控制台程序,用来将消息发送到RabbitMQ消息队列中,代码如下:

    class Program
    {
        static void Main(string[] args)
        {
            #region Hello World
            //1.实例化连接工厂
            var factory = new ConnectionFactory
            {
                HostName = "localhost",
                UserName = "hello",
                Password = "world"
            };
            //2.建立连接
            using (var connection = factory.CreateConnection())
            {
                //3.建立信道
                using (var channel = connection.CreateModel())
                {
                    //4.声明队列
                    channel.QueueDeclare(queue: "hello", durable: false, exclusive: false, autoDelete: false, arguments: null);
                    //5.构建byte消息数据包
                    string message = args.Length > 0 ? args[0] : "Hello World";
                    var body = Encoding.UTF8.GetBytes(message); //消息是以二进制数组的形式传输的
                    //6.发送数据包
                    channel.BasicPublish(exchange: "", routingKey: "hello", basicProperties: null, body: body);
                    Console.WriteLine($"Send {message}");
                    Console.Read();
                }
            }
            #endregion
        }
    }
Send.cs

相关文章:

  • 2022-02-08
  • 2021-07-11
  • 2022-12-23
  • 2022-12-23
  • 2021-10-15
  • 2021-09-06
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-04-02
  • 2021-10-09
相关资源
相似解决方案