当前位置: 首页 > news >正文

Masstransit(一)

Program.cs

//注册MassTransit
var rabbitmqInfo = AppSettings.Get<RabbitMqConfig>("RabbitMq");
builder.Services.AddConsumerListener();

model

using System;namespace ZR.Common.Model
{public class SubmitOrder{public Guid OrderId { get; set; }public decimal Amount { get; set; }public string username { get; set; }public int userId { get; set; }}
}

ConsumerListenerExtensions.cs

using MassTransit;
public static class ConsumerListenerExtensions
{public static IServiceCollection AddConsumerListener(this IServiceCollection service){service.AddMassTransit(cfg =>{cfg.AddConsumer<OrderConsumer>();cfg.UsingRabbitMq((ctx, rb) =>{// 配置 RabbitMQ 连接rb.Host("localhost", h =>{h.Username("pony");h.Password("123456");});rb.UseDelayedMessageScheduler();ListenPriority(rb, ctx);});});return service;}private static void ListenPriority(IRabbitMqBusFactoryConfigurator cfg, IBusRegistrationContext ctx){cfg.ReceiveEndpoint("priority-orders", e =>{e.ConfigureConsumeTopology = false;e.Consumer<OrderConsumer>(ctx);e.Bind("submitorder", s =>{s.ExchangeType = "fanout";s.RoutingKey = "PRIORITY";});});}}

发布消息 CommunityUserController

// <summary>
// 测试masstransit发送消息
// </summary>
/// <returns></returns>
[HttpGet("testRabbitMq")]
[Log(Title = "测试rabbitmq", BusinessType = BusinessType.EXPORT, IsSaveResponseData = false)]
[AllowAnonymous]
public async Task<IActionResult> TestRabbitMq()
{var message = new SubmitOrder{OrderId = Guid.NewGuid(),Amount = 100.0m,username = "河汉清",userId = 4};//await _bus.Publish(message);var endpoint = await _bus.GetSendEndpoint(new Uri("rabbitmq://localhost/submitorder"));await endpoint.Send(message);return SUCCESS("Message published successfully");
}

消费者 OrderConsumer

using MassTransit;
using ZR.Common.Model;public class OrderConsumer : IConsumer<SubmitOrder>
{private readonly ISysUserService _sysUser;public OrderConsumer(ISysUserService sysUser){_sysUser = sysUser;}public async Task Consume(ConsumeContext<SubmitOrder> context){// 在这里处理消息Console.WriteLine($"Order ID: {context.Message.OrderId}");var user = await _sysUser.GetFirstAsync(x => x.UserId == context.Message.userId);if(user == null){Console.WriteLine("没消费");return;}user.UserName = "这是我的第一次消费消息";await _sysUser.DeleteAsync(user);Console.WriteLine(user + "消费了");}
}

http://www.dtcms.com/a/550793.html

相关文章:

  • 马鞍山网站制作重庆建一个网站
  • 在线教育网站制作网页设计与网站建设区别
  • 图文消息点击进去是自己的网站核心关键词和长尾关键词举例
  • 网站搜索优化官网做网站报价表
  • java应该如何学习 分四个阶段由浅入深
  • 麻油厂网站怎么做怎么做网站淘宝转换工具
  • 【C语言实战(64)】51单片机串口通信:开启嵌入式开发的通信大门
  • Android开发工作经历整理
  • 网站开发公司专业网站建设布为网
  • 福州高端网站建设公司免费网站素材下载
  • 博客网站推广法怎么自己的电脑做网站
  • 内网穿透的应用-无需公网IP!群晖NAS+CPolar打造家庭数据中心的远程文件传输方案
  • Java 开发 - Java 继承后成员的隐藏与重写
  • 网站搭建素材群医疗公司logo设计图片
  • 流量对于网站盈利网站关键词百度搜不到
  • 站长之家官网查询学校微网站模板下载
  • 广州网站建设信科网络鄞州网站建设公司
  • 网站内容规范东台网站制作
  • 回溯专题:子集/全排列问题
  • 国产固态硬盘趋势下,天硕工业级SSD接口指南赋能高效部署
  • HOSVD(高阶奇异值分解):高维数据的“解剖术”
  • 用rp怎么做网站导航菜单wordpress文章插广告
  • 怎么做公司网站优化网站建成
  • 智源研究院发布悟界 Emu3.5,开启多模态世界大模型新纪元
  • RAG_向量
  • 如何做网站收录求个a站
  • 南山建网站公司公司网站建站模板模板
  • 光伏项目如何高效施工?
  • 万年历网站做移动互联网网站建设
  • ROS2使用pixi在win10中的安装