RabbitMQ только один раз получает количество сообщений из очереди - PullRequest
0 голосов
/ 18 ноября 2010

Я пытаюсь получить сообщение из очереди RabbitMq, но только в первый раз он дает мне счетчик сообщений, а затем не дает мне счетчик. Я использую язык scala и использую его субъект. Любая помощь будетпризнателен.

код выглядит следующим образом

       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)
}
}

Мой код попадает в бесконечный цикл в этой строке conn = FACTORY.newConnection при переходе туда во второй раз.

1 Ответ

1 голос
/ 13 декабря 2010

Отказ от ответственности: я - представитель Akka

Я бы порекомендовал вам взглянуть на актеров в Akka, у меня есть отличный DSL поверх AMQP, который, я думаю, вы могли бы извлечь из:1003 *

http://doc.akkasource.org/amqp Другая альтернатива - использовать сообщения через верблюда (если это плывет на вашей лодке):

http://doc.akkasource.org/camel

...