如果我想启动一个将用twilio发送短信的主题, 是不是更好
TwilioRestClient client = new TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN);
对于每个线程,还是应该创建一个客户端并与线程共享?
答案 0 :(得分:2)
您可以在此处查看twilio-java帮助程序库的TwilioRequestClient类的源代码:https://github.com/twilio/twilio-java/blob/master/src/main/java/com/twilio/sdk/TwilioRestClient.java
我没有看到任何明显线程安全的东西。我唯一关心的是构造函数中的这部分代码:
//Grab the proper connection manager, based on runtime environment
ClientConnectionManager mgr = null;
try {
Class.forName("com.google.appengine.api.urlfetch.HTTPRequest");
mgr = new AppEngineClientConnectionManager();
} catch (ClassNotFoundException e) {
//Not GAE
mgr = new ThreadSafeClientConnManager();
((ThreadSafeClientConnManager) mgr).setDefaultMaxPerRoute(10);
}
它为每次初始化生成一个新的线程池,所以我说要共享资源。另一方面,它是否有足够的连接可以有效地处理您的负载?
您可以在此处阅读有关ThreadSafeClientConnManager的更多信息:https://hc.apache.org/httpcomponents-client-4.3.x/httpclient/apidocs/org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager.html#setDefaultMaxPerRoute%28int%29
最重要的是,尝试使用您的预期用量对其进行负载测试,并调整源代码以满足您的需求。