
其实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
评价
排名
2
文章
633
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 :
好是好,这个对效率影响大不大哇,效率高不高
一个bug让程序员走上法庭 索赔金额达400亿日元
剑轩 : 有点可怕
ASP.NET Core 服务注册生命周期
剑轩 :
http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术