2013-06-27 7 views
5

हल करने के लिए कि यह कैसे स्ट्रीम बंद त्रुटि का कहना हैस्ट्रीम twitter4j में बंद त्रुटि

public class StreamAPI { 

    public static void main(String[] args) { 


     ConfigurationBuilder cb = new ConfigurationBuilder(); 
     cb.setDebugEnabled(true); 
     cb.setOAuthConsumerKey("xxxx"); 
     cb.setOAuthConsumerSecret("xxx"); 
     cb.setOAuthAccessToken("xx-xx"); 
     cb.setOAuthAccessTokenSecret("xxx"); 
     cb.setUseSSL(true); 
     cb.setUserStreamRepliesAllEnabled(true); 


     TwitterStream twitterStream = new TwitterStreamFactory(cb.build()).getInstance(); 

     AccessToken accestoken = new AccessToken("xx-xx", "xxx"); 

     twitterStream.setOAuthAccessToken(accestoken); 
     StatusListener listener = new StatusListener() { 

      public void onStatus(Status status) { 
       System.out.println("@" + status.getUser().getScreenName() + " - " + status.getText()); 
      } 

      public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) { 
       System.out.println("Got a status deletion notice id:" + statusDeletionNotice.getStatusId()); 
      } 

      public void onTrackLimitationNotice(int numberOfLimitedStatuses) { 
       System.out.println("Got track limitation notice:" + numberOfLimitedStatuses); 
      } 

      public void onScrubGeo(long userId, long upToStatusId) { 
       System.out.println("Got scrub_geo event userId:" + userId + " upToStatusId:" + upToStatusId); 
      } 

      @Override 
      public void onStallWarning(StallWarning stallWarning) { 
       //To change body of implemented methods use File | Settings | File Templates. 
      } 

      public void onException(Exception ex) { 
       ex.printStackTrace(); 
      } 
     }; 

     FilterQuery fq = new FilterQuery(); 
     String keywords[] = {"France", "Germany"}; 

     fq.track(keywords); 

     twitterStream.addListener(listener); 
     twitterStream.filter(fq); 

    } 

} 

मैं त्रुटि हो रही है

Stream closed. 
Relevant discussions can be found on the Internet at: 
    http://www.google.co.jp/search?q=a8fd061d or 
    http://www.google.co.jp/search?q=00070a0c 
TwitterException{exceptionCode=[a8fd061d-00070a0c a8fd061d-0007099d], statusCode=-1, message=null, code=-1, retryAfter=-1, rateLimitStatus=null, version=3.0.3} 
    at twitter4j.StatusStreamBase.handleNextElement(StatusStreamBase.java:199) 
    at twitter4j.StatusStreamImpl.next(StatusStreamImpl.java:57) 
    at twitter4j.TwitterStreamImpl$TwitterStreamConsumer.run(TwitterStreamImpl.java:478) 
Caused by: java.io.IOException: the end of the stream has been reached 
    at twitter4j.StatusStreamBase.handleNextElement(StatusStreamBase.java:88) 
    ... 2 more 

लेकिन इसके साथ ही विन्यास TwitterAPI

उत्तर

4

ट्विटर के लिए काम करता following reasons why you may be disconnected देता है:

  • एक ग्राहक एक ही प्रमाण पत्र के साथ बहुत से कनेक्शन स्थापित करता है। जब ऐसा होता है, तो सबसे पुराना कनेक्शन समाप्त कर दिया जाएगा। इसका अर्थ है आपको सावधान रहना होगा कि दो रीकनेक्टिंग क्लाइंट समानांतर में समान प्रमाण-पत्रों के साथ न चलाएं, अन्यथा वे एक दूसरे को डिस्कनेक्ट कर देंगे।
  • एक ग्राहक अचानक डेटा पढ़ने बंद कर देता है। यदि स्ट्रीम की पढ़ाई की दर अचानक बंद हो जाती है, तो कनेक्शन बंद हो जाएगा।
  • एक ग्राहक डेटा को धीरे-धीरे पढ़ता है। प्रत्येक स्ट्रीमिंग कनेक्शन को क्लाइंट को भेजे जाने वाले संदेशों की कतार द्वारा का समर्थन किया जाता है। यदि यह कतार समय के साथ बहुत बड़ी हो जाती है, तो कनेक्शन बंद हो जाएगा।
  • एक स्ट्रीमिंग सर्वर पुनरारंभ किया गया है। यह आमतौर पर एक कोड तैनाती से संबंधित है और यह अक्सर नहीं है।
  • ट्विटर का नेटवर्क कॉन्फ़िगरेशन बदलता है। ये घटनाएं बेहद दुर्लभ हैं, और उदाहरण के लिए लोड बैलेंसर रीस्टार्ट या नेटवर्क पुनर्गठन का प्रतिनिधित्व करेंगे।

आप, क्यों आप डिस्कनेक्ट हो गया के बारे में जानकारी प्राप्त करना चाहिए but not always:

स्ट्रीम कई कारणों से के लिए बंद किया जा सकता है। स्ट्रीमिंग एपीआई एक संदेश देने का प्रयास करेगा जो इंगित करता है कि एक स्ट्रीम बंद क्यों हुई थी। ध्यान दें कि यदि डिस्कनेक्ट नेटवर्क समस्याओं या क्लाइंट को धीरे-धीरे पढ़ने के कारण था, तो यह संभव है कि यह संदेश प्राप्त नहीं होगा।

मेरा विचार यह होगा कि शायद आप डेटा को पर्याप्त रूप से पर्याप्त नहीं पढ़ रहे हैं - हालांकि मैं निश्चित रूप से कुछ नहीं कह सकता। यह देखने के लिए कि क्या आपको कोई स्टाल चेतावनी मिल रही है, onStallWarning लागू करने का प्रयास करें, उदाहरण:

@Override 
public void onStallWarning(StallWarning stallWarning) { 
    System.out.println(stallWarning); 
} 
संबंधित मुद्दे