是否有可能通过Akka Event Stream(scala)获取事件的响应?

时间:2016-05-10 23:34:41

标签: scala playframework akka

在app中,我们非常使用Akka Event Stream来处理与主要业务流无关的逻辑。例如:发送电子邮件,同步记录等......所有这些事件目前都被解雇并被遗忘。

system.eventStream.publish(<event>)

在大多数情况下,它们由侦听器以异步方式处理。 但是,我现在正在调查通过事件系统扩展类功能的选项,有时需要事件的返回值? 是否有可能从事件中获得一些结果?我找不到这方面的具体内容。

谢谢,

1 个答案:

答案 0 :(得分:0)

它是基于事件的系统的一个功能:您知道是谁触发了事件,您不知道谁将处理它,也不知道何时(可以是异步)。

因此,如果您的侦听器应该生成答案,那么最惯用的解决方案是以异步方式执行。因此,听众应该发送一个带有答案的活动。

另一种方法是绕过事件总线并将处理程序注册为事件源的侦听器(您应该通过akka消息和简单列表处理自己的注册/取消注册功能)。当您的事件源触发侦听器时,它可以使用ask模式执行此操作。