【问题标题】:spring social twitter stop streaming operation春季社交推特停止流媒体操作
【发布时间】:2019-03-16 07:35:52
【问题描述】:

我有一个小的 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);

}

应用程序启动后,流式传输即开始,一切正常。

我的问题是如何根据某些操作停止流式传输?例如,应用程序将在调用时提供一个端点,它应该停止流处理。

【问题讨论】:

    标签: java spring twitter spring-social-twitter


    【解决方案1】:

    Stream 接口有一个 close() 方法,所以你可以这样做:

    ...
    private Stream myStream;
    ... 
    @PostConstruct
    private void startStream() {
        this.myStream = twitter.streamingOperations().filter(parameters, tweetStreamListeners);
    
    private void closeStream() {
        this.myStream.close();
    }
    

    【讨论】:

    • 这个方法存在于哪个版本的spring-social-twitter?
    • 我不确定它是什么时候添加的,它存在于1.1.0.Release 中。如果您检查streamingOperations() 中的大多数方法,例如:filter() 将返回一个Stream,可以将其关闭。
    • 谢谢@Andrea。请编辑答案并使用 Close() 方法而不是 Stop() 方法,我会将其标记为正确答案。
    • 已更新,感谢您的回复。我刚刚注意到我放了 stop() 而不是 close()。很抱歉造成混乱!
    猜你喜欢
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 2015-01-07
    • 1970-01-01
    • 2014-09-21
    • 2012-05-07
    • 1970-01-01
    相关资源
    最近更新 更多