簡體   English   中英

如何提高向 AWS 隊列發送消息的性能

[英]How to increase performance for send message to AWS Queue

我正在使用Spring boot 2.2.0.RELEASE ,當我將數據發送到 AmazonSqs 時,我有 300-500 毫秒的延遲。 也許我做錯了什么。 我的代碼如下所示:

public class MySender {
    private final QueueMessagingTemplate queueMessagingTemplate;
    private AmazonSQSAsync amazonSqsAsync;

    public MySender(AmazonSQSAsync amazonSqsAsync) {
        this.amazonSqsAsync = amazonSqsAsync;
        this.queueMessagingTemplate = new QueueMessagingTemplate(amazonSqs);
    }

    public void send(String queue, String msg) {
        ...
        Message<String> message = MessageBuilder.withPayload(msg)
                                                .setHeader("MyHeader", "val");
        long startSending = System.currentTimeMillis();
        queueMessagingTemplate.send(queue, message);
        System.out.println("Sending time: " + (System.currentTimeMillis() - startSending));
        // and this I get sending message time 300 - 500ms.
    }
}

我怎樣才能減少這種延遲?

Amazon SQS 隊列可以提供非常高的吞吐量。 如果您不使用 FIFO 隊列,則消息數量沒有限制。 從 Spring Boot 應用程序向 SQS 隊列發送消息的延遲取決於其他因素的數量,例如區域、網絡帶寬

例如,如果您在印度的本地機器上運行 Spring Boot 應用程序,並且您的 SQS 隊列區域在歐洲,那么就會出現延遲。

要提高性能,請嘗試在 SQS 隊列的同一區域中的 EC2 實例中部署 Spring Boot 應用程序。

您還可以嘗試使用 vpc 端點連接到 SQS 隊列,該隊列將使用 aws 專用網絡發送消息,它將為您提供良好的性能

我建議使用 lambda 將消息發送到 SQS 隊列的更好方法,這可以為您提供最大性能。

還要驗證您的 SQS 隊列的配置。檢查為默認可見性超時、接收消息等待時間、傳遞延遲設置的值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM