У меня есть очередь SQS, в которой я накопил 100000 сообщений, и я хочу узнать, как быстро я могу вывести очередь из этой очереди, используя функцию лямбды. Чтобы убрать столько сообщений, я могу набрать 17 тыс. Сообщений в минуту, и он вызывает только 600 лямбда-функций.
Так есть ли способ улучшить работу очереди? Допустим, если мы сможем увеличить вызов лямбда-функции на 5k, тогда моя очередь также будет быстрее.
Среднее время, затрачиваемое лямбда-функцией, составляет всего 20 мс, и я также выделил максимальную память для лямбда-функции
Это моя функция lamda, которую я включил после того, как у нас в очереди 100000 сообщений.
package com.amazonaws.lambda.demo;
import org.json.JSONObject;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.SQSEvent;
import com.amazonaws.services.lambda.runtime.events.SQSEvent.SQSMessage;
import com.amazonaws.services.sns.AmazonSNSClient;
import com.amazonaws.services.sns.model.PublishRequest;
import com.amazonaws.services.sns.model.PublishResult;
import com.amazonaws.services.sqs.AmazonSQS;
import com.amazonaws.services.sqs.AmazonSQSClientBuilder;
import com.amazonaws.services.sqs.model.SendMessageRequest;
public class LambdaMysql implements RequestHandler<SQSEvent, Void> {
@Override
public Void handleRequest(SQSEvent event, Context context) {
for (SQSMessage msg : event.getRecords()) {
JSONObject jsonResponseObjectMain = new JSONObject(msg.getBody());
String ID = jsonResponseObjectMain.get("ID").toString();
System.out.println("------ID-------" + ID);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
AmazonSQS sqs = AmazonSQSClientBuilder.standard()
.withRegion(Regions.US_EAST_1)
.build();
String bodyofJson = "Record Inserted Into FSP DB";
String queueUrl="https://sqs.us-east-1.amazonaws.com/***-queue";
SendMessageRequest send_msg_request = new SendMessageRequest()
.withQueueUrl(queueUrl)
.withMessageBody(bodyofJson);
sqs.sendMessage(send_msg_request);
}
return null;
}
}