.net core cap-rabbitmq使用

安装nuget包:

bash 复制代码
 <PackageReference Include="DotNetCore.CAP" Version="6.0.0" />
 <PackageReference Include="DotNetCore.CAP.Dashboard" Version="6.0.0" />
 <PackageReference Include="DotNetCore.CAP.InMemoryStorage" Version="6.0.0" />
 <PackageReference Include="DotNetCore.CAP.RabbitMQ" Version="6.0.0" />
 <PackageReference Include="DotNetCore.CAP.SqlServer" Version="6.0.0" />
 <PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />

配置program:

csharp 复制代码
 // CAP配置
 builder.Services.AddCap(x =>
 {
     x.UseSqlServer("Server=.;Database=Blogging;Integrated Security=True"); // 生产环境应选择例如SQL Server, MySQL, MongoDB等
     x.UseDashboard();//仪表板
     // 添加事件总线cap

     // 使用RabbitMQ进行事件中心处理
     x.UseRabbitMQ(rb =>
     {
         rb.HostName = "localhost";
         rb.UserName = "guest";
         rb.Password = "guest";
         rb.Port = 5672;
         rb.VirtualHost = "/";
     });
 });

controller代码

csharp 复制代码
using DotNetCore.CAP;
using Microsoft.AspNetCore.Mvc;

namespace WebApplication1.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private readonly ICapPublisher _capPublisher;

        public WeatherForecastController(ICapPublisher capPublisher)
        {
            _capPublisher = capPublisher;
        }

        [HttpPost]
        public async Task<IActionResult> CreateUser([FromBody] User user)
        {
            // 创建用户逻辑...

            var userCreatedEvent = new UserCreatedEvent
            {
                UserId = user.Id,
                Name = user.Name
            };

            await _capPublisher.PublishAsync("user.created", userCreatedEvent);

            return Ok();
        }

       
        [CapSubscribe("user.created")]
        [NonAction]
        public void OnUserCreated(UserCreatedEvent e)
        {
            // 处理用户创建事件,例如记录日志、发送邮件等
            Console.WriteLine($"New user created: {e.UserId}, Name: {e.Name}");
        }
    }

    public class User
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
}
相关推荐
creator_Li19 小时前
RabbitMQ示例
rabbitmq
程序员泠零澪回家种桔子19 小时前
分布式事务核心解析与实战方案
分布式
凯子坚持 c19 小时前
CANN 生态中的分布式训练利器:深入 `collective-ops` 项目实现高效多卡协同
分布式
惊讶的猫20 小时前
rabbitmq实践小案例
分布式·rabbitmq
禁默21 小时前
打破集群通信“内存墙”:手把手教你用 CANN SHMEM 重构 AIGC 分布式算子
分布式·重构·aigc
AC赳赳老秦21 小时前
代码生成超越 GPT-4:DeepSeek-V4 编程任务实战与 2026 开发者效率提升指南
数据库·数据仓库·人工智能·科技·rabbitmq·memcache·deepseek
惊讶的猫1 天前
rabbitmq初步介绍
分布式·rabbitmq
小镇敲码人1 天前
华为CANN框架中HCCL仓库的全面解析:分布式通信的引擎
分布式·华为
User_芊芊君子1 天前
【分布式训练】CANN SHMEM跨设备内存通信库:构建高效多机多卡训练的关键组件
分布式·深度学习·神经网络·wpf
酷酷的崽7981 天前
CANN 开源生态解析(四):`cann-dist-train` —— 构建高效可扩展的分布式训练引擎
分布式·开源