You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java SpringBoot集成twitter4j获取TwitterStreamImpl流异常问题

Twitter4j + SpringBoot 流接口调用异常问题

一年前基于Java SpringBoot框架,使用twitter4j库开发的项目运行正常,如今迭代开发时出现异常,相关信息如下:

1. 主类代码

@SpringBootApplication
public class TweetManagerApplication {
    
    public static void main(String[] args) throws TwitterException {
        SpringApplication.run(TweetManagerApplication.class, args);
    }
    
    @EventListener(ApplicationReadyEvent.class)
    public TwitterStream streamFeed() throws TwitterException {
        
        StatusListener listener = new StatusListener(){
            @Override
            public void onStatus(Status status) {
                System.out.println("%s : %s".formatted(status.getUser().getName(), status.getText()));
            }

            @Override
            public void onTrackLimitationNotice(int numberOfLimitedStatuses) {}

            @Override
            public void onScrubGeo(long userId, long upToStatusId) {}

            @Override
            public void onException(Exception ex) {
                ex.printStackTrace();
            }
            @Override
            public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {
                // TODO Auto-generated method stub
                
            }
            @Override
            public void onStallWarning(StallWarning warning) {
                // TODO Auto-generated method stub
                
            }
        };
        TwitterStream twitterStream = Twitter.newBuilder()
                .listener(listener).build().v1().stream();
        return twitterStream.sample();
    
    }
}

2. 配置类代码

@SpringBootConfiguration
@EnableAsync
public class AsyncConfiguration {

    private static final Logger LOGGER = LoggerFactory.getLogger(AsyncConfiguration.class);

    @Bean(name = "taskExecutor")
    public Executor taskExecutor() {
        LOGGER.debug("Creating Async Task Executor");
        final ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(2);
        executor.setMaxPoolSize(2);
        executor.setQueueCapacity(100);
        executor.setThreadNamePrefix("CarThread-");
        executor.initialize();
        return executor;
    }
}

3. Maven依赖

<dependency>
    <groupId>org.twitter4j</groupId>
    <artifactId>twitter4j-core</artifactId>
    <version>4.1.1</version>
</dependency>

4. 错误日志

2023-03-08 17:22:18.980  INFO 55335 --- [][initializing]] twitter4j.TwitterStreamImpl              : Establishing connection.
2023-03-08 17:22:20.036  INFO 55335 --- [ing connection]] twitter4j.TwitterStreamImpl              : https://stream.twitter.com/1.1/statuses/sample.json?stall_warnings=true
https://stream.twitter.com/1.1/statuses/sample.json?stall_warnings=true
Relevant discussions can be found on the Internet at:
    http://www.google.co.jp/search?q=ee74468e or
    http://www.google.co.jp/search?q=9eaf216e
TwitterException{exceptionCode=[ee74468e-9eaf216e 69215812-3735082c 69215812-3735081d], statusCode=-1, message=null, code=-1, retryAfter=-1, rateLimitStatus=null, version=4.1.1}
    at twitter4j.HttpClient.handleRequest(HttpClient.java:191)
    at twitter4j.HttpClient.request(HttpClient.java:72)
    at twitter4j.HttpClient.get(HttpClient.java:279)
    at twitter4j.TwitterStreamImpl.getSampleStream(TwitterStreamImpl.java:209)
    at twitter4j.TwitterStreamImpl$4.getStream(TwitterStreamImpl.java:180)
    at twitter4j.TwitterStreamImpl$TwitterStreamConsumer.run(TwitterStreamImpl.java:387)
2023-03-08 17:22:20.046  INFO 55335 --- [ing connection]] twitter4j.TwitterStreamImpl              : Waiting for 250 milliseconds
Caused by: java.io.FileNotFoundException: https://stream.twitter.com/1.1/statuses/sample.json?stall_warnings=true
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
    at java.base/sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:2048)
    at java.base/sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:2043)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:2042)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1609)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1589)
    at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:224)
    at twitter4j.HttpResponse.<init>(HttpResponse.java:54)
    at twitter4j.HttpClient.handleRequest(HttpClient.java:155)
    ... 5 more
Caused by: java.io.FileNotFoundException: https://stream.twitter.com/1.1/statuses/sample.json?stall_warnings=true
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1993)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1589)
    at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:529)
    at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:308)
    at twitter4j.HttpResponse.<init>(HttpResponse.java:39)
    ... 6 more

目前仍按一年前的方式调用twitter4j流接口,但出现上述异常,已多日排查未解决,恳请提供帮助。


内容的提问来源于stack exchange,提问作者Iván Jesús Monferrer Marzá

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 14:10:36