Весенний социальный твиттер прекрати потоковую операцию

У меня есть небольшое приложение 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();
}
Другие вопросы по тегам