分类:
RabbitMq
其实rabbitmq,老师都说得差不多了,下面是老师的连接。
http://www.tnblog.net/aojiancc2/article/UserCategory/134
官网教程连接:https://www.rabbitmq.com/getstarted.html
p表示交换机
中间红色的表示数据
c1,c2表示输出的队列
这图表示交换机中把数据分不同类型的队列进行输出!
实验准备
类型:routingKey
交换机:myexchange
队列:log_eles,log_error
1,log_eles队列的代码
(1)如下代码可以看见我对这个队列循环创建了三个类型:"info", "debug", "warning"
(2)然后是EventingBasicConsumer添加事件获取输出消息
(3)最后是BasicConsume开启事件
(2)与(3)之间的好处在于获取数据较多且队列较多时rabbitmq将会自动优化计算方式
ConnectionFactory factory = new ConnectionFactory() { HostName = "192.168.1.63", UserName = "hbadmin", Password = "hbadmin" }; //创建一个连接 using (var conntion = factory.CreateConnection()) { //创建channe using (var channe = conntion.CreateModel()) { //创建交换机(直接形交换机) (已有) channe.ExchangeDeclare("myexchange", ExchangeType.Direct, true, false, null) //创建队列 //姓名,是否持久化,是否是专有的,是否自动删除, //当有很多个队列同时在获取数据时 channe.QueueDeclare("log_eles", true, false, false, null); var arr = new string[3] { "info", "debug", "warning" }; //交换机绑定队列 for (int i = 0; i < arr.Length; i++) { //将 error 绑定一下 channe.QueueBind("log_eles", "myexchange", arr[i], null); } //应当用到事件 { //官网案例:https://www.rabbitmq.com/tutorials/tutorial-two-dotnet.html //可以优化计算压力 var consumer = new EventingBasicConsumer(channe); consumer.Received += (sender, e) => { string msg = Encoding.UTF8.GetString(e.Body); Console.WriteLine(msg); }; //执行加载的事件 channe.BasicConsume("log_eles", true, consumer); } Console.ReadKey(); Console.Read(); } }
2,log_error队列的代码
(1)如下代码log_error队列只有一种类型: error
channe.ExchangeDeclare("myexchange", ExchangeType.Direct, true, false, null); //当有很多个队列同时在获取数据时 channe.QueueDeclare("log_error", true, false, false, null); //将 error 绑定一下 channe.QueueBind("log_error", "myexchange","error",null); //应当用到事件 { //官网案例:https://www.rabbitmq.com/tutorials/tutorial-two-dotnet.html //可以优化计算压力 var consumer = new EventingBasicConsumer(channe); consumer.Received += (sender, e) => { string msg = Encoding.UTF8.GetString(e.Body); Console.WriteLine(msg); }; //执行加载的事件 channe.BasicConsume("log_error", true, consumer); }
3进行添加数据
(1)添加100条数据,通过routingKey进行不同类型的添加
//创建交换机(直接形交换机) (已有) channe.ExchangeDeclare("myexchange", ExchangeType.Direct, true, false, null); //创建队列 //姓名,是否持久化,是否是专有的,是否自动删除, for (int i = 0; i < 100; i++) { //消息 var qmsg = $"{i}:你好"; var msg = Encoding.UTF8.GetBytes(qmsg); var level = i % 13 == 0 ? "info" : "error"; //发布消息 channe.BasicPublish("myexchange", routingKey: level, basicProperties: null, body: msg); } Console.Read();
下面开始实验
1。先创建队列绑定类型与交换机,订阅事件
2。再添入数据
此时可以清楚的看见通过不同的类型对应不同的队列进行输出!
好,我们再来看看,交换机绑定类型的情况
翻译了,哈哈哈
可以发现交换绑定了四种类型,同时也能看见其类型所对应的队列!
本期就这样!
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
评价
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术