0

现在我正在尝试在 java 项目中使用 ICE。我想知道是否应该为服务器和客户端配置连接数。如果应该,我该如何配置计数?

4

1 回答 1

0

是的,你应该这样做。

每个通信器创建两个线程池:

客户端线程池为传出连接提供服务,主要涉及处理传出请求的回复并包括通知 AMI 回调对象。如果在双向模式下使用连接,客户端线程池也会分派传入的回调请求。服务器线程池为传入连接提供服务。它分派传入的请求,并且对于双向连接,处理对传出请求的回复。默认情况下,这两个线程池由所有通信器的对象适配器共享。如有必要,您可以将各个对象适配器配置为使用私有线程池。

线程数默认只有一个。所以你可能想放大它。

通过三种方式更改这些数字:

  1. 命令行参数
  2. 硬编码
  3. 配置文件

硬代码示例

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);
}

看到这个:

于 2012-02-22T04:01:47.013 回答