hana客户端中的连接池设置



我正在尝试使用节点模块hana-client/hdbext创建一个连接池。

是否有任何方法可以使用这些模块设置最大和最小池大小。

有人能分享一个例子或文件,我可以遵循这个

我可以使用配置池设置为true的Hana客户端连接到Hana。但不确定如何设置最大和最小池大小以及空闲时间

使用的模块

"@sap/hana客户端":"^2.4.182"@sap/hdbext":"^6.0.1">

感谢

阿伦

根据hana客户端2.4.x 的nodejs驱动程序的驱动程序文档,3个参数是poolingmaxPoolSizeconnectionLifetime

我尝试过使用@sap/hana-client库设置连接池——这两种方法都是隐式、显式的,都不起作用。所以我最终实现了这个:

import { Connection, createConnection, ConnectionOptions } from '@ibsolution/types-hana-client';
import { createPool, Pool, Factory, Options } from 'generic-pool';
export class HanaService {
private readonly pool: Pool<Connection>;
constructor(config: CONFIG) {
this.pool = HanaService.createConnectionPool(HanaService.getConnectionOptions(config));
}
private static createConnectionPool(connectionOptions: ConnectionOptions): Pool<Connection> {
const factory: Factory<Connection> = {
create(): Promise<Connection> {
const connection = createConnection();
return new Promise((resolve, reject) =>
connection.connect(connectionOptions, (err: Error) => {
if (err) {
reject(err);
}
resolve(connection);
}),
);
},
destroy(connection: Connection): Promise<void> {
return new Promise((resolve, reject) =>
connection.disconnect((err: Error) => {
if (err) {
reject(err);
}
resolve();
}),
);
},
};
const opts: Options = {
max: 50,
min: 5,
idleTimeoutMillis: 60000,
autostart: true,
};
return createPool(factory, opts);
}
private static getConnectionOptions(config: CONFIG): ConnectionOptions {
return {
pwd: 'PWD',
uid: 'UID',
host: 'HOST',
port: 'PORT',
};
}
async query<T extends object>(sql: string, sqlArgs?: unknown[]): Promise<T[]> {
const conn = await this.pool.acquire();
return new Promise((resolve, reject) => {
conn.exec(sql, sqlArgs, (err, rows) => {
this.pool.release(conn);
if (err) {
reject(err);
}
resolve(rows as T[]);
});
});
}
}

相关内容

  • 没有找到相关文章

最新更新