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.