发布者在Scala中订阅

时间:2011-10-25 16:01:29

标签: scala publish-subscribe

我是scala的新手,我正在研究Publisher-Subscribe用法。我的Google技能可能存在问题,但我似乎找不到这种用法的示例,我可以指定订阅者应该观察哪些事件。

有人有一些例子吗?

谢谢!

3 个答案:

答案 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))