日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Actor-ES框架:消息发布器与消息存储器

發布時間:2023/12/4 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Actor-ES框架:消息发布器与消息存储器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
消息發布器:

Ray是基于Event Sourcing設計的ES/Actor框架,ESGrain狀態(State)的修改、ESGrain之間的通信默認使用RabbitMQ通信。消息的發布器主要是RabbitPub+ESGrain。

RabbitPub特性

RabbitPub特性是RabbitMQ消息發布器。

RabbitSub特性用到的構造函數如下:

public RabbitPubAttribute(string exchange = null, string queue = null, int queueCount = 1){this.Exchange = exchange;this.Queue = queue;this.QueueCount = queueCount;}
  • exchange:RabbitMQ中的exchange名稱。

  • queue:RabbitMQ中的queue名稱。

  • queueCount:消息隊列數。用于消息的負載均衡。

使用:

  • 為對應的Actor添加RabbitMQ.RabbitPub特性

  • 繼承MongoESGrain或SqlGrain

  • 在方法中使用實例化事件,并調用RaiseEvent發布事件。

示例:

[RabbitMQ.RabbitPub("Account", "account")] public sealed class Account : MongoESGrain<String, AccountState, IGrains.MessageInfo>, IAccount{……} public Task Transfer(string toAccountId, decimal amount){var evt = new AmountTransferEvent(toAccountId, amount, this.State.Balance - amount);return RaiseEvent(evt).AsTask();}

RabbitPub可以單獨使用,用于發布消息。


消息存儲器:

消息的存儲器用于持久化ESGrain的Event事件與State快照數據,需要的時候進行重放。Ray默認使用MongoDB存儲事件和快照。

使用: 為對應的Actor添加MongoStorage特性。

public MongoStorageAttribute(string eventDatabase, string collection, bool sharding = false, int shardingDays = 90) {this.EventDataBase = eventDatabase;this.EventCollection = collection + "Event";this.SnapshotCollection = collection + "State";this.sharding = sharding;this.shardingDays = shardingDays;CreateCollectionIndex();//創建分表索引CreateStateIndex();//創建快照索引 }
  • eventDatabase:事件的Database名稱。

  • collection:事件的collection名稱。

  • sharding:是否需要分表,默認值false。

  • shardingDays:分表時間間隔,默認值90天。

示例:

[RabbitMQ.RabbitPub("Account", "account")] [MongoStorage("Test", "Account")]//事件存儲 public sealed class Account : MongoESGrain<String, AccountState, IGrains.MessageInfo>, IAccount { …… }

shardingDays分表時間間隔有個起始點,開始時間在MongoConfig中定義。具體使用參見Example.Ray.Host中StartSilo()方法。

相關文章:

  • Actor-ES框架:Ray

  • Actor-ES框架:Ray--事件(Event)編寫說明

  • Ray框架Q&A

  • Actor-ES框架:Ray-Handler之CoreHandler編寫

  • Actor-ES框架:Ray-Handler之ToReadHandler編寫

  • Actor-ES框架:Actor編寫-ESGrain與ESRepGrain


原文地址:http://www.cnblogs.com/CharlesZHENG/p/8438051.html


.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

總結

以上是生活随笔為你收集整理的Actor-ES框架:消息发布器与消息存储器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。