现在我正在尝试在java项目中使用ICE。我想知道是否应该为服务器和客户端配置连接数。如果我应该,我怎么配置计数?
答案 0 :(得分:0)
是的,你应该这样做。
每个通信器创建两个线程池:
客户端线程池主要为传出连接提供服务 涉及处理对传出请求的回复和包括 通知AMI回调对象。如果使用连接 双向模式,客户端线程池也调度传入 回调请求。传入服务器线程池服务 连接。它调度传入的请求,并且是双向的 连接,进程回复传出请求。默认情况下,这些 所有通信器的对象共享两个线程池 适配器。如有必要,您可以配置单个对象适配器 改为使用私有线程池。
默认情况下,线程数只有一个。所以你可能想要扩大它。
以三种方式更改这些数字:
硬代码示例:
protected void initProperties(Ice.Properties iceProperties) {
iceProperties.setProperty("Ice.Override.ConnectTimeout", "70");
iceProperties.setProperty("Ice.ThreadPool.Client.Size", "100");
iceProperties.setProperty("Ice.ThreadPool.Client.SizeMax", "1000");
iceProperties.setProperty("Ice.ThreadPool.Client.StackSize", "131072");//128k
iceProperties.setProperty("Ice.ThreadPool.Server.SizeMax", "1000");
iceProperties.setProperty("Ice.ThreadPool.Server.StackSize", "131072");
iceProperties.setProperty("Ice.MessageSizeMax", "102400");
}
protected void init() {
Ice.Properties iceProperties = Ice.Util.createProperties();
initProperties(iceProperties);
Ice.InitializationData initData = new Ice.InitializationData();
initData.properties = iceProperties;
ic = Ice.Util.initialize(initData);
communicators.add(ic);
}
见: