Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java twitter hbc的句柄重新连接_Java_Twitter_Twitter4j_Twitter Hbc - Fatal编程技术网

Java twitter hbc的句柄重新连接

Java twitter hbc的句柄重新连接,java,twitter,twitter4j,twitter-hbc,Java,Twitter,Twitter4j,Twitter Hbc,我不知道如何处理hbc twitter api的断开连接。医生说我需要根据遇到的错误类型放慢重新连接尝试的速度。我从哪里得到所经历的错误类型?它是在msgQueue还是eventQueue或任何地方 @Asynchronous @Override public void makeLatestsTweets() { msgList = new LinkedList<Tweet>(); BlockingQueue<String> msgQueue = ne

我不知道如何处理hbc twitter api的断开连接。医生说我需要根据遇到的错误类型放慢重新连接尝试的速度。我从哪里得到所经历的错误类型?它是在
msgQueue
还是
eventQueue
或任何地方

@Asynchronous
@Override
public void makeLatestsTweets() {

    msgList = new LinkedList<Tweet>();

    BlockingQueue<String> msgQueue = new LinkedBlockingQueue<String>(100);
    BlockingQueue<Event> eventQueue = new LinkedBlockingQueue<Event>(100);


    Hosts hosebirdHosts = new HttpHosts(Constants.SITESTREAM_HOST);

    StatusesFilterEndpoint hosebirdEndpoint = new StatusesFilterEndpoint();

    userIds = addFollowings();

    hosebirdEndpoint.followings(userIds);

    Authentication hosebirdAuth = new OAuth1(CONSUMER_KEY, CONSUMER_SECRET,
            TOKEN, SECRET);

    ClientBuilder builder = new ClientBuilder().hosts(hosebirdHosts)
            .authentication(hosebirdAuth).endpoint(hosebirdEndpoint)
            .processor(new StringDelimitedProcessor(msgQueue))
            .eventMessageQueue(eventQueue);

    Client hosebirdClient = builder.build();
    hosebirdClient.connect();
    while (!hosebirdClient.isDone()) {
        try {
            String msg = msgQueue.take();
            Tweet tweet = format(msg);
            if (tweet != null) {
                System.out.println(tweet.getTweetsContent());
                msgList.addFirst(tweet);
                if (msgList.size() > tweetListSize) {
                    msgList.removeLast();
                }
                caller.setMsgList(msgList);
            }
        } catch (InterruptedException e) {
            hosebirdClient.stop();
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}
异步的 @凌驾 public void makelatestweets(){ msgList=newlinkedlist(); BlockingQueue msgQueue=新的LinkedBlockingQueue(100); BlockingQueue eventQueue=新链接的BlockingQueue(100); Hosts hosebirdHosts=新的HttpHosts(Constants.SITESTREAM_HOST); StatusesFilterEndpoint HoseBindPoint=新的StatusesFilterEndpoint(); userIds=addfollows(); hosebirdEndpoint.following(userid); 身份验证hosebirdAuth=新的OAuth1(使用者密钥、使用者密钥、, 象征,秘密); ClientBuilder=新ClientBuilder().hosts(hosebirdHosts) .authentication(hosebirdAuth).endpoint(hosebirdEndpoint) .processor(新的StringDelimitedProcessor(msgQueue)) .eventMessageQueue(eventQueue); 客户端hosebirdClient=builder.build(); hosebirdClient.connect(); 而(!hosebirdClient.isDone()){ 试一试{ 字符串msg=msgQueue.take(); Tweet=格式(msg); if(tweet!=null){ System.out.println(tweet.getTweetsContent()); msgList.addFirst(tweet); if(msgList.size()>tweetListSize){ msgList.removeLast(); } caller.setMsgList(msgList); } }捕捉(中断异常e){ hosebirdClient.stop(); e、 printStackTrace(); }捕获(JSONException e){ e、 printStackTrace(); } } }
我已经有一段时间没有使用hbc了,但是如果我记得库本身会重新连接,也就是说,您不会看到这个级别的错误。你能把他们谈论“减速”的文档的链接贴出来吗?他们可能会提到,如果你做得太快,Twitter实际上会拒绝你的用户访问;无论如何,我可以告诉您,如果您只有一个进程(使用
hbc
或任何其他库),您可以任意多次重新连接。如果你有几个并行的进程,你可能会面临其他问题。希望有帮助。@lrnzcig这里:在被称为“重新连接”的点上。好的。我以为你在hbc的
hbc
文档中看到了它,但实际上它对我来说毫无意义。但事实上,在twitter的页面上。然后(1)根据我的经验,但只有一个进程(并且没有使用
hbc
),我只是立即重新连接,没有什么大问题,(2)在
hbc
,如果我记得清楚的话,您没有在高级别处理重新连接。如果要处理这些代码,应该修改库中的代码。不过应该不难找到。@lrnzcig谢谢,所以在您的例子中,您只需调用
hosebirdClient.connect()当hosebirdClient.isDone()时
?我已经检查了我的代码,试图记住。。。它实际上和你的非常相似。我的观点是,据我记忆所及,库
hbc
本身处理重新连接。为了确保这一点,我刚刚做了一个快速的尝试:启动客户端,拔下以太网电缆,然后再次插入,这花费了一些时间(1分钟),但客户端自行重新连接。我想说的是,如果你有问题,你想改变行为,你必须改变客户。。。但是我想这并不难找到。我已经有一段时间没有使用hbc了,但是如果我记得库本身会重新连接,也就是说,你看不到这个级别的错误。你能把他们谈论“减速”的文档的链接贴出来吗?他们可能会提到,如果你做得太快,Twitter实际上会拒绝你的用户访问;无论如何,我可以告诉您,如果您只有一个进程(使用
hbc
或任何其他库),您可以任意多次重新连接。如果你有几个并行的进程,你可能会面临其他问题。希望有帮助。@lrnzcig这里:在被称为“重新连接”的点上。好的。我以为你在hbc的
hbc
文档中看到了它,但实际上它对我来说毫无意义。但事实上,在twitter的页面上。然后(1)根据我的经验,但只有一个进程(并且没有使用
hbc
),我只是立即重新连接,没有什么大问题,(2)在
hbc
,如果我记得清楚的话,您没有在高级别处理重新连接。如果要处理这些代码,应该修改库中的代码。不过应该不难找到。@lrnzcig谢谢,所以在您的例子中,您只需调用
hosebirdClient.connect()当hosebirdClient.isDone()时
?我已经检查了我的代码,试图记住。。。它实际上和你的非常相似。我的观点是,据我记忆所及,库
hbc
本身处理重新连接。为了确保这一点,我刚刚做了一个快速的尝试:启动客户端,拔下以太网电缆,然后再次插入,这花费了一些时间(1分钟),但客户端自行重新连接。我想说的是,如果你有问题,你想改变行为,你必须改变客户。。。但我想找到它并不太难。