.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; }
    }
}
相关推荐
翱翔-蓝天2 小时前
Spring Boot 3 集成 RabbitMQ 实践指南
spring boot·rabbitmq·java-rabbitmq
Dolphin_Home2 小时前
搭建 Hadoop 3.3.6 伪分布式
大数据·hadoop·分布式
luckilyil2 小时前
RabbitMQ学习—day6—springboot整合
spring boot·rabbitmq·java-rabbitmq
姜来可期4 小时前
【分布式数据一致性算法】Gossip协议详解
分布式
begei4 小时前
理解vllm分布式推理服务中的多节点Multi-Node部署方式
分布式
南宫文凯4 小时前
Hadoop-HA(高可用)机制
大数据·hadoop·分布式·hadoop-ha
火一线6 小时前
【ASP .NET Core】ASP .NET Core介绍
服务器·游戏·.netcore
天天向上杰6 小时前
简识MQ之Kafka、ActiveMQ、RabbitMQ、RocketMQ传递机制
kafka·rabbitmq·rocketmq·activemq
GISer_Qing6 小时前
ASP.NET Core 8.0学习笔记(二十七)——数据迁移:Migrations深入与其他迁移命令
数据库·c#·.netcore·entityframework
一个假的前端男6 小时前
RabbitMQ 消息队列
分布式·rabbitmq