Cách mở rộng xử lý của actor trong akka
Scala
50
White

huydx viết ngày 20/06/2015

Spoiler: đây là note cá nhân của mình khi sử dụng akka.

Khi dùng akka thì cách sử dụng thông thường sẽ là extends Actor class và override lại hàm receive

import akka.actor._

class BaseActor extends Actor {
 def receive = {
   case Message1() => //do something1
   case Message2() => //do something2
 }
}

Về cơ bản thì receive được định nghĩa trong Actor object là một PartialFunction

type Receive = PartialFunction[Any, Unit]

Trong một số trường hợp khi các xử lý do something 1do something 2 trở nên phức tạp và logic không liên quan đến nhau, bạn muốn chia ra đặt ở các chỗ chứa khác nhau. Chỗ chứa ở đây có thể là 2 class: class 1 và class 2, có thể là trait 1 và trait 2. Tuy nhiên vấn đề ở đây là

Làm sao tách một partial function to ra thành các partial function nhỏ hơn

Để compose các partial function trong scala thì chúng ta dùng hàm orElse

partial1 orElse partial2

Như vậy với trường hợp ở trên chúng ta có thể tách thành các trait nhỏ hơn

trait Message1Op {
 def proc1 = {
  case Message1 => //do smt
 }
}

trait Message2Op {
 def proc1 = {
  case Message2 => //do smt
 }
}

class FooActor extends Actor with Message1Op with  Message2Op {
 def receive =  proc1 orElse proc2
}
Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

huydx

118 bài viết.
1051 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
164 15
Introduction (Link) là một cuộc thi ở Nhật, và cũng chỉ có riêng ở Nhật. Đây là một cuộc thi khá đặc trưng bởi sự thú vị của cách thi của nó, những...
huydx viết 2 năm trước
164 15
White
149 15
Một ngày đẹp trời, bạn quyết định viết một dịch vụ web dự định sẽ làm thay đổi cả thế giới. Dịch vụ của bạn sẽ kết nối tất cả các thiết bị di động ...
huydx viết 2 tháng trước
149 15
White
133 15
Happy programmer là gì nhỉ, chắc ai đọc xong title của bài post này cũng không hiểu ý mình định nói đến là gì :D. Đầu tiên với cá nhân mình thì hap...
huydx viết hơn 3 năm trước
133 15
Bài viết liên quan
White
10 0
Kí tự Regex cơ bản Về cơ bản thì các sử lý matching của scala.util.matching.Regex sẽ được "phó thác" (delegate) cho java Regex. Bạn có thể tạo một ...
huydx viết hơn 3 năm trước
10 0
White
7 1
Trong scala kí tự _ được dùng với khá nhiều mục đích .. không liên quan đến nhau. Tạm note lại cái đã khi nào có time sẽ quay lại viết cẩn thận sa...
huydx viết hơn 3 năm trước
7 1
White
1 0
(Bài viết hơi khó hiểu, dành cho bạn nào có hứng thú với type programming trong scala với các thư viện như shapeless chẳng hạn) Thông thường với m...
huydx viết hơn 2 năm trước
1 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
118 bài viết.
1051 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!