【创业】创业团队的那些事(二) 📅 发布时间:2026/7/6 18:14:43 👁️ 浏览次数: 速烁罩谋可能有些人还不知道 CAP 是什么老规矩来一个简介。CAP 是一个用来解决微服务或者分布式系统中分布式事务问题的一个开源项目解决方案https://github.com/dotnetcore/CAP同样可以用来作为 EventBus 使用该项目诞生于2016年目前在 Github 已经有超过 6500 Star 和 110 贡献者以及在 NuGet超 800 万的下载量并在越来越多公司的和项目中得到应用。如果你想对 CAP 更多了解请查看我们的 官方文档。本次在 CAP 8.2 版本中我们主要带来了以下新特性支持消费者独立并行执行CapHeader 添加更多行为来控制回调改进当启用 EnablePublishParallelSend 时默认的调度行为为 NATS 支持 CustomHeadersBuilder 配置项其他改进支持消费者独立并行执行在介绍这个新特性之前 我们先来看看过去如果想让消费者独立执行应该怎么做。熟悉 CAP 的同学可能了解到CAP提供了一个 UseDispatchingPerGroup 配置项用来为消费者组启用独立的调度器独立的调度器意味着其具有独立的消费管道这样消费者组之间就不会互相影响默认如果不开启此配置项会将不同组的消息放置到同一管道来调度并串行执行从而可以实现如某些消费者执行非常长的时间也不会卡住另外一些执行时间比较短消费者这样也就做到了独立执行。当然如果想开启多个线程并发执行可以通过设置 SubscriberParallelExecuteThreadCount 配置项来启用多个执行线程执行这会提高消息的消费速度。可以看到在过去是不支持为消费者设置独立的并行度的SubscriberParallelExecuteThreadCount 其提供的是全局配置不支持独立为订阅者进行设置。以上都是过去的行为下面我们看一下现在如何做。在新版本中我们为 [CapSubscribe] 这个 Attribute 添加了一个新的参数 GroupConcurrent 来为订阅着设置并行度也就是说每一个组/订阅者都可以独立设置设置之后他们之间互不影响独立执行。下面我们来看一个示例定义消费者如下[CapSubscribe(hello)]public void Hello1(){Console.WriteLine(hello 1);}[CapSubscribe(hello, Group foo, GroupConcurrent 2)]public void Hello2(){Console.WriteLine(hello 2);Thread.Sleep(1000);}[CapSubscribe(hello, GroupConcurrent 2)]public void Hello3(){Console.WriteLine(hello 3);Thread.Sleep(1000);}为了验证 Hello2 和 Hello3 的执行我添加了 Thread.Sleep(1000);这2行代码。现在发送一条名为hello的消息我们来看一下订阅者是如何执行的。await cap.PublishAsync(hello, null);熟悉CAP的同学可能知道在过去 Hello1 和 Hello2 是都会执行如果启用了 UseDispatchingPerGroup 配置项那么会同时执行否则会串行执行。在新版本我们来看看是怎么执行的。先看 Hello2 新添加了 GroupConcurrent 参数会是什么效果呢 正如和前面说过的这是一个消费并行度参数在 Hello2中设置为 2 那么就代表这个方法在有新消息到达时候最多会有2个线程在同时执行它。所以此处的打印结果会是同时打印2个 hello 2。再来看 Hello1 和 Hello3 这两个哪个会打印呢 其实这两个也都会打印出来那么他们两个有什么区别呢可以看到的是一个添加了 GroupConcurrent 另外一个没添加。所以我来解释一下在内部我们会检测如果一个订阅者添加了 GroupConcurrent 而没有指定 Group 的话那么我们会认为其需要独立执行此时我们会自动采用订阅名称为其生成默认 Group 名称在此示例中就相当于设置了 Grouphello。这就说完了整体来说是不是很简单需要就设置不需要就不设置没有复杂的配置。所以新版本我们移除了 UseDispatchingPerGroup 配置项如你所见这已经是默认行为。PS: 如果将多个订阅者设置为同一组并且还为这些订阅者设置了 GroupConcurrent 值则并行度为组内值的和。PS: GroupConcurrent 在 RabbitMQ 中会自动对应设置Qos无需再手动干预。CapHeader 添加更多行为来控制补偿事务在发布消息的时候我们支持指定 callbackName 参数来进行补偿事务消费者执行完成后 CAP 会自动调用 callbackName 来回调执行补偿方法。接收到用户的反馈在某些场景下消费者可能执行成功就不需要再回调发布方那么此时消费者就需要控制补偿行为来避免回调再或者想回调另外一个方法来执行其他的补偿流程。在过去可能需要通过消费过滤器来实现现在我们为 CapHeader 提供了更多的行为来实现这一目的。下面来看一下要说的话都在代码里。[CapSubscribe(place.order.qty.deducted)]public object DeductProductQty(JsonElement param, [FromCap] CapHeader header){var orderId param.GetProperty(OrderId).GetInt32();var productId param.GetProperty(ProductId).GetInt32();var qty param.GetProperty(Qty).GetInt32();// 添加额外的头信息到响应消息中header.AddResponseHeader(some-message-info, this is the test);// 或再次添加补偿的回调header.AddResponseHeader(DotNetCore.CAP.Messages.Headers.CallbackName, place.order.qty.deducted-callback);// 如果你不再遵从发送着指定的回调想修改回调可通过 RewriteCallback 方法修改。header.RewriteCallback(new-callback-name);// 如果你想终止/停止或不再给发送方响应调用 RemoveCallback 来移除回调。header.RemoveCallback();return new { OrderId orderId, IsSuccess true };}改进启用 EnablePublishParallelSend 时默认调度行为在发布消息时我们支持使用 EnablePublishParallelSend 来启用并行发送因为发布消息属于 short-term 的task所以非常放置到 .NET 线程池执行。这本身没有问题在过去我们进行过压力测试也没有发现问题但是零星用户反馈会导致应用崩溃询问也没有反馈更多信息PS: 大家提交完 issue 不是就代表不用管了还请关注后续暂时还得不到更多消息是否是 Docker 限制了内存或CPU导致的不得而知。无论如何我们在这个版本优化了这一行为现在会分批次来将任务提交到线程池在上一批次执行完成后才会放置下一批次的任务。如果发布速度很快内存队列达到阈值也就是堆满后会启用背压机制来延缓发布者的响应。为 NATS 支持 CustomHeadersBuilder 配置项现在 NATS 也有了 CustomHeadersBuilder 配置项用于和三方异构系统做对接。没有太多好说的和其他 Transport 的用法都是一致。其他改进升级 Npgsql 到最新版本安全性升级Npgsql 易受通过协议信息大小溢出进行 SQL 注入。https://github.com/npgsql/npgsql/security/advisories/GHSA-x9vc-6hfv-hg8c升级 Dashboard npm包到最新次要版本修复 NATS重启后健康检查偶尔未正确恢复的问题参考 Issue #1542总结以上就是本版本我们做出的一些新特性和改动感谢大家的支持我们很开心能够帮助到大家 。大家在使用的过程中遇到问题希望也能够积极的反馈帮助CAP变得越来越好。??如果你喜欢这个项目可以通过下面的连接点击 Star 给我们支持。GitHub stars
军工OA系统集成CKEditor处理Word带图粘贴的方案? Word图片一键转存功能开发纪实:从组件调研到全栈落地 一、需求背景与技术选型 作为北京某科技公司的全栈开发,近期接到企业文档管理系统的核心需求:实现Word/Excel/PPT/PDF文档的智能解析,提取其中图片并自动上传至阿里云OSS&am… 2026/7/6 13:31:30
自己动手开发编器(三)有穷自动机 奈薪颓忻我还特意按照播放量排序了一下,准备先找个播放量高点的视频随随便巴拉几下。 排名第一的视频,播放量只有 6.3w。 说实话,在搜索之前,我潜意识里觉得这种这个话题,头部视频最次最次也得有个 10w 的播放吧&#… 2026/7/6 18:14:42
OpenAI发布GPT-5.4大语言模型,增强计算机视觉和工具使用能力 OpenAI集团今日发布了一款新的大语言模型,该公司表示这款模型在自动化工作任务方面比早期算法更加熟练。GPT-5.4现已在ChatGPT、Codex编程工具和OpenAI的应用程序编程接口中提供。该公司根据其大语言模型在生成提示响应时处理的Token数量向API用户收费。Token是由几… 2026/7/6 18:14:40
pymoo多目标优化框架架构深度解析与高级应用实践 pymoo多目标优化框架架构深度解析与高级应用实践 【免费下载链接】pymoo NSGA2, NSGA3, R-NSGA3, MOEAD, Genetic Algorithms (GA), Differential Evolution (DE), CMAES, PSO 项目地址: https://gitcode.com/gh_mirrors/py/pymoo 在复杂工程系统设计与决策支持领域&… 2026/7/7 3:18:30
兰州大学2021创新实践课程:openEuler在高校教育中的完整应用指南 兰州大学2021创新实践课程:openEuler在高校教育中的完整应用指南 【免费下载链接】lanzhou_university_2021 仓库关闭的原因:https://gitee.com/openeuler/community/pulls/3117 项目地址: https://gitcode.com/openeuler/lanzhou_university_2021 … 2026/7/7 3:18:30
如何用缝合像素字体为你的项目注入复古魅力:3种尺寸、2种模式全解析 如何用缝合像素字体为你的项目注入复古魅力:3种尺寸、2种模式全解析 【免费下载链接】fusion-pixel-font 开源的泛中日韩像素字体,黑体风格 项目地址: https://gitcode.com/gh_mirrors/fu/fusion-pixel-font 你是否正在寻找一款既能展现复古像素美… 2026/7/7 3:16:30
亚马逊广告结构优化:实现高效增长与盈利的关键策略 引言:为何亚马逊广告结构至关重要?在当前竞争激烈的电商环境中,流量成本日益攀升,亚马逊卖家普遍面临着点击率(CTR)与转化率(CVR)的增长瓶颈。广告不再仅仅是获取曝光的工具… 2026/7/7 3:16:29
6DoF IMU传感器IIM-42652与PIC18F45K50集成开发指南 1. 从3D到6DoF:IMU传感器的进阶之路在运动追踪和姿态感知领域,3D运动捕捉已经不能满足现代应用的需求。6DoF(六自由度)技术通过增加三个旋转维度的数据,实现了对物体在空间中完整运动的精确描述。IIM-42652作为TDK Inv… 2026/7/7 3:14:29
Linux iperf 命令超全详解:TCP/UDP 带宽 / 丢包 / 抖动一键测试,网络性能神器 1. 命令简介iperf 是一款开源的、跨平台的网络性能测试工具,用于测量网络带宽、延迟抖动和数据包丢失等关键指标。它支持 TCP 和 UDP 两种协议,能够评估网络设备(如路由器、交换机、防火墙)的性能以及网络链路的实际吞吐量。该工具… 2026/7/7 3:12:29
Acunetix v24.8 深度解析:DAST漏洞扫描器核心原理与DevSecOps实践 1. 项目概述:Acunetix v24.8 高级版漏洞扫描器深度解析作为一名在网络安全领域摸爬滚打多年的老兵,我深知一款趁手的“兵器”对于安全测试工作意味着什么。今天要聊的,就是Web应用安全测试领域里一个响当当的名字——Acunetix。特别是其v24.8… 2026/7/7 0:01:11
如何3步搞定加密视频下载:跨平台资源嗅探与解密工具终极指南 如何3步搞定加密视频下载:跨平台资源嗅探与解密工具终极指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 你是… 2026/7/7 0:03:13
Jailhouse-gui可视化管理工具:让多核处理器分区变得简单高效 Jailhouse-gui可视化管理工具:让多核处理器分区变得简单高效 【免费下载链接】Jailhouse-gui A graphical user interface (GUI) tool for configuring and managing Jailhouse, a Linux-based hypervisor for partitioning multicore processors into isolated cel… 2026/7/7 0:03:13
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/6 8:43:22
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/6 7:29:49
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/6 7:29:51