Как использовать twitter4j вместе со storm

Я использую интерфейс запросов twitter4j для фильтрации твитов http://twitter4j.org/javadoc/twitter4j/Query. HTML. Но твиттер в https://github.com/nathanmarz/storm-starter/blob/master/src/jvm/storm/starter/spout/TwitterSampleSpout.java:43 использует queue.offer(status). У меня нет ссылки на статус, как мне интегрировать эти API для обработки живых твитов.


person Joe    schedule 09.01.2013    source источник


Ответы (1)


Это то, что мы успешно использовали для фильтрации твитов:

public void open(Map conf, TopologyContext context, SpoutOutputCollector collector) {
    queue = new LinkedBlockingQueue<Status>(1000);
    _collector = collector;
    StatusListener listener = new StatusListener() {

        public void onStatus(Status status) {
            queue.offer(status);
        }

        public void onDeletionNotice(StatusDeletionNotice sdn) {
        }

        public void onTrackLimitationNotice(int i) {
        }

        public void onScrubGeo(long l, long l1) {
        }

        public void onException(Exception e) {
        }

    };
    TwitterStreamFactory fact = new TwitterStreamFactory(new ConfigurationBuilder().setUser(_username).setPassword(_pwd).build());
    _twitterStream = fact.getInstance();
    _twitterStream.addListener(listener);
    _twitterStream.filter(new FilterQuery().track(TERMS_TO_TRACK).setIncludeEntities(true));
}
person kunal    schedule 19.01.2013
comment
Мы не используем потоковый API, поскольку мы фильтруем твиты на основе диапазона дат и множества других критериев, которые доступны только в интерфейсе Query API. Отсюда мой первоначальный вопрос о том, как интегрироваться, если у меня нет доступа к объекту Status - person Joe; 21.01.2013
comment
У вас может быть объект состояния, просто анализирующий объект Tuple в методе Bolt execute() следующим образом: Status status = (Status) tuple.getValue(0); - person Orbita; 04.07.2013