Asp.net MVC使用EasyNetQ操作RabbitMQ
发布时间:2020-12-16 06:28:48 所属栏目:asp.Net 来源:网络整理
导读:.Net下操作RabbitMQ最常用的SDK是RabbitMQ.Client和EasyNetQ,EasyNetQ操作简单,更容易上手。 相关文章很多,但是大都是翻译自官方的Demo,一堆的控制台程序做消息【发布/订阅】显然不是我们在生产环境所期望的,所以本文以Asp.net MVC为例,介绍如何使用Ea
.Net下操作RabbitMQ最常用的SDK是RabbitMQ.Client和EasyNetQ,EasyNetQ操作简单,更容易上手。 相关文章很多,但是大都是翻译自官方的Demo,一堆的控制台程序做消息【发布/订阅】显然不是我们在生产环境所期望的,所以本文以Asp.net MVC为例,介绍如何使用EasynetQ。 1.创建Asp.net MVC项目项目结构如上图所示,Services文件夹包含了消息队列操作的相关接口,Models文件夹包含了测试需要用到的模型。 ? 2.添加依赖本文用到的组件包含:EasyNetQ、Autofac、NlLog。 添加依赖:
其他的依赖如:RabbitMQ.Client、Newtonsoft.Json会自动添加,不需要单独手动添加。 ? 3.消息队列接口3.1 IMQService1 public interface IMQService 2 { 3 void InitMQ(); 4 5 void PublishMessage<T>(T message) where T : class; 6 7 void SubscribeMessage(); 8 9 } 该接口中我们添加了三个接口:
3.2?RabbitMQService1 public class RabbitMQService:IMQService 2 { 3 IBus bus; 4 5 public RabbitMQService() 6 { 7 8 } 9 public void InitMQ() 10 { 11 bus = RabbitHutch.CreateBus("host=localhost",x => x.Register<IConsumerErrorStrategy>(_ => new AlwaysRequeueErrorStrategy())); 12 13 //订阅消息 14 SubscribeMessage(); 15 } 16 17 public void PublishMessage<T>(T message) 18 where T:class 19 { 20 bus.Publish<T>(message); 21 } 22 23 public void SubscribeMessage() 24 { 25 bus.SubscribeAsync<Question>("subscribe_question",x => HandleMessageAsync(x).Invoke(1)); 26 } 27 28 private Func<int,Task> HandleMessageAsync(Question question) 29 { 30 return async (id) => 31 { 32 if (new Random().Next(0,2) == 0) 33 { 34 Console.WriteLine("Exception Happened!!!!"); 35 NLogHelper.Info("Exception Happened!!!!" + " " + question.Text); 36 throw new Exception("Error Hanppened!" + " " + question.Text); 37 } 38 else 39 { 40 NLogHelper.Info("BEGIN"); 41 Thread.Sleep(10000); 42 Console.WriteLine(string.Format("worker:{0},content:{1}",id,question.Text)); 43 NLogHelper.Info(string.Format("worker:{0},content:{1}",question.Text)); 44 } 45 }; 46 } 47 } RabbitMQService是对消息队列接口的实现,包含了队列的初始化、发布、订阅。 初始化方法仅需要在程序启动时注册一次
SubscribeMessage方法指明了对类型为 Question 的消息使用方法 HandleMessageAsync 处理。 https://github.com/EasyNetQ/EasyNetQ/issues/504https://blog.csdn.net/chenludaniel/article/details/86138288
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net mvc强类型视图模型与multiselect
- asp.net – 当BackColor透明时,MS图表中的文字变得“块状”
- asp.net – 实体框架 – Where子句
- asp.net-mvc – 默认的AccountController示例何时更改?
- 文件上传 – 在ASP.NET Core中使用Axios和Vue.JS进行多个文
- asp.net-mvc – 允许一个人一次使用帐户的可重用方式
- ASP.NET MVC在IIS7下发布无法显示的解决办法
- asp.net-mvc – 防止JsonResult自动格式化日期
- asp.net – 不同执行顺序的目的:Init()和Load()
- asp.net – HttpContext.Current.Request.IsAuthenticated和
推荐文章
站长推荐
热点阅读