Transport Configuration (Transport 的 配置)
我們先從一個(gè)簡單的創(chuàng)建開始:
-
final TCPNIOTransportBuilder builder = TCPNIOTransportBuilder . newInstance ();
-
final TCPNIOTransport transport = builder . build ();
這樣就創(chuàng)建了一個(gè)Transport,如果我們想建立服務(wù)端,接下來就是綁定端口和開啟服務(wù):
-
final TCPNIOTransportBuilder builder = TCPNIOTransportBuilder . newInstance ();
-
final TCPNIOTransport transport = builder . build ();
-
try {
-
// Bind server socket and start transport
-
transport . bind ( 12345 );
-
transport . start ();
-
-
System . out . println ( "Press <enter> to exit..." );
-
System . in . read ();
-
} catch ( Exception e ){
-
e . printStackTrace ();
-
}
Systen.in.read()的作用還是不讓Main線程結(jié)束,因?yàn)閠ransport創(chuàng)建的Selector線程或者Worker都是虛擬線程(虛擬線程什么特點(diǎn)網(wǎng)上有資料)。
按如上所述就開啟了端口為12345的一個(gè)服務(wù)端了。
?
如果我們需要?jiǎng)?chuàng)建客戶端,那么可以通過transport建立到某個(gè)地址+端口的連接:
-
final TCPNIOTransportBuilder builder = TCPNIOTransportBuilder . newInstance ();
-
final TCPNIOTransport transport = builder . build ();
-
Future < Connection > fc = transport . connect ( "127.0.0.1" , 12345 );
-
Connection conn = fc . get ();
-
conn . write ( message );
其中message的格式根據(jù)自定義的Filter而變化,如果是底層的,message就是一個(gè)Buffer。
接下來還是主要看下我常用的配置:
IOStrategy |
這個(gè)之前有講解基本有如下幾個(gè):
|
memoryManager | 這個(gè)就是內(nèi)存管理器:有Heap和ByteBuffer兩種。 |
processor |
這個(gè)一般設(shè)置FilterChain,我們可以在FilterChain里面添加自己的濾鏡,用于處理消息
|
readBufferSize | 讀數(shù)據(jù)流的分配內(nèi)存大小 |
writeBuffersSize |
寫數(shù)據(jù)流的內(nèi)存分配大小,一般可以根據(jù)工程而配置。
? |
Thread Pool Configuration
好了,基本使用已經(jīng)學(xué)會(huì),那么我們看看幾個(gè)參數(shù)的作用:
-
final TCPNIOTransportBuilder builder = TCPNIOTransportBuilder . newInstance ();
-
final ThreadPoolConfig config = builder . getWorkerThreadPoolConfig ();
-
config . setCorePoolSize ( 5 ). setMaxPoolSize ( 5 ). setQueueLimit (- 1 );
-
final TCPNIOTransport transport = builder . build ();
queue | 任務(wù)隊(duì)列 |
queueLimit | 隊(duì)列最大容納的數(shù)量 |
threadFactory | 線程工廠,用于創(chuàng)建Worker線程或其他線程。。。 |
poolName | 線程池的名稱 |
priority | The priority to be assigned to each thread. This will override any priority assigned by the specified ThreadFactory. |
corePoolSize | 初始線程數(shù) |
maxPoolSize | 最大線程數(shù),-1表示無限大 |
keepAliveTime | The maximum time a thread may stay idle and wait for a new task to execute before it will be released. Custom time units can be used. |
transactionTimeout | The maximum time a thread may be allowed to run a single task before interrupt signal will be sent. Custom time units can be used. |
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
