Весенний социальный твиттер прекрати потоковую операцию
У меня есть небольшое приложение Spring, которое использует социальный твиттер Spring для потоковой передачи данных из публичного API твиттера.
Код очень прост. У меня есть класс конфигурации, который предоставляет боб типа твиттер шаблона.
@Bean
Twitter getTwitterTemplate() {
Twitter twitter = new TwitterTemplate(consumerKey, consumerSecret, accessToken, accessTokenSecret);
return twitter;
}
У меня есть другой класс обслуживания, который использует bean-шаблон twitter для фильтрации потока на основе некоторых хэштегов. Я запускаю процесс потоковой передачи в 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);
}
Как только приложение запускается, потоковая передача запускается, и все работает нормально.
У меня вопрос, как остановить потоковую передачу на основе каких-либо действий? Скажем, например, что при вызове приложения будет предоставлена конечная точка, которая должна остановить процесс потоковой передачи.
1 ответ
Интерфейс Stream имеет метод close(), так что вы можете сделать что-то вроде:
...
private Stream myStream;
...
@PostConstruct
private void startStream() {
this.myStream = twitter.streamingOperations().filter(parameters, tweetStreamListeners);
private void closeStream() {
this.myStream.close();
}