技术交流 > 心得分享 > .NET中使用RabbitMQ

.NET中使用RabbitMQ

1.首先需要安装erlang和RabbitMQ

在这里插入图片描述

2.增加erlang和RabbitMq的环境变量

图片.png

3.安装RabbitMQ Web界面管理,rabbitmq-plugins enable rabbitmq_management

图片.png

4.新建用户,并授权

rabbitmqctl add_user admin admin

rabbitmqctl set_user_tags admin administrator

rabbitmqctl set_permissions -p / admin "." "." .*"

图片.png

图片.png

5.用刚刚注册的账号登录http://localhost:15672 后台页面

图片.png

6.使用RabbitMQ.Client.dll简单模拟入列和出列

//入列
ConnectionFactory factory = new ConnectionFactory { HostName = "localhost", UserName = "admin", Password = "admin" };
using (IConnection conn = factory.CreateConnection())
{
    using (IModel im = conn.CreateModel())
    {
        im.ExchangeDeclare("rabbitmq_route", ExchangeType.Direct);
        im.QueueDeclare("rabbitmq_query", false, false, false, null);
        im.QueueBind("rabbitmq_query", "rabbitmq_route", ExchangeType.Direct, null);
        for (int i = 0; i < 1000; i++)
        {
            byte[] message = Encoding.UTF8.GetBytes("Hello Lv" + i);
            im.BasicPublish("rabbitmq_route", ExchangeType.Direct, null, message);
            Response.Write("</br>发送第:" + i + "消息。[rabbitmq]");
        }
    }
}


//出列
ConnectionFactory factory = new ConnectionFactory { HostName = "localhost", UserName = "admin", Password = "admin" };
using (IConnection conn = factory.CreateConnection())
{
    using (IModel im = conn.CreateModel())
    {
        while (true)
        {
            BasicGetResult res = im.BasicGet("rabbitmq_query", true);
            if (res != null)
            {
                Response.Write("</br>接收到消息:" + UTF8Encoding.UTF8.GetString(res.Body));
                Response.Write("</br>刷新取下条消息");
                //return View();
            }
            else
            {
                return View();
            }
        }
    }
}


后台监控显示实时状态:

图片.png


2023-02-24 17:01:38
评论
  • 评论加载中...

评论内容: