0
RabbitMqのキューからメッセージを取得しようとしていますが、最初にメッセージカウントを与えてからカウントを与えません。スカラ言語を使用しています。どんな種類の助けにも感謝します。RabbitMQは一度だけキューからメッセージ数を取得する
コード、それはそこに二度目に行くとき私のコードは、でCONN = FACTORY.newConnectionこのラインで無限ループになっている
def act {
loop {
FACTORY = new ConnectionFactory()
// println("loop")
FACTORY.setUsername("guest")
FACTORY.setPassword("guest")
FACTORY.setVirtualHost("/")
FACTORY.setPort(5672)
FACTORY.setHost("localhost")
**conn = FACTORY.newConnection**
QUEUE_CHANNEL = conn.createChannel
QUEUE_CHANNEL.exchangeDeclare(EXCHANGE_NAME, "direct", durable)
var no = QUEUE_CHANNEL.queueDeclare(QUEUE_NAME, durable, false,false,null).getMessageCount
println("calling to main Q" + no)
QUEUE_CHANNEL.queueBind(QUEUE_NAME, EXCHANGE_NAME, QUEUE_ROUTING_KEY)
if (no > 0) {
println("calling to main Q" + no)
getQ
}
}
}
def getQ {
try {
println("gettng main q")
val consumer = new QueueingConsumer(QUEUE_CHANNEL)
QUEUE_CHANNEL basicConsume (QUEUE_NAME, false, consumer)
val delivery = consumer.nextDelivery
val msg = new java.io.ObjectInputStream(
new java.io.ByteArrayInputStream(delivery.getBody)).readObject
var obj = msg.asInstanceOf[QueueObject]
QUEUE_CHANNEL.basicAck(delivery.getEnvelope().getDeliveryTag, false)
//println(obj.status)
if (obj != null)
add(obj) //add to particular queue
} catch {
case e: InterruptedException => println(e)
}
}
を次のように。
は、なぜあなたは俳優としてキューをラップしていますか?それは他のアクターにメッセージを送信するスレッドですか? – Thomas