2012-12-03 37 views
5

Tôi có một diễn viên cấp cao nhất (dưới người giám hộ), được gọi là Groups khi khởi động cần tải danh sách nhóm từ cơ sở dữ liệu và tạo một nhóm diễn viên trẻ dựa trên các nhóm đó trong cơ sở dữ liệu.Cách thực hành tốt nhất để khởi tạo diễn viên từ cơ sở dữ liệu

Tôi đã đặt mã tải cơ sở dữ liệu bên trong chức năng preStart vì tôi không muốn bất kỳ thư nào được xử lý trước khi các nhóm được tải.

Hiện tại, diễn viên Groups của tôi trông giống như thế này;

var groups: Map[String, ActorRef] = Map() 

override def preStart() = { 
    groups = getGroupsFromDB() map createGroup 
} 

def createGroup(pair: (String, Long)) = { 
    val (name, id) = pair 
    val group = context.actorOf(Props(new Group(id, name)), name = name) 

    name -> group 
} 

Tuy nhiên tôi không tin đây là cách tốt nhất để xử lý việc này, vì điều gì sẽ xảy ra nếu máy chủ cơ sở dữ liệu không khả dụng? Vậy cách tốt nhất để xử lý việc khởi tạo dữ liệu từ cơ sở dữ liệu là gì?

Trả lời

1

Akka documentation giải thích cách giám sát diễn viên cấp cao nhất về khả năng chịu lỗi.

Bạn có thể áp dụng các nguyên tắc ở đó để quản lý các ngoại lệ mà bạn có thể tìm thấy nếu DB không khả dụng.

+0

Cảm ơn, tôi đã lấy ý tưởng từ trang đó và sử dụng chúng trong thiết kế của tôi. tức là có các diễn viên lưu trữ/DB riêng biệt. Tôi muốn có một mẫu mã về cách quản lý các kết nối cơ sở dữ liệu. – Phenix

Các vấn đề liên quan