.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; }
    }
}
相关推荐
ajax_beijing1 小时前
zookeeper是啥
分布式·zookeeper·云原生
虫小宝7 小时前
返利app的消息队列架构:基于RabbitMQ的异步通信与解耦实践
分布式·架构·rabbitmq
We....7 小时前
Java分布式编程:RMI机制
java·开发语言·分布式
在未来等你8 小时前
Elasticsearch面试精讲 Day 18:内存管理与JVM调优
大数据·分布式·elasticsearch·搜索引擎·面试
We....8 小时前
Java 分布式缓存实现:结合 RMI 与本地文件缓存
java·分布式·缓存
Chasing__Dreams8 小时前
kafka--基础知识点--5.3--producer事务
分布式·kafka
小枫编程8 小时前
Spring Boot 调度任务在分布式环境下的坑:任务重复执行与一致性保证
spring boot·分布式·后端
Hello.Reader10 小时前
Kafka 实现从网络层到日志与位点的“全景拆解”
分布式·kafka
无缘之缘10 小时前
SpringBoot整合RabbitMQ
spring boot·rabbitmq·java-rabbitmq
我是苏苏10 小时前
KafKa02:Kafka配置文件server.properties介绍
分布式·kafka