私はtwitter4jを使用して、次を使用して、twitterから場所でフィルタリングされたストリームを取得しています:
List<Location> locations = new ArrayList<>;
StatusesFilterEndpoint endpoint.locations(locations);
BasicClient client = new ClientBuilder()
.name(NAME)
.hosts(Constants.STREAM_HOST)
.endpoint(endpoint)
.authentication(auth)
.processor(new StringDelimitedProcessor(rowTweet))
.build();
client.connect();
while (isConnected()) {
String rowtweet = rowTweet.poll(5, TimeUnit.SECONDS);
if (rowtweet != null) {
Status status = DataObjectFactory.createStatus(rowtweet);
statusQueue.put(status);
}
}
これは正常に機能しており、場所に基づいてステータスをフィルタリングし、この場所からステータスを取得しましたが、実行時に場所を削除または追加する必要があるのは可能ですか?
を使用して場所を追加しようとしましたが、次の例外が与えられます:
public void addLocation(Location target) throws InterruptedException, TwitterException {
locations.add(target);
endpoint.locations(locations);
connect();
}
この例外:
java.lang.IllegalStateException: There is already a connection thread running for TweetsByLocationStream, endpoint: /1.1/statuses/filter.json?delimited=length&stall_warnings=true
at com.twitter.hbc.httpclient.BasicClient.connect(BasicClient.java:98)
at com.newsry.streams.TweetsByLocationStream.connect(TweetsByLocationStream.java:77)
at com.newsry.streams.TweetsByLocationStream.addLocation(TweetsByLocationStream.java:129)
at com.newsry.engine.NewsryEngine.addLocation(NewsryEngine.java:183)
at com.newsry.streams.LocationStreamTest.main(LocationStreamTest.java:44)