当前位置:   article > 正文

RabbitMQ在windows上安装部署&C#代码实现RabbitMQ通讯_c# rabbitmq 代码

c# rabbitmq 代码

RabbitMQ简介

RabbitMQ是一个消息中转站,最大的特点是多平台知支持,多语言支持,支持集群。
多平台比较好理解,它可以部署到Linux、Windows、Windows Server、macOS等等平台系统,市面上几乎所有的操作系统都可以安装。
多语言也容易理解,它支持多种语言进行接口开发,比如Python、Java、Ruby、PHP、C#等。
支持集群,目前很多技术都支持集群,在保证系统稳定的情况下,可以拓展服务器数量以保证信息处理效率提升;
特点:

  • 消息中间件
  • 重启可以缓存数据
  • 正常情况下,消息一直被存储在队列中,直到消费者消费为止
  • 消息有存活时间,到期就会变成死信,由死信交换机接收。而绑定死信交换机的队列则称为死信队列。
  • 服务间解耦,消费者宕机或者重启不影响,业务保存。
  • 实现异步通信。
  • 流量削峰,并发可控。

RabbitMQ安装

下载

官网 https://rabbitmq.com/install-windows.html
在这里插入图片描述
或者在github也可以下载
https://github.com/rabbitmq/rabbitmq-server/releases

在这里插入图片描述
我们以官网下载为例,下载RabbitMQ安装包之后还要下载Erlang。RabbitMQ是用Erlang写的,所以安装的时候也要安装Erlang,这个是RabbitMQ的运行环境。
在这里插入图片描述

在这里插入图片描述
实际上RabbitMQ和Erlang还有版本兼容的问题,这边不用担心,两个直接下载最新的就没问题。
如果想了解一下详细情况,可以点击下面的链接进去看:

在这里插入图片描述

安装

首先,先安装环境Erlang:
在这里插入图片描述
大部分点都会要求安装VC++,我们默认安装即可
在这里插入图片描述
安装完成之后会提示重新启动,点确定
在这里插入图片描述
接下来等待安装完成

在这里插入图片描述

在这里插入图片描述
安装完成之后需要设置环境变量。右键此电脑 - 属性 - 高级系统设置 -高级- 环境变量
在这里插入图片描述

在这里插入图片描述

安装目录一般是 C:\Program Files\Erlang OTP\bin

在这里插入图片描述
添加完之后Erlang安装完毕,开始安装RabbitMQ

在这里插入图片描述
都是默认下一步
在这里插入图片描述

在这里插入图片描述
找到安装目录,一般是C:\Program Files\RabbitMQ Server\rabbitmq_server-3.11.9\sbin
在这里插入图片描述
在路径上输入cmd,或者直接打开cmd,输入cd C:\Program Files\RabbitMQ Server\rabbitmq_server-3.11.9\sbin
总之就是将CMD定位到这个文件夹
输入abbitmq-plugins enable rabbitmq_management,启用插件
在这里插入图片描述

在这里插入图片描述
快捷键 Ctrl+Shift+Esc,找到rabbitmq服务右键重新启动。

在这里插入图片描述
系统重启
不要用IE 用谷歌浏览器或者其他谷歌内核的浏览器 输入localhost:15672,访问RabbitMQ。出现以下界面就算安装成功:
在这里插入图片描述
guest/guest登录

在这里插入图片描述
接口信息地址:http://localhost/api/index.html
在这里插入图片描述
显示所有用户:rabbitmqctl list_users

在这里插入图片描述
查看状态:rabbitmqctl status。这里经常会有报错,看下面的方法

在这里插入图片描述
出错的原因是cookie冲突,只要替换一下就OK:
在这里插入图片描述
C:\Windows\System32\config\systemprofile.erlang.cookie
C:\Users\Administrator.erlang.cookie
把 RabbitMQ Service 的 Cookie 文件复制覆盖到用户的 Cookie 。或者停止 RabbitMQ Service,手动运行 rabbitmq-server.bat也能解决这个问题。
再次查看状态:
在这里插入图片描述
添加用户,实际上添加用户也可以在网页上面操作,更加直观
在这里插入图片描述
目前只有一个用户 guest,并且它的 tag 是 administrator.
可以用命令创建一个用户,创建用户的命令格式是:
rabbitmqctl add_user [username] [password]
现在创建一个 rabbit1/rabbit1 的用户, 命令如下:
rabbitmqctl add_user rabbit1 rabbit1
在这里插入图片描述
在这里插入图片描述
给用户设置tag,命令格式如下
rabbitmqctl set_user_tag [tag1] [tag2] …
一次可以给一个用户设置多个 tag,也可以设置一个
rabbitmgctl set user tags rabbit1 administrator none
在这里插入图片描述实际上大部分的草走都可以在网页上完成,命令不是唯一方式。

C#代码实现

创建一个控制台项目server,右键-管理nuget程序包
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
server的代码如下

/static void Main(string[] args)
        {
            var factory = new ConnectionFactory()
            {
                HostName = "xxx.xxx.xxx.xxx",//这里写实际地址 本地的写localhost
                UserName = "rabbit1",
                Password = "rabbit1",
                //Port = AmqpTcpEndpoint.UseDefaultPort,
                //VirtualHost = "/",
            };
            using (var connection = factory.CreateConnection())
            using (var channel = connection.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.ToArray());
                    Console.WriteLine(" [x] Received {0}", message);
                };
                channel.BasicConsume(queue: "hello",
                    autoAck: true,
                    consumer: consumer);

                Console.WriteLine(" Press [enter] to exit.");
                Console.ReadLine();
            }
        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

同理,也建立一个client控制台项目,代码如下:

static void Main(string[] args)
        {
            var factory = new ConnectionFactory()
            {
                HostName = "10.0.12.180",
                UserName = "rabbit1",
                Password = "rabbit1",
                //Port = AmqpTcpEndpoint.UseDefaultPort,
                //VirtualHost = "/",
            };

            using (var connection = factory.CreateConnection())
            using (var channel = connection.CreateModel())
            {
                channel.QueueDeclare(queue: "hello",
                                     durable: false,
                                     exclusive: false,
                                     autoDelete: false,
                                     arguments: null);
                while (true)
                {
                    var input = Console.ReadLine();
                    string message = input;
                    var body = Encoding.UTF8.GetBytes(message);

                    channel.BasicPublish(exchange: "",
                                             routingKey: "hello",
                                             basicProperties: null,
                                             body: body);
                    Console.WriteLine(" [x] Sent {0}", message);
                }
            }
            Console.WriteLine(" Press [enter] to exit.");
            Console.ReadLine();
        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

这里要对rabbit1做一个调整,允许其可以访问虚拟host,命令如下
rabbitmqctl set_permissions -p / rabbit1 “." ".” “.*”

在这里插入图片描述
运行server和client,如下图所示,实现rabbitMQ通讯

在这里插入图片描述
git代码:https://github.com/chenheze90/Leaning06_RabbitMQ

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/490924
推荐阅读
相关标签
  

闽ICP备14008679号