특정 키워드에 대한 실시간 트윗을 관리했습니다. 지금까지 그렇게 좋았습니다. 속도 제한에 도달하면 RateLimitStatusListener
을 추가하려고했습니다.트위터에서 스트리밍 API의 속도 제한을 확인하는 방법
문제는 결코 호출되지 않습니다. 속도 제한에 도달하더라도 호출되지 않습니다. 나는 그것을 이해할 수 없었다. 내 의도는, 속도 제한 오류가 발생하면 오류 처리를 수행하는 것입니다. 그럼에도 불구하고 속도 제한에 도달했는지 여부를 확인하는 다른 방법이 있습니까?
public final class PrintSampleStream {
public static void main(String[] args) throws TwitterException {
TwitterStream twitterStream = new TwitterStreamFactory().getInstance();
StatusListener listener = new StatusListener() {
@Override
public void onStatus(Status status) {
System.out.println("@" + status.getUser().getScreenName() + " - " + status.getText());
}
@Override
public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {
System.out.println("Got a status deletion notice id:" + statusDeletionNotice.getStatusId());
}
@Override
public void onTrackLimitationNotice(int numberOfLimitedStatuses) {
System.out.println("Got track limitation notice:" + numberOfLimitedStatuses);
}
@Override
public void onScrubGeo(long userId, long upToStatusId) {
System.out.println("Got scrub_geo event userId:" + userId + " upToStatusId:" + upToStatusId);
}
@Override
public void onStallWarning(StallWarning warning) {
System.out.println("Got stall warning:" + warning);
}
@Override
public void onException(Exception ex) {
ex.printStackTrace();
}
};
twitterStream.addRateLimitStatusListener(new RateLimitStatusListener() {
@Override
public void onRateLimitStatus(RateLimitStatusEvent event) {
System.out.println("Limit["+event.getRateLimitStatus().getLimit() + "], Remaining[" +event.getRateLimitStatus().getRemaining()+"]");
}
@Override
public void onRateLimitReached(RateLimitStatusEvent event) {
System.out.println("Limit["+event.getRateLimitStatus().getLimit() + "], Remaining[" +event.getRateLimitStatus().getRemaining()+"]");
}
});
FilterQuery filterQuery = new FilterQuery();
String[] query = {"#WorldCup2014"};
filterQuery.track(query);
twitterStream.addListener(listener);
twitterStream.filter(filterQuery);
}
}
, 그것은 우리에게 전체 트윗 량의 1 %를 줄 것이다? –