Actor-ES框架:消息发布器与消息存储器
消息發(fā)布器:
Ray是基于Event Sourcing設(shè)計的ES/Actor框架,ESGrain狀態(tài)(State)的修改、ESGrain之間的通信默認(rèn)使用RabbitMQ通信。消息的發(fā)布器主要是RabbitPub+ESGrain。
RabbitPub特性
RabbitPub特性是RabbitMQ消息發(fā)布器。
RabbitSub特性用到的構(gòu)造函數(shù)如下:
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:消息隊列數(shù)。用于消息的負(fù)載均衡。
使用:
為對應(yīng)的Actor添加RabbitMQ.RabbitPub特性
繼承MongoESGrain或SqlGrain
在方法中使用實例化事件,并調(diào)用RaiseEvent發(fā)布事件。
示例:
[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可以單獨使用,用于發(fā)布消息。
消息存儲器:
消息的存儲器用于持久化ESGrain的Event事件與State快照數(shù)據(jù),需要的時候進行重放。Ray默認(rèn)使用MongoDB存儲事件和快照。
使用: 為對應(yīng)的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();//創(chuàng)建分表索引CreateStateIndex();//創(chuàng)建快照索引 }eventDatabase:事件的Database名稱。
collection:事件的collection名稱。
sharding:是否需要分表,默認(rèn)值false。
shardingDays:分表時間間隔,默認(rèn)值90天。
示例:
[RabbitMQ.RabbitPub("Account", "account")] [MongoStorage("Test", "Account")]//事件存儲 public sealed class Account : MongoESGrain<String, AccountState, IGrains.MessageInfo>, IAccount { …… }shardingDays分表時間間隔有個起始點,開始時間在MongoConfig中定義。具體使用參見Example.Ray.Host中StartSilo()方法。
相關(guān)文章:
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社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的Actor-ES框架:消息发布器与消息存储器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DotNetAnywhere:可供选择的
- 下一篇: Metrics, tracing 和 l