.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; }
    }
}
相关推荐
zhuhit2 小时前
FASTDDS的安全设计
分布式·机器人·嵌入式
暗影八度2 小时前
Spark流水线+Gravitino+Marquez数据血缘采集
大数据·分布式·spark
q567315233 小时前
IBM官网新闻爬虫代码示例
开发语言·分布式·爬虫
不爱学英文的码字机器3 小时前
数据网格的革命:从集中式到分布式的数据管理新范式
分布式
优秀的颜7 小时前
计算机基础知识(第五篇)
java·开发语言·分布式
棠十一14 小时前
Rabbitmq
分布式·docker·rabbitmq
陈暗暗14 小时前
rabbitMQ初入门
rabbitmq
懒虫虫~14 小时前
基于SpringBoot解决RabbitMQ消息丢失问题
spring boot·rabbitmq
Lansonli14 小时前
大数据Spark(六十一):Spark基于Standalone提交任务流程
大数据·分布式·spark
Theodore_102216 小时前
大数据(2) 大数据处理架构Hadoop
大数据·服务器·hadoop·分布式·ubuntu·架构