亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將數據從 AWS Lambda 發送到 SQS 隊列時連接重置

將數據從 AWS Lambda 發送到 SQS 隊列時連接重置

一只甜甜圈 2022-05-21 18:35:56
我正在使用適用于 Java 的 AWS 開發工具包,其中我將數據從 AWS Lambda 發送到 SQS。我們得到了例外:Caused by: java.net.SocketException: Connection resetat java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:115)at java.net.SocketOutputStream.write(SocketOutputStream.java:155)at sun.security.ssl.OutputRecord.writeBuffer(OutputRecord.java:431)at sun.security.ssl.OutputRecord.write(OutputRecord.java:417)at sun.security.ssl.SSLSocketImpl.writeRecordInternal(SSLSocketImpl.java:886)at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:857)at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:123)at org.apache.http.impl.io.SessionOutputBufferImpl.streamWrite(SessionOutputBufferImpl.java:124)at org.apache.http.impl.io.SessionOutputBufferImpl.write(SessionOutputBufferImpl.java:160)at org.apache.http.impl.io.ContentLengthOutputStream.write(ContentLengthOutputStream.java:113)at org.apache.http.impl.io.ContentLengthOutputStream.write(ContentLengthOutputStream.java:120)at org.apache.http.entity.StringEntity.writeTo(StringEntity.java:167)at org.apache.http.impl.DefaultBHttpClientConnection.sendRequestEntity(DefaultBHttpClientConnection.java:156)at org.apache.http.impl.conn.CPoolProxy.sendRequestEntity(CPoolProxy.java:160)at org.apache.http.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.java:238)at com.amazonaws.http.protocol.SdkHttpRequestExecutor.doSendRequest(SdkHttpRequestExecutor.java:63)at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:123)at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272)at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)背景我們正在嘗試做的事情:我們有一個主要的 Lambda 函數,它創建和初始化一個 SQS 隊列,并包含應處理的每條記錄的詳細信息?,F在需要設置 SQS 隊列以從隊列中創建 X 條消息的批次,并為每個批次自動調用另一個 SQS Lambda 函數。
查看完整描述

3 回答

?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

每個批次的最大消息數為 10。您不能一次用 20k 填充 SQS 隊列并發送該請求。試著把它分成10個。

https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-limits.html#limits-queues


查看完整回答
反對 回復 2022-05-21
?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

我們可以批量發送 10 個。工作代碼:


List<SendMessageBatchRequestEntry> sqsList= new LinkedList<SendMessageBatchRequestEntry>();

    int batchId = 1; //To send a unique batchId for each msg in a batch

    for (Metadata metadata: metadataList) {

        String jsonString = new Gson().toJson(metadata);

        if (sqsList.size() == 10) {

            amazonSqs.sendMessageBatch(new SendMessageBatchRequest(queueUrl, sqsList));

            sqsList.clear();

        } 

        sqsList.add(new SendMessageBatchRequestEntry(batchId + "", jsonString)); 

        batchId++;

    }

    if(sqsList.size()>0) {

        amazonSqs.sendMessageBatch(new SendMessageBatchRequest(queueUrl, sqsList));

    }


查看完整回答
反對 回復 2022-05-21
?
Helenr

TA貢獻1780條經驗 獲得超4個贊

似乎您的代碼很好,據我記得(我自己已經多次看到此錯誤),由于 SDK 如何重用 HTTP 連接,在使用 SDK 時會不時發生這種情況。此錯誤僅告訴您您的 Lambda 重置了 HTTP 連接,但 SDK 具有內置功能以重試失敗的請求,因此如果您在每個請求上都沒有看到此錯誤,您應該沒問題。



查看完整回答
反對 回復 2022-05-21
  • 3 回答
  • 0 關注
  • 197 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號