Java twitter hbc的句柄重新连接
我不知道如何处理hbc twitter api的断开连接。医生说我需要根据遇到的错误类型放慢重新连接尝试的速度。我从哪里得到所经历的错误类型?它是在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
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分钟),但客户端自行重新连接。我想说的是,如果你有问题,你想改变行为,你必须改变客户。。。但我想找到它并不太难。