CAP 發佈 5-0 版本正式發佈
總覽
可能有些人還不知道 CAP 是什麼,老規矩來一個簡介。
CAP 是一個用來解決微服務或者分佈式系統中分佈式事務問題的一個開源項目解決方案(https://github.com/dotnetcore/CAP)同樣可以用來作爲 EventBus 使用,該項目誕生於 2016 年,目前在 Github 已經有超過 4500 Star 以及超過 75 萬 的下載量,已經在越來越多公司的和項目中得到應用。
如果你想對 CAP 更多瞭解,請查看我們的 官方文檔。
本次在 CAP 5.0 版本中我們主要帶來了以下新特性:
-
適配 .NET 5 和 .NET Standard 2.1
-
增加了對 NATS Transport 的支持
-
替換 Newtonsoft.Json 爲 System.Text.Json
-
在 RabbitMQ 中啓用發佈確認
-
在 RabbitMQ 中支持創建 lazy 隊列的選項。
-
在 Kafka 中,啓動將會自動創建 Topic。
-
添加自定義 Group 和 Topic 前綴的選項。
-
更新依賴的 NuGet 包到最新版本
-
數個 Bug 修復
適配 .NET 5 和 .NET Standard 2.1
雖然上一個版本也能夠在 .NET 5 的項目中使用,但是在這個版本中我們升級到了我們以來的 NuGet 包到 .NET 的版本,並且調整到了對 .NET Standard 2.1 的支持以便於我們可以利用新特性。
感謝 @rezabayesteh 對此提提交的 PR.
增加了對 NATS Transport 的支持
根據我們的 issue 投票,我們決定在這個版本中對 NATS 提供支持。
NATS 是一個簡單,安全,高性能的開源消息傳遞系統,適用於雲原生應用,IoT 消息傳遞和微服務架構,目前也是 CNCF 下的一個項目。
你可以在文檔中看到更多介紹:https://cap.dotnetcore.xyz/user-guide/zh/transport/nats/
集成方式:
1services.AddCap(x =>
2{
3 ...
4 x.UseNATS("");
5});
6
7
替換 Newtonsoft.Json 爲 System.Text.Json
在這個版本中, 我們將 Newtonsoft.Json 替換爲了 System.Text.Json。
Transport 中的改動
RabbitMQ
如果 RabbitMQ 節點在將消息寫入磁盤之前失敗,則可能會丟失持久消息。例如,請考慮以下情形:
客戶端將持久消息發佈到持久隊列
客戶端使用隊列中的消息(請注意消息是持久的,隊列是持久的),但確認未激活,
代理節點發生故障並重新啓動,並且
客戶端重新連接並開始使用消息
此時,客戶端可以合理地假設該消息將再次傳遞。情況並非如此:重新啓動已導致代理丟失消息。爲了保證持久性,客戶應使用確認。如果發佈者的頻道處於確認模式,則發佈者不會收到丟失消息的確認消息(因爲該消息尚未寫入磁盤)。
RabbitMQ 在 3.1.6 引入了 lazy queue 的概念,用於將消息儘早的轉移到磁盤,然後在消費的時候才加載到 RAM 中。
具體可以查看這裏的介紹:https://www.rabbitmq.com/lazy-queues.html
集成方式:
1services.AddCap(x =>
2{
3 ...
4 x.UseRabbitMQ(aa =>
5 {
6 ...
7 aa.QueueArguments.QueueMode = "lazy";
8 });
9}
10
11
Kakfa
Kafka 中,啓動將會自動創建 Topic
由於 confluent-kafka-dotnet#1366 的原因,在首次啓動 Kakfa 客戶端的時候會出現
Error: Broker: Unknown topic or partition
的異常,我們沒有再等待官方修復這個問題,而且採取了其他的解決辦法。
在 Kafka Transport 啓動的時候,我們會自動向 Kakfa Broker 進行 Topic 的註冊,以便於當消息來時候可以及時接收到而不必多次啓動應用程序來創建 Topic。
相關 issue : https://github.com/dotnetcore/CAP/issues/795
添加自定義 Group 和 Topic 前綴的選項
在一些場景中需要對 Group 或者 Topic 進行區分,特別是 AWS SQS 由於不同項目都是使用的同一個雲服務來共享 SNS 和 SQS,所以這種情況下進行添加前綴就更加直觀的看出來。
在本版本中,我們支持了自定義對 Group 和 Topic 的前綴添加功能,感謝 @AndriiLab 對此 PR 提供的支持。
其他
其他的一些改進項目包括:
1、我們將所有的 nuget 的依賴包都升級到了最新版本。
2、修復了一些已知的 Bug,你可以在這裏看到。
總結
以上,就是本版本中支持的一些新特性,感謝大家的支持,我們很開心能夠幫助到大家
。大家在使用的過程中遇到問題希望也能夠積極的反饋,幫助 CAP 變得越來越好。😃
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/7ehcNpbyhrKPUd4hMi2bTA