Я использую java sdk для подключения к AWS firehose для отправки журналов. Но каждый раз при отправке журнала создается новый поток.
Вот как я создаю клиента.
ClientConfiguration conf = new ClientConfiguration();
conf.setMaxConnections(2);
conf.withMaxConnections(2);
conf.setConnectionMaxIdleMillis(2000);
AmazonKinesisFirehoseAsyncClient firehoseClient = (AmazonKinesisFirehoseAsyncClient) AmazonKinesisFirehoseAsyncClientBuilder
.standard()
.withRegion(Regions.fromName("us-east-1"))
.withCredentials(new AWSStaticCredentialsProvider(awsCreds))
.withClientConfiguration(conf)
.build();
Так я вызываю функцию putrecord.
PutRecordRequest putRecordRequest = new PutRecordRequest()
.withDeliveryStreamName("teststream")
.withRecord(record);
return firehoseClient.putRecordAsync(putRecordRequest, asyncHandler());
private AsyncHandler<PutRecordRequest, PutRecordResult> asyncHandler() {
return new AsyncHandler<PutRecordRequest, PutRecordResult>() {
public void onError(Exception e) {
System.out.println("Exception async handler {}");
}
public void onSuccess(PutRecordRequest request, PutRecordResult putRecordResult) {
System.out.println(Thread.currentThread().getName()) ;
}
};
}
Здесь проблема очевидна, хотя я указывал maxconnection как «2» каждый раз, когда вызываю функцию - example.putRecord (), она создает новый поток, который я подтверждаю, просматривая jconsole.
и нити тоже не умирают сами по себе.
Итак, как мне поддерживать количество потоков, и потоки должны умирать после получения каждого ответа.