Java 推特流媒体API速率限制..如何处理?
如果我让这段代码运行了大约3周,Twitter流式API流是否会不间断地运行?或者我需要跟踪利率限制吗?如果我这样做了,我该怎么做Java 推特流媒体API速率限制..如何处理?,java,twitter,Java,Twitter,如果我让这段代码运行了大约3周,Twitter流式API流是否会不间断地运行?或者我需要跟踪利率限制吗?如果我这样做了,我该怎么做 import twitter4j.* public class SimpleStream { public static void main(String[] args) { ConfigurationBuilder cb = new ConfigurationBuilder(); cb.setDebugEnabled(true);
import twitter4j.*
public class SimpleStream {
public static void main(String[] args) {
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true);
cb.setOAuthConsumerKey("******");
cb.setOAuthConsumerSecret("*****");
cb.setOAuthAccessToken("********");
cb.setOAuthAccessTokenSecret("******************");
TwitterStream twitterStream = new TwitterStreamFactory(cb.build()).getInstance();
StatusListener listener = new StatusListener() {
@Override
public void onStatus(Status status) {
User user = status.getUser();
String username = status.getUser().getScreenName();
System.out.println("Screen name: " + username);
String name = status.getUser().getName();
System.out.println("User's real name: " + name);
long user_id = status.getUser().getId();
System.out.println("Users_id: " + user_id);
}
};
twitterStream.addListener(listener);
twitterStream.sample();
}
}
如果达到限制,您可以将RateLimitStatusListener添加到跟踪中
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()+"]");
}
} );
另请查看twitter常见问题“费率限制”部分:
*如何在流媒体API上确定速率限制?
公共流媒体API将发送给客户端的消息数量限制在任何给定时刻推文总量的一小部分
如中所述,采样软管以与公共流帽相等的音量对所有tweet进行随机采样
过滤流返回所有匹配的tweet,最大音量等于流上限。如果有更多符合您标准的tweet,您将收到一条速率限制消息,指示有多少tweet未发送*