* @author Christos KK Loverdos <loverdos@gmail.com>
*/
-case object HandlerResultPanic extends HandlerResult
+case class HandlerResultPanic(reason: String) extends HandlerResult
try f(_channel)
catch {
case e: Exception ⇒
+ logger.error("While using channel %s".format(this._channel), e)
// FIXME: What is this?
postBusError(RabbitMQError(e))
- safeStop()
+// safeStop()
}
}
- object RabbitMQMessageConsumer extends Consumer {
+ object RabbitMQMessageConsumer extends Consumer with Loggable {
def handleConsumeOk(consumerTag: String) = {
}
case result @ HandlerResultResend ⇒
doWithChannel(_.basicNack(deliveryTag, false, true))
+ logger.debug("Got {}", result)
result
- case result @ HandlerResultReject(_) ⇒
+ case result @ HandlerResultReject(reason) ⇒
doWithChannel(_.basicReject(deliveryTag, false))
+ logger.info("Got {}", result)
result
- case result @ HandlerResultRequeue(_) ⇒
+ case result @ HandlerResultRequeue(reason) ⇒
doWithChannel(_.basicReject(deliveryTag, true))
+ logger.info("Got {}", result)
result
- case result @ HandlerResultPanic ⇒
+ case result @ HandlerResultPanic(reason) ⇒
// Just inform RabbitMQ and subsequent actions will be made by the notifier.
// So, this is a `HandlerResultResend` with extra semantics.
doWithChannel(_.basicNack(deliveryTag, false, true))
+ logger.info("Got {}", result)
result
}
import com.ckkloverdos.maybe.{Failed, Just, Maybe}
import gr.grnet.aquarium.connector.rabbitmq.RabbitMQConsumer
import gr.grnet.aquarium.connector.handler.{HandlerResultPanic, HandlerResult}
-import gr.grnet.aquarium.util.shortInfoOf
+import sun.rmi.log.LogHandler
+import gr.grnet.aquarium.util.{LogHelpers, shortInfoOf}
/**
*
* @author Christos KK Loverdos <loverdos@gmail.com>
*/
-class PayloadHandlerPostNotifier(logger: Logger) extends ((RabbitMQConsumer, Maybe[HandlerResult]) ⇒ Unit) {
+final class PayloadHandlerPostNotifier(logger: Logger) extends ((RabbitMQConsumer, Maybe[HandlerResult]) ⇒ Unit) {
def apply(consumer: RabbitMQConsumer, maybeResult: Maybe[HandlerResult]) = {
maybeResult match {
- case Just(hr @ HandlerResultPanic) ⇒
+ case Just(hr @ HandlerResultPanic(reason)) ⇒
// The other end is crucial to the overall operation and it is in panic mode,
// so we stop delivering messages until further notice
- logger.warn("Shutting down %s due to [%s]".format(consumer.toString, hr))
+ val errMsg = "Shutting down %s due to [%s]".format(consumer.toString, hr)
+ logger.error(errMsg)
consumer.setAllowReconnects(false)
consumer.safeStop()
case Failed(e) ⇒
- logger.warn("Shutting down %s due to [%s]".format(consumer.toString, shortInfoOf(e)))
+ val errMsg = "Shutting down %s due to [%s]".format(consumer.toString, shortInfoOf(e))
+ logger.warn(errMsg)
consumer.setAllowReconnects(false)
consumer.safeStop()