J'essaye d'aller chercher le message de la file d'attente de RabbitMq mais seulement la première fois il me donne le compte de message et alors il ne me donne aucun compte. acteur.Tout type d'aide sera apprécié.RabbitMQ une seule fois obtenir le nombre de messages de la file d'attente
Codecomme suit
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)
}
}
Mon code devient en boucle infinie à cette ligne conn = FACTORY.newConnection quand il y aller une deuxième fois.
Pourquoi vous envelopper la file d'attente en tant qu'acteur? Serait-ce un fil qui envoie les messages à d'autres acteurs? – Thomas