RabbitMQ的基本使用到高级特性

继上一篇 CentOS上安装RabbitMQ讲述RabbitMQ具体安装后,这一篇讲述RabbitMQ在C#的使用,这里将从基本用法到高级特性的使用讲述。

前序条件

这里需要增加一个用户,并且设置用户为administrator,更多命令可以参考RabbitMQ更多命令,这里开始我本来是想用guest用户,端口是:15672,但是在创建连接的时候是连接不上的,查资料后发现是必须开放5672端口,并且不能使用guest默认用户

rabbitmqctl add_user allen pwd //增加用户 rabbitmqctl set_user_tags allen administrator //设置用户权限 rabbitmqctl change_password allen newpass //修改密码

开启5672端口

firewall-cmd --zone=public --add-port=15672/tcp --permanent firewall-cmd --reload 基本用法

连接之前可以看到,rabbitmq的UI界面是没有连接的
send发布者的代码

/// <summary> /// 发送消息 /// </summary> public class Send { private static readonly string appID = ConfigurationManager.AppSettings["AppID"]; static void Main(string[] args) { var factory = new ConnectionFactory { Uri = ConfigurationManager.AppSettings["RabbitMQUri"] }; using (var connection = factory.CreateConnection()) { using (var channel = connection.CreateModel()) { string queue = string.Format("MQ{0}.BaseStudy", appID); channel.QueueDeclare(queue, false, false, false, null); //定义一个队列 while (true) { Console.Write("请输入要发送的消息:"); var message = Console.ReadLine(); var body = Encoding.UTF8.GetBytes(message); channel.BasicPublish("", queue, null, body); //发送消息 Console.WriteLine("已发送的消息: {0}", message); } } } } }

RabbitMQUri,和AppID

<add key="AppID" value="150107"/> <!--队列ID--> <add key="RabbitMQUri" value="amqp://test_user:123456@111.231.204.119:5672/" /> <!--连接字符串-->

RabbitMQUri的Value相当于:

<add key="RabbitMQ_HostName" value="111.231.204.119"/> <add key="RabbitMQ_UserName" value="test_user"/> <add key="RabbitMQ_Password" value="123456"/> <add key="RabbitMQ_Port" value="5672"/> <add key="RabbitMQ_VirtualHost" value="http://www.likecs.com/"/>

未建立连接时:

RabbitMQ的基本使用到高级特性


建立连接后:

RabbitMQ的基本使用到高级特性


发送消息

RabbitMQ的基本使用到高级特性


可以看到RabbitMQ的UI管理界面的消息有:

RabbitMQ的基本使用到高级特性


receive消费者收到的消息:

RabbitMQ的基本使用到高级特性


receive的代码:

/// <summary> /// 接收消息 /// </summary> public class Receive { private static readonly string appID = ConfigurationManager.AppSettings["AppID"]; static void Main(string[] args) { var factory = new ConnectionFactory { Uri = ConfigurationManager.AppSettings["RabbitMQUri"] }; using (var connection = factory.CreateConnection()) { using (var channel = connection.CreateModel()) { string queue = string.Format("MQ{0}.BaseStudy", appID); channel.QueueDeclare(queue, false, false, false, null); //定义一个队列 Console.WriteLine("准备接收消息:"); var consumer = new EventingBasicConsumer(channel); consumer.Received += (s, e) => { var body = e.Body; var message = Encoding.UTF8.GetString(body); Console.WriteLine("接收到的消息: {0}", message); }; channel.BasicConsume(queue, true, consumer); //开启消费者与通道、队列关联 Console.ReadLine(); } } }

最后,附上源码地址,包括RabbitMQ的基本用法,发布订阅,高级特性DEMO

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpgppx.html