2012-02-20 85 views
0

現在我正嘗試在java項目中使用ICE。我想知道我是否應該爲服務器和客戶端配置連接數。如果我應該如何配置計數?ICE中的連接數量

回答

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

看到這個: