在我的模型中有大約8-9斯卡拉演員。 每個演員有RabbitMQ的服務器將在其自己的隊列一些斯卡拉演員進入等待狀態時8-10演員同時運行
在每個演員的動作方法。它不斷上市隊列 像
def act {
this ! 1
loop {
react {
case 1 => processMessage(QManager.getMessage); this ! 1
}
}
}
我一個RabbitMQ的QManager getMessage方法
def getMessage: MyObject = {
getConnection
val durable = true
channel.exchangeDeclare(EXCHANGE, "direct", durable)
channel.queueDeclare(QUEUE, durable, false, false, null)
channel queueBind (QUEUE, EXCHANGE, _ROUTING_KEY)
consumer = new QueueingConsumer(channel)
channel basicConsume (QUEUE, false, consumer)
var obj = new MyObject
try {
val delivery = consumer.nextDelivery
val msg = new java.io.ObjectInputStream(
new java.io.ByteArrayInputStream(delivery.getBody)).readObject()
obj = msg.asInstanceOf[MyObject]
channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false)
} catch {
case e: Exception =>logger.error("error in Get Message", e);endConnection
}
endConnection
obj
}
所有9個Actor都有自己的對象類型和一個自己的對象類型QManager
GetMessage我正在使用Rabbitmq QueueConsu濱海
val delivery = consumer.nextDelivery
和nextDelivery方法時,在隊列中 這種方法itfounds使演員在等待狀態
當我開始所有演員8只,其中4工作正常,其他都沒有說明返回一個對象。 我有測試每一個演員相互依賴單獨運行
開始時,我開始更多的是4名演員
是therer Scala的演員穿的任何問題,會出現問題時,他們工作得很好。
我可以知道如何增加演員池的大小 – 2011-01-28 15:10:13
請參閱http://stackoverflow.com/questions/1597899的答案 – 2011-01-28 20:21:59