package models.com.mc.workers; import akka.actor.ActorRef; import akka.actor.UntypedActor; import akka.contrib.pattern.DistributedPubSubExtension; import akka.contrib.pattern.DistributedPubSubMediator; import akka.event.Logging; import akka.event.LoggingAdapter; import mc.messages.TextMessage; import mc.messages.publisher.MessagePublisher; import mc.messages.store.ObjectDBMsgStore; public class ThriftMessageCollector extends UntypedActor { MessagePublisher messagePublisher; @Override public void preStart() throws Exception { super.preStart(); messagePublisher = new MessagePublisher(); messagePublisher.initialize(null,null); //initialize with default configs } private ActorRef mediator = DistributedPubSubExtension.get(getContext().system()).mediator(); private LoggingAdapter log = Logging.getLogger(getContext().system(), this); { mediator.tell(new DistributedPubSubMediator.Subscribe(Master.ResultsTopic, getSelf()), getSelf()); } /** * This method will invoke thrift message publisher * upon receiving classified messages. * @param message classified message */ @Override public void onReceive(Object message) { if (message instanceof DistributedPubSubMediator.SubscribeAck) { // do nothing } else if (message instanceof Master.WorkResult) { Master.WorkResult workResult = (Master.WorkResult) message; log.info("published result: {}", workResult.result); messagePublisher.publish((TextMessage) workResult.getResult()); } else { unhandled(message); } } }