package com.neverwinterdp.demandspike.yarn.worker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.neverwinterdp.hadoop.yarn.app.AppConfig;
import com.neverwinterdp.hadoop.yarn.app.worker.AppWorker;
import com.neverwinterdp.hadoop.yarn.app.worker.AppWorkerContainer;
import com.neverwinterdp.message.Message;
public class DemandSpikeAppWorker implements AppWorker {
protected static final Logger LOGGER = LoggerFactory.getLogger(DemandSpikeAppWorker.class);
public void run(AppWorkerContainer appContainer) throws Exception {
MessageSender sender = null ;
try {
AppConfig config = appContainer.getConfig() ;
DemandSpikeAppWorkerConfig demandSpikeWorkerConfig = new DemandSpikeAppWorkerConfig(config.yarnConf) ;
sender = new MessageSender(demandSpikeWorkerConfig.getBrokerConnect(), 1000) ;
long stopTime = System.currentTimeMillis() + demandSpikeWorkerConfig.getMaxDuration() ;
for(int i = 0; i < demandSpikeWorkerConfig.getNumOfMessages(); i++) {
Message message = new Message("message " + i, "message data " + i, true) ;
message.getHeader().setTopic(demandSpikeWorkerConfig.getTopic());
sender.send(message, 3000);
if(i % 100 == 0) {
if(System.currentTimeMillis() >= stopTime) break ;
}
}
} finally {
if(sender != null) sender.waitAndClose(15000);
}
}
}