我有一个用例,我在使用twitter HBC的多线程环境中使用 twitter 过滤器流。
我收到关键字以根据我收到的每个请求从用户那里跟踪,处理它们并将它们保存到数据库中。例子
- 请求 1:跟踪关键字 [apple, google]
- 请求 2:跟踪关键字 [yahoo, microsoft]
我目前正在做的是,为每个请求打开一个新线程并处理它们。
我正在为下面的每个端品脱建立连接(我正在关注这个官方 HBC 示例)
endpoint.trackTerms(Lists.newArrayList("twitterapi", "#yolo"));
Authentication auth = new OAuth1(consumerKey, consumerSecret, token, secret);
// Create a new BasicClient. By default gzip is enabled.
Client client = new ClientBuilder()
.hosts(Constants.STREAM_HOST)
.endpoint(endpoint)
.authentication(auth)
.processor(new StringDelimitedProcessor(queue))
.build();
// Establish a connection
client.connect();
The problem that I am facing is twitter gives me warning of having more that one connection.
但是根据上面的代码和我的用例,我必须为我收到的每个请求创建一个新的 Client
对象实例,因为我的端点(trackTerms)对于我收到的每个请求都不同。
为我的用例(多线程系统)连接到 twitter 的正确方法是什么to many connections warning
?rate limit warnings
来自推特的当前警告:
2017-02-01 13:47:33 INFO TwitterStreamImpl:62 - 420:Returned by the Search and Trends API when you are being rate limited (https://dev.twitter.com/docs/rate-limiting).
Returned by the Streaming API:
Too many login attempts in a short period of time.
Running too many copies of the same application authenticating with the same account name.
Exceeded connection limit for user
谢谢。