我正在使用:
我正在按照github中的描述连接到数据库,
public static void main(String[] args) throws IOException, InterruptedException {
DatagramSocket ds = new DatagramSocket();
byte[] data = "Hello".getBytes();
DatagramPacket p = new DatagramPacket(data, data.length);
String server = "192.168.1.5";
p.setAddress(InetAddress.getByName(server));
p.setPort(10086);
ds.send(p);
Thread.sleep(1);
data = "world".getBytes();
p = new DatagramPacket(data, data.length);
p.setAddress(InetAddress.getByName(server));
p.setPort(10086);
ds.send(p);
}
这就是我在Lambda函数中使用它的方式
A client connect: 38394, 192.168.1.2, 2 with msg: Hello.
A client connect: 38394, 192.168.1.2, 2 with msg: world.
我第一次执行时效果很好。
但是第二次和下一次我遇到错误
const connection = await createConnection({
type: 'aurora-data-api-pg',
database: 'test-db',
secretArn: 'arn:aws:secretsmanager:eu-west-1:537011205135:secret:xxxxxx/xxxxxx/xxxxxx',
resourceArn: 'arn:aws:rds:eu-west-1:xxxxx:xxxxxx:xxxxxx',
region: 'eu-west-1'
})
那么,管理此连接的正确方法是什么? 应该以某种方式重用吗?
我已经找到了一些简单RDS的解决方案,但是Aurora Serverless 数据API 的全部目的是您不必管理连接
答案 0 :(得分:0)
当您尝试建立连接时,需要检查它是否已经可以使用连接。这是我的Database
类,用于处理连接
export default class Database {
private connectionManager: ConnectionManager;
constructor() {
this.connectionManager = getConnectionManager();
}
async getConnection(): Promise<Connection> {
const CONNECTION_NAME = 'default';
let connection: Connection;
if (this.connectionManager.has(CONNECTION_NAME)) {
logMessage(`Database.getConnection()-using existing connection::: ${CONNECTION_NAME}`);
connection = await this.connectionManager.get(CONNECTION_NAME);
if (!connection.isConnected) {
connection = await connection.connect();
}
} else {
logMessage('Database.getConnection()-creating connection ...');
logMessage(`DB host::: ${process.env.DB_HOST}`);
const connectionOptions: ConnectionOptions = {
name: CONNECTION_NAME,
type: 'postgres',
port: 5432,
logger: 'advanced-console',
logging: ['error'],
host: process.env.DB_HOST,
username: process.env.DB_USERNAME,
database: process.env.DB_DATABASE,
password: process.env.DB_PASSWORD,
namingStrategy: new SnakeNamingStrategy(),
entities: Object.keys(entities).map((module) => entities[module]),
};
connection = await createConnection(connectionOptions);
}
return connection;
}
}