Actor-ES框架中的消息发布器与消息存储器是怎样的

Actor-ES框架中的消息发布器与消息存储器是怎样的

这篇文章给大家介绍Actor-ES框架中的消息发布器与消息存储器是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

消息发布器:

Ray是基于Event Sourcing设计的ES/Actor框架,ESGrain状态(State)的修改、ESGrain之间的通信默认使用RabbitMQ通信。消息的发布器主要是RabbitPub+ESGrain

RabbitPub特性

RabbitPub特性是RabbitMQ消息发布器。

RabbitSub特性用到的构造函数如下:

publicRabbitPubAttribute(stringexchange=null,stringqueue=null,intqueueCount=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")]publicsealedclassAccount:MongoESGrain<String,AccountState,IGrains.MessageInfo>,IAccount{……}publicTaskTransfer(stringtoAccountId,decimalamount){varevt=newAmountTransferEvent(toAccountId,amount,this.State.Balance-amount);returnRaiseEvent(evt).AsTask();}

RabbitPub可以单独使用,用于发布消息。


消息存储器:

消息的存储器用于持久化ESGrain的Event事件与State快照数据,需要的时候进行重放。Ray默认使用MongoDB存储事件和快照。

使用: 为对应的Actor添加MongoStorage特性。

publicMongoStorageAttribute(stringeventDatabase,stringcollection,boolsharding=false,intshardingDays=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")]//事件存储publicsealedclassAccount:MongoESGrain<String,AccountState,IGrains.MessageInfo>,IAccount{……}


shardingDays分表时间间隔有个起始点,开始时间在MongoConfig中定义。具体使用参见Example.Ray.HostStartSilo()方法。

关于Actor-ES框架中的消息发布器与消息存储器是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

发布于 2022-01-05 23:19:11
收藏
分享
海报
0 条评论
43
上一篇:Makefile的示例分析 下一篇:如何扩展RBAC
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码