运行代码。
然后我们使用命令行rabbitmqctl list_queues,去RabbitMQ的服务器查看当前消息队列,如下图:
可以看到,消息已经被使用了。
----------------------------------------------------------------------------------------------------
现在我们在发送代码出做一个for循环,看看消息接收速度是什么样的,代码如下,for循环了100次,每次间隔3秒。
1
2
3
4
5
6
7
8
9
10
|
for ( int i = 0; i < 100; i++) { channel.QueueDeclare( "kibaQueue" , false , false , false , null ); //创建一个名称为kibaQueue的消息队列 var properties = channel.CreateBasicProperties(); properties.DeliveryMode = 1; string message = "I am Kiba518" ; //传递的消息内容 channel.BasicPublish( "" , "kibaQueue" , properties, Encoding.UTF8.GetBytes(message)); //生产消息 Console.WriteLine($ "Send:{message}" ); Thread.Sleep(3000); } |
效果图如下:
可以看到,发送消息和接收消息,几乎是同步的,效果非常理想。
服务器端应用
在上文,我们的RabbitMQ服务是安装在我的本机上的;现在我们把服务移植到服务器上,然后再来测试一下。
在服务器端安装RabbitMQ和在本机安装的步骤是一样的,但是安装完成后,我们需要设置下防火墙的入站规则和出站规则,将5672的UDP端口开放一下。
为什么要开放端口是5672?因为RabbitMQ的默认的消息接收和发送端口就是5672,我们可以使用断点查看一下。
如上图,可以看到,在我们没有设置端口的时候,Endpoint的端口的默认值是5672。
配置完端口后,我们修改代码中的HostName为我们的服务器地址,如下。
1
|
factory.HostName = "1.1.1.1" ; |
重新运行代码,会发现在运行到factory.CreateConnection()的时候,系统提示一个异常【RabbitMQ.Client.Exceptions.BrokerUnreachableException:“None of the specified endpoints were reachable”】,如下图:
这是因为我们使用的账号是guest,guest账号默认是不支持远程连接的。
解决办法很简单,新建一个账户即可。
创建用户
在服务器端打开浏览器,输入http://127.0.0.1:15672/,进入管理页面。
点击菜单栏的Admin选项,进入用户管理界面创建用户kiba,密码123456,如下图:
创建完用户后,得到如下界面。
如上图所示,刚刚创建的用户还没有任何访问权限。
现在我们点击用户名,进入权限管理页面设置权限。
如上图所示,页面默认为我们设置了一个可读,可写,可管理配置的权限;所以,我们只要点击Set premission就可以了。
设置完权限,我们回到用户管理页面。
如上图所示,权限设置成功。
现在我们回到代码,修改用户名密码如下。
1
2
3
|
factory.HostName = "1.1.1.1" ; factory.UserName = "kiba" ; factory.Password = "123456" ; |
运行代码,不再抛异常,接受发送消息正常。
----------------------------------------------------------------------------------------------------
设置用户权限也可以通过命令的方式设置,如下:
rabbitmqctl set_permissions -p "/" kiba "." "." ".*"
----------------------------------------------------------------------------------------------------
到此C#调用RabbitMQ实现消息队列就讲完了。
代码已经传到Github上了,欢迎大家下载。
Github地址:https://github.com/kiba518/KibaRabbitMQ
----------------------------------------------------------------------------------------------------
注:此文章为原创,任何形式的转载都请联系作者获得授权并注明出处!
若您觉得这篇文章还不错,请点击下方的【推荐】,非常感谢!
本文已独家授权给脚本之家(ID:jb51net)公众号发布
https://www.cnblogs.com/kiba/p/11703073.html