我是scala的新手,我正在研究Publisher-Subscribe用法。我的Google技能可能存在问题,但我似乎找不到这种用法的示例,我可以指定订阅者应该观察哪些事件。
有人有一些例子吗?
谢谢!
答案 0 :(得分:4)
如果你需要一些非常简单的东西,那么我建议你自己做,不应该那么难。但如果你想要更大的东西,你可以看看Eventbus。它是Java lib,但我也在使用Scala。
在http://jim-mcbeath.blogspot.com/2009/10/simple-publishsubscribe-example-in.html
中描述了Scala中的示例实现答案 1 :(得分:4)
可以在http://comments.gmane.org/gmane.comp.lang.scala.user/63002上找到一个简单的参考示例:
case class MyEvent(number: Int)
class PrintIt extends Subscriber[MyEvent, Publisher[MyEvent]] {
override def notify(pub: Publisher[MyEvent], event: MyEvent): Unit = {
println("got an event: " + event)
}
}
class RunIt extends Publisher[MyEvent] {
def pub() = publish(MyEvent(12))
}
object Main extends App {
val runIt = new RunIt()
runIt.subscribe(new PrintIt)
runIt.pub()
}
答案 2 :(得分:2)
您可以在此处找到一个简单的EventBus实现。它还执行异步事件处理和预定事件发布。
https://github.com/hipjim/scala-event-bus
case class Msg(content: String)
val eb = EventBus()
eb.subscribe[Msg] { t =>
println(t.content)
}
for (i <- 1 to 100)
eb.post(Msg(i.toString))