91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Actor-ES框架中的消息發布器與消息存儲器是怎樣的

發布時間:2022-01-05 14:55:47 來源:億速云 閱讀:120 作者:柒染 欄目:大數據

這篇文章給大家介紹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.HostStartSilo()方法。

Actor-ES框架中的消息發布器與消息存儲器是怎樣的

關于Actor-ES框架中的消息發布器與消息存儲器是怎樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

满城县| 靖江市| 兰考县| 乌拉特前旗| 漳州市| 安西县| 开江县| 永城市| 交城县| 夏河县| 龙口市| 潢川县| 长治市| 贵定县| 冀州市| 达日县| 诏安县| 麻江县| 泽普县| 闽侯县| 陆丰市| 定结县| 松原市| 平和县| 垦利县| 蓝山县| 肇庆市| 湘潭县| 鹤壁市| 吉林市| 乌鲁木齐县| 格尔木市| 汉阴县| 囊谦县| 丹寨县| 蕉岭县| 遂川县| 府谷县| 舞钢市| 体育| 确山县|