開源分布式消息框架 Cap 可以在GitHub上拉也可以通過nuget添加
上一篇博文寫了 Windows RabbitMQ的安裝使用
Cap支持事務,通過捕獲數據庫上下文連接對象實現 消息事務,消息持久化
怎么來實現消息訂閱 消費?
使用起來非常簡單,主要通過這個類來實現
發布:ICapPublisher 、
訂閱:CapSubscribe
DNC的注入就不做介紹了,引用好相關的Cap類,並注入如下,如果需要事務請注入數據庫訪問上下文對象
public ValuesController(AppDbContext dbContext, ICapPublisher capPublisher) { _dbContext = dbContext; _capBus = capPublisher; }
消息發布 :定義消息名稱 參數
_capBus.Publish("sample.rabbitmq.mysql", parameters);
消息訂閱 訂閱消息名稱 本生是Attributes屬性,寫到 Action上就ok了
[CapSubscribe("sample.rabbitmq.mysql")]
public void ReceiveMessage(string parameters) { //處理方法 }
配置
這里我們用Mysql來試試
//添加數據庫上下文服務
services.AddDbContext<AppDbContext>();
//添加cap服務 services.AddCap(x => { x.UseEntityFramework<AppDbContext>(); // x.UseRabbitMQ("localhost"); x.UseRabbitMQ(options => {
//上一篇中我創建的用戶名密碼 options.HostName = "192.168.0.42"; options.UserName = "liyouming"; options.Password = "lym123!@#"; });
//啟用儀表盤 x.UseDashboard(); });
在配置Configure
app.UseCap();
啟動程序 發布一個消息 並接受訂閱 訪問下儀表盤
已經發布成功
下面登錄下 RabbitMQ Server Management
數據庫消息發布及訂閱數據
參考資料
https://www.cnblogs.com/savorboard/p/cap.html
https://github.com/dotnetcore/CAP