【问题标题】:How to use twitter4j along with storm如何使用 twitter4j 和storm
【发布时间】:2013-01-19 09:16:31
【问题描述】:

我使用 twitter4j 查询接口来过滤推文http://twitter4j.org/javadoc/twitter4j/Query.html。但是https://github.com/nathanmarz/storm-starter/blob/master/src/jvm/storm/starter/spout/TwitterSampleSpout.java:43 中的 twitter spout 使用 queue.offer(status)。我没有对 Status 的引用,如何集成这些 API 来处理实时推文。

【问题讨论】:

    标签: twitter twitter4j twitter-streaming-api


    【解决方案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));
    }
    

    【讨论】:

    • 我们不使用流式 API,因为我们根据日期范围和仅在查询 API 接口上可用的许多其他条件过滤推文。因此,如果我无权访问 Status 对象,我最初的问题是如何集成
    • 你可以让状态对象在 bolts execute() 方法中解析 Tuple 对象,如下所示:Status status = (Status) tuple.getValue(0);
    猜你喜欢
    • 2016-04-17
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 2018-12-28
    相关资源
    最近更新 更多