/***************************************************************************** * * Copyright (C) Zenoss, Inc. 2011, all rights reserved. * * This content is made available according to terms specified in * License.zenoss under the directory where your Zenoss product is installed. * ****************************************************************************/ package org.zenoss.zep.impl; import com.google.protobuf.Message; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.zenoss.amqp.AmqpException; import org.zenoss.amqp.Channel; import org.zenoss.protobufs.zep.Zep.DaemonHeartbeat; import org.zenoss.zep.dao.HeartbeatDao; /** * Listener for daemon heartbeats. */ public class HeartbeatListener extends AbstractQueueListener { private static final Logger logger = LoggerFactory.getLogger(HeartbeatListener.class); private HeartbeatDao heartbeatDao; private int prefetchCount = 100; public void setPrefetchCount(int prefetchCount) { this.prefetchCount = prefetchCount; } @Override protected void configureChannel(Channel channel) throws AmqpException { logger.debug("Using prefetch count: {} for queue: {}", this.prefetchCount, getQueueIdentifier()); channel.setQos(0, this.prefetchCount); } @Override protected String getQueueIdentifier() { return "$ZepHeartbeats"; } public void setHeartbeatDao(HeartbeatDao heartbeatDao) { this.heartbeatDao = heartbeatDao; } @Override public void handle(Message message) throws Exception { if (!(message instanceof DaemonHeartbeat)) { logger.warn("Skipping unsupported message: {}", message); return; } DaemonHeartbeat heartbeat = (DaemonHeartbeat) message; logger.debug("Creating heartbeat record: {}", heartbeat); this.heartbeatDao.createHeartbeat(heartbeat); } }