AKKA事件机制

AKKA Event Bus

事件机制就用于当前运行环境,与集群环境不同,详细见AKKA 集群中的发布与订阅Distributed Publish Subscribe in Cluster

简单实现示例

1package event 2 3import akka.actor.AbstractActor 4import akka.actor.ActorRef 5import akka.actor.ActorSystem 6import akka.actor.Props 7import akka.event.japi.LookupEventBus 8import akka.japi.pf.ReceiveBuilder 9import com.typesafe.config.ConfigFactory 10 11/** 12 * Created by: tankx 13 * Date: 2019/7/18 14 * Description: 事件与监听 15 */ 16object EventBus : LookupEventBus<MyEvent, ActorRef, String>() {//参数(事件类型,订阅者类型,用于区分事件定义的类型) 17 18 override fun classify(event: MyEvent): String {//用于区分不同事件(事件类型) 19 return event.type 20 } 21 22 override fun publish(event: MyEvent, subscriber: ActorRef) { 23 subscriber.tell(event, ActorRef.noSender()) 24 } 25 26 //期望的事件类型的数量 27 override fun mapSize(): Int { 28 return 1000 29 } 30 31 override fun compareSubscribers(a: ActorRef, b: ActorRef): Int { 32 return a.compareTo(b) 33 } 34 35 36} 37 38//订阅actor 39class SubActor : AbstractActor() { 40 41 override fun createReceive(): Receive { 42 return ReceiveBuilder.create().matchAny(this::receive).build() 43 } 44 45 fun receive(msg: Any) { 46 47 println("收到消息: $msg") 48 49 } 50 51} 52 53fun main() { 54 55 var system: ActorSystem = ActorSystem.create("system"); 56 57 var eventActor = system.actorOf(Props.create(SubActor::class.java)) 58 59 60 EventBus.subscribe(eventActor, "aaa")//(订阅者,事件类型) 61 EventBus.subscribe(eventActor, "bbb") 62 EventBus.subscribe(eventActor, "ccc") 63 EventBus.subscribe(eventActor, "ddd") 64 65 66 EventBus.publish(MyEvent("aaa", "数据")) 67 EventBus.publish(MyEvent("bbb", "数据")) 68 EventBus.publish(MyEvent("ccc", "数据")) 69 EventBus.publish(MyEvent("ccc", "数据")) 70}
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )