Saya akan membuat driver dan connection dalam aktor utama. Saya kemudian akan mengatur aktor pekerja untuk mengambil contoh MongoConnection sebagai argumen konstruktor sehingga setiap pekerja memiliki referensi ke koneksi (yang sebenarnya merupakan proxy ke kumpulan koneksi). Kemudian, dalam sesuatu seperti preStart , minta aktor utama membuat pekerja (yang saya asumsikan dirutekan) dan berikan koneksi sebagai arg. Contoh yang sangat sederhana dapat terlihat seperti ini:
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 = {
...
}
}
Kode ini tidak tepat, tetapi setidaknya menunjukkan konsep tingkat tinggi yang saya jelaskan.