Tôi sẽ tạo driver
và connection
trong diễn viên chính. Sau đó, tôi sẽ thiết lập các tác nhân công nhân để lấy một phiên bản của MongoConnection
như một đối số của phương thức khởi tạo để mỗi worker có một tham chiếu đến kết nối (thực sự là một proxy cho một nhóm các kết nối). Sau đó, trong một cái gì đó như preStart
, yêu cầu tác nhân chính tạo các công nhân (mà tôi đang giả định là được định tuyến) và cung cấp kết nối như một đối số. Một ví dụ rất đơn giản có thể trông như thế này:
class MongoMaster extends Actor{
val driver = new MongoDriver
val connection = driver.connection(List("localhost"))
override def preStart = {
context.actorOf(Props(classOf[MongoWorker], connection).withRouter(FromConfig()))
}
def receive = {
//do whatever you need here
...
}
}
class MongoWorker(conn:MongoConnection) extends Actor{
def receive = {
...
}
}
Mã này không chính xác, nhưng ít nhất nó cho thấy các khái niệm cấp cao mà tôi đã mô tả.