2015-04-22 5 views
5

Akka'da nasıl kontrol edilir Gelen kutusunda bir mesaj ne kadardı? İleti gelen kutusunda çok uzunsa bir günlük iletisi oluşturmak istiyorum. Şunlar gibi:Akka - bir iletinin gelen kutusunda ne kadar olduğunu nasıl kontrol edersiniz?

override def receive: Receive = { 
    case Message => 
     val timeInInbox = ... 
     if (timeInInbox > treshold) log.warn("bla bla bla the doom is coming") 
+1

, iletilerinizi açık bir şekilde zaman damgası haline getirebilir, örneğin: 'case class İleti (ts: Uzun)' – kosii

+2

Oturum açma yerine, çok uzun bir işlem yapıyoruz. gelen kutusunda kalmak. Kosii'nin bir zaman damgasıyla oyuncularımıza giden tüm mesajlarımızı önerip damgaladığını ve mesajların oluşturulduğu zamandan bu yana ne kadar zaman geçtiğini görmek için 'dequeue' işlevini geçersiz kılan özel bir posta kutusuna sahip olduğumuzu yapıyoruz. posta kutusundan dequeued edildi. – cmbaxter

+0

Özel bir posta kutusu oluşturduğumda, özgün mesajı tuple '(msg, timestamp) içine koyan ve kayıtla birlikte 'dequeue' geçersiz kılan" enqueue "ile büyük bir yük oluşturur mu? – mpr

cevap

0

Akka için şu anda yerleşik hiçbir şey yok.

Her iletinin varış saatini enqueue tarihinde kaydedip, oturum süresini dequeue oturumunda kaydeden özel bir posta kutusu uygulaması oluşturabilirsiniz. Akka belgelerinde "Creating your own Mailbox type" konusuna bakın.

getCurrentTimeMillis veya benzeri aramaların ucuz olmadığından emin olun, böylece böyle bir posta kutusunun önemli bir performans maliyetine sahip olduğunu görebilirsiniz. Bu yüzden Akka'nın bunu kutudan çıkarmamasını bekliyorum.