Ich versuche, die Nachricht von den RabbitMQ Warteschlange aber nur erstes Mal, es gibt mir die Nachrichtenanzahl zu holen und dann ist es mir keine count.I geben scala Sprache verwenden und nutzt seine Schauspieler. Jede Art von Hilfe wird geschätzt.RabbitMQ nur einmal bekommt Nachrichtenanzahl aus der Warteschlange
Code wie folgt
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)
}
}
Mein Code wird an dieser Linie conn = FACTORY.newConnection in Endlosschleife bekommen, wenn es dort zweites Mal gehen.
Warum sind Sie die Warteschlange als Schauspieler Einwickeln? Könnte das ein Thread sein, der die Nachrichten an andere Schauspieler sendet? – Thomas