我有一个小小的Spring应用程序,它使用Spring社交Twitter来从Twitter的公共API传输数据。
代码非常简单。我有一个配置类,它公开了twitter模板类型的bean。
@Bean
Twitter getTwitterTemplate() {
Twitter twitter = new TwitterTemplate(consumerKey, consumerSecret, accessToken, accessTokenSecret);
return twitter;
}
我还有另一个服务类,该服务类使用twitter模板bean根据某些主题标签过滤流。我在服务bean的postContruct中开始流处理过程。
@Autowired
Twitter twitter;
@Value("${app.hashtags}")
String[] hashtags;
@PostConstruct
private void startStream() {
FilterStreamParameters parameters = new FilterStreamParameters();
for (String hashtag : hashtags) {
parameters.track(hashtag);
}
twitter.streamingOperations().filter(parameters, tweetStreamListeners);
}
应用程序启动后,流媒体开始运行,一切正常。
我的问题是如何基于某些操作停止流式传输?举例说,应用程序在调用时将提供一个端点,它应停止流传输过程。
答案 0 :(得分:1)
Stream接口具有close()方法,因此您可以执行以下操作:
...
private Stream myStream;
...
@PostConstruct
private void startStream() {
this.myStream = twitter.streamingOperations().filter(parameters, tweetStreamListeners);
private void closeStream() {
this.myStream.close();
}