DotNet.CAP 开源分布式消息框架(EventBus)

DotNet.CAP 开源分布式消息框架 Cap

1.简单几行代码实现事件总线

// 添加事件总线cap
services.AddCap(x => {
    // 使用内存存储消息(消息发送失败处理)
    // x.UseInMemoryStorage();
    // 使用EntityFramework进行存储操作
    x.UseEntityFramework<AggregateContext>();
    // 使用sqlserver进行事务处理,防止推送MQ失败,会在指定数据库中自动生成以"cap."开头的表
    x.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"));
    // 使用RabbitMQ进行事件中心处理
    x.UseRabbitMQ(rb => {
        rb.HostName = "localhost";
        rb.UserName = "admin";
        rb.Password = "admin";
        rb.Port = 5672;
        rb.VirtualHost = "/";
    });
    // 添加cap后台监控页面(人工处理);页面地址为“/cap”
    x.UseDashboard();
    // 配置定时器重试策略
    //x.FailedRetryInterval = 2; //重试间隔时间(秒),使用默认的就可以,可不用配置
    x.FailedRetryCount = 5; //重试次数
});
 
// 注册上下文到IOC容器
services.AddDbContext<AggregateContext>(options =>
{
    options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"));
});

2.事件发布

[Route("api/Teams")]
[ApiController]
public class AggregateController : ControllerBase
{
    private readonly ICapPublisher capPublisher;
    public AggregateController(ICapPublisher capPublisher)
    {
        this.capPublisher = capPublisher;
    }
 
    /// <summary>
    /// 添加团队和成员信息
    /// </summary>
    /// <param name="value"></param>
    [HttpPost]
    public ActionResult Post(string value)
    {
        Video video = new Video()
        {
            VideoUrl = "http://localhost:5365/123.mp4",
            MemberId =1
        };
        capPublisher.PublishAsync<Video>("video.event.post", video);
 
        return Ok("添加成功");
    }
}

3.事件订阅

[Route("Video")]
[ApiController]
public class VideoController : ControllerBase
{
    private readonly IVideoService videoService;
    public VideoController(IVideoService videoService)
    {
        this.videoService = videoService;
    }
    /// <summary>
    /// 视频添加
    /// </summary>
    /// <param name="Video"></param>
    /// <returns></returns>
    [NonAction] //用于标识此函数不是接口,将不能被http请求访问
    //[CapSubscribe("video.event.*")] // *  一对多匹配 # 一对一匹配
    [CapSubscribe("video.event.post")]
    public ActionResult<Video> PostVideo(Video Video)
    {
        videoService.Create(Video);
        return CreatedAtAction("GetVideo", new { id = Video.Id }, Video);
    }
}

转载:.Net Core 使用CAP框架实现异步化分布式事务_熊大哈的博客-CSDN博客

相关文章:

消息 - CAP

.NetCore Cap 结合 RabbitMQ 实现消息订阅 - osc_jbyqrnfz的个人空间 - OSCHINA - 中文开源技术交流社区

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: VLC.DotNet.Forms是一个基于VLC开源媒体播放器的.NET库,它提供了一个用于Windows应用程序的可视化控件,可以方便地集成到现有Windows应用程序中。使用VLC.DotNet.Forms,开发者可以利用VLC媒体播放器强大的功能,如播放各种媒体格式,调整音频和视频效果,程序控制等等。 VLC.DotNet.Forms库非常易于使用,提供了简单但功能丰富的API,以实现在应用程序中嵌入媒体播放器的功能。使用VLC.DotNet.Forms,开发人员可以创建自定义的媒体播放器应用程序,或添加媒体播放器到其他已经存在的应用程序中。该库可以轻松实现多媒体文件的播放功能,包括视频、音频和流媒体,支持多种各种媒体格式,如MP4、AVI、FLV、WMV、MP3等。 总之,VLC.DotNet.Forms是一个强大且易于使用的媒体播放器库,可以方便地集成到Windows应用程序中,扩展其功能并增强用户体验。如果你需要在应用程序中嵌入媒体播放器,那么使用VLC.DotNet.Forms将会是您的不错的选择。 ### 回答2: vlc.dotnet.forms是一个基于.NET Framework的多媒体控件库,可用于在Windows平台上实现多媒体播放应用程序。该库的核心是基于VLC媒体播放器引擎的,因此可以支持多种格式的音频和视频文件的播放,包括但不限于MP3、MP4、AVI、FLV等。 该库是开源的,源代码可以在GitHub上找到。它提供了一系列易于使用的API,使开发人员可以轻松地集成视频播放功能到他们的应用程序中。其中包括一个预定义的用户界面, 可以为开发人员提供一些基本的功能,如播放、暂停、停止、调整音量和显示当前视频的时间线等等。此外,开发人员还可以完全控制库并使用其APIs灵活地自定义用户界面,以实现更高级的功能和更好的用户体验。 总之, vlc.dotnet.forms提供了一种简单易用的方式来将媒体播放功能集成到Windows应用程序中,而且由于其源代码是开放的,开发人员可以根据自己的需求自定义它并进行进一步的开发和定制。 ### 回答3: vlc.dotnet.forms是一个开源的Windows Forms控件库,提供对VLC播放器的访问和控制。它基于VLC libvlc库,使用户能够在应用程序中嵌入VLC播放器,实现视频和音频播放等功能。这个库包含了许多可配置的选项和控件,可以自定义播放器的外观和行为。同时,它还提供了一些非常实用的功能,比如在线媒体流(streaming)播放、视频截图、多个视频源的显示等等。目前,vlc.dotnet.forms已经成为.NET平台上最流行的VLC播放器集成库之一,被广泛应用在视频播放、视频监控和多媒体教学等领域。它可以与.NET框架的任何版本和语言兼容。总的来说,vlc.dotnet.forms是一个非常有用和强大的控件库,为.NET平台开发者提供了一种简单、可靠和灵活的方式来嵌入VLC播放器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值