in app/services/AtomResponderReceiver.scala [85:139]
def makeConsumer(channel:Channel): DefaultConsumer = {
new DefaultConsumer(channel) {
override def handleShutdownSignal(consumerTag: String, sig: ShutdownSignalException): Unit = super.handleShutdownSignal(consumerTag, sig)
override def handleCancel(consumerTag: String): Unit = super.handleCancel(consumerTag)
override def handleCancelOk(consumerTag: String): Unit = super.handleCancelOk(consumerTag)
override def handleConsumeOk(consumerTag: String): Unit = super.handleConsumeOk(consumerTag)
override def handleDelivery(consumerTag: String, envelope: Envelope, properties: AMQP.BasicProperties, body: Array[Byte]): Unit = {
loadEvent(body) match {
case Left(err)=>
logger.error(s"Received invalid message with key ${envelope.getRoutingKey} from exchange ${envelope.getExchange}: ${err.getMessage}", err)
case Right(messageData)=>
handleEvent(messageData).map({
case true=>
channel.basicAck(envelope.getDeliveryTag, false)
case false=>
logger.warn("Could not handle message, leaving it on-queue")
channel.basicNack(envelope.getDeliveryTag, false, true)
})
}
}
def handleEvent(messageData: MissingCommission): Future[Boolean] = {
if (messageData.id.isValidInt) {
logger.debug(s"Missing commission id. is ${messageData.id}")
val commissionDataObject = getCommission(Some(messageData.id))
commissionDataObject.onComplete({
case Success(commissionData) => {
commissionData match {
case Some(PlutoCommission(id, collectionId, siteId, created, updated, title, status, description, workingGroup, originalCommissionerName, scheduledCompletion, owner, notes, productionOffice, originalTitle, googleFolder, confidential)) => {
logger.debug(s"Found a commission.")
publishData("update", commissionData.get, messageData.id)
}
case None => {
logger.debug(s"No commission found.")
publishData("delete", null, messageData.id)
}
}
}
case Failure(exception) => {
logger.info(s"${exception}")
}
})
Future(true)
} else Future(false)
}
override def handleRecoverOk(consumerTag: String): Unit = super.handleRecoverOk(consumerTag)
}
}