설치
npm install generic-pool
Step 1. 초기화 - object를 이용 pool 생성
var poolModule = require(‘generic-pool’); var pool = poolModule.Pool({ name : ‘mysql’, create : function(callback){ var Client = require(‘mysql’).Client; var c = new Client(); c.user = ‘scott’; c.password = ‘tiger’; c.database = ‘mydb’; c.connect(); // paramete order: err, resourc callback( null, c ); }, destroy: function( client ){ client.end() }, max : 10, min : 2, idleTimeoutMillis : 30000, //log : false log: function( msg, type ){ if( type === 'error' || type === 'wran' ){ console.log('generic-pool log : pool -', type, msg ); } } });
Step 2. pool 사용 및 자원 해제
pool.acquire(function(err, client){ if( err ){ // handle error - this is generally the err form your // factory.create function } else{ client.query( “select * from foo”, [], function(){ pool.release( client ); // 중요!! 사용한 pool 자원은 반드시 release해줘야 자원을 반납한다. }); } )); pool.acquire(function(err, client){ if( err ){ return false; } client.query( “select * from foo”, [], function(){ pool.release( client ); }); ));
Step 3. pool 을 해제하고 종료(옵션)
idleTimeoutMillis 에 지정된 시간 까지 pool은 큐에 등록된 자원을 해제하지 않으며 node도 종료되지 않는다. 명시적으로 자원을 해제해야 할 경우 pool.drain()을 이용한다.pool.drain( function(){ pool.destroyAllNow(); });
문서 factory object 설정 요소
- name
- pool 이름
- create
- 함수 - 새로운 자원을 반환하는 기능으로 생성된 리소스를 콜백으로 호출한다.
- destory
- 함수 - 승인된 자원을 파괴한다.
- max
- 주어진 시간에 만들 수 있는 자원의 최대 수 (기본값 1)
- min
- 풀을 유지하는 최소한의 자원. max보다 높게 설정하면 max -1이 자동으로 설정된다. (기본값 0)
- refreshidle
- idleTimeoutMillis 이후 파괴된 자원이 재 작성되어야 하는지 여부 (기본값 true)
- idletimeoutMillis
- 리소스가 생존할 수 있는 최대 시간 (기본값 30000)
- reapIntervalMillis
- 유휴자원을 확인하는 시간 (기본값 1000)
- returnToHead
- boolean, 큐의 동작 방법, true일 경우 가장 최신의 큐가 먼저 실행된다. (기본값 false)
- priorityRange
- 1과 임의의 수 x 사이. 임의의 리소스를 사용할 수 없을 경우 큐에 상대적인 우순 순위를 저정 할 수 있다.
// priorityRange 에 지정된 수를 기준으로 상대적인 우선 순위 설정 pool.acquire(function(err, client) { pool.release(client); }, 1); // pool.acquire() 두번째 파라미터에 우선순위 지정 // 두번째 파라미터가 없을 경우 즉시 실행해야 할 가장 높은 우선순위. 0부터 숫자가 커질 수록 우선순위가 낮아진다.
- validate
- 자원 객체가 유효한지 여부 확인. return ture 일 경우 풀링된 자원을 허용. flase 일 경우 자원을 파괴한다. 이 기능은 풀 자원을 반환하기 전 acquire() 에서 호출된다.
- log
- boolean/function, 함수인 경우 매개변수는 2개로 string, level(‘verbose’, ‘info’, warn’, ‘error’)이다.
true: 정보가 console.log에 전송된다.
false(기본값): 메세지는 무시된다.
Pool info
- pool.getName(); // pool factory.name 반환
- pool.getPoolSize() // pool 에서 사용중인 자원과 남은 자원 수를 반환
- pool.availableObjectsCount() // pool에서 사용되지 않는 자원 수를 반환
- pool.waitingClientsCount() // 취득(acquire)된 자원의 대기 수를 반환
- pool.getMaxPoolSize() // 허용된 최대 자원 수를 반환
반응형
'lang > node' 카테고리의 다른 글
socket.io io.set, io.enable 설정 (0) | 2015.10.09 |
---|---|
nodejs ip module (0) | 2015.10.05 |
nvm-windows (0) | 2015.09.28 |
NVM - Node Version Manager (0) | 2015.09.25 |
__file, __line 사용 magic-globals (0) | 2015.09.24 |