/*
* Sifarish: Recommendation Engine
* Author: Pranab Ghosh
*
* Licensed under the Apache License, Version 2.0 (the "License"); you
* may not use this file except in compliance with the License. You may
* obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package org.sifarish.realtime;
import java.util.Map;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.chombo.storm.GenericSpout;
import org.chombo.storm.MessageHolder;
import org.chombo.storm.MessageQueue;
import org.chombo.util.ConfigUtility;
import backtype.storm.task.TopologyContext;
import backtype.storm.tuple.Values;
/**
* @author pranab
*
*/
public class TrendingSpout extends GenericSpout {
private String eventQueue;
private MessageQueue msgQueue;
public static String EPOCH_STREAM = "epoch";
public static String EVENT_STREAM = "event";
private static final Logger LOG = Logger.getLogger(DitheringSpout.class);
@Override
public void close() {
// TODO Auto-generated method stub
}
@Override
public void activate() {
// TODO Auto-generated method stub
}
@Override
public void deactivate() {
// TODO Auto-generated method stub
}
@Override
public Map<String, Object> getComponentConfiguration() {
// TODO Auto-generated method stub
return null;
}
@Override
public void intialize(Map stormConf, TopologyContext context) {
eventQueue = ConfigUtility.getString(stormConf, "redis.event.queue");
msgQueue = MessageQueue.createMessageQueue(stormConf, eventQueue);
debugOn = ConfigUtility.getBoolean(stormConf,"debug.on", false);
if (debugOn) {
LOG.setLevel(Level.INFO);;
}
}
@Override
public MessageHolder nextSpoutMessage() {
MessageHolder msgHolder = null;
String message = msgQueue.receive();
if(null != message) {
//message in event queue
String[] items = message.split(",");
//userID, sessionID, itemID, event
int event = Integer.parseInt(items[3]);
Values values = new Values(items[0], items[1], items[2], event);
msgHolder = new MessageHolder(values);
}
return msgHolder;
}
@Override
public void handleFailedMessage(Values tuple) {
// TODO Auto-generated method stub
}
}