簡體   English   中英

使用大量消息在本地測試 SQS、Lambda 集成

[英]Testing SQS,Lambda integration locally with large number of messages

使用 Java 在 AWS SQS 中模擬大約 100 條消息的最佳方法是什么。 我的目標是在我的隊列中有大約 100 條消息時測試 lambda 和 DLQ 功能,以查看節流和故障是如何工作的。

編寫一個接口,公開獲取消息並正確處理它們所需的方法,並編寫需要使用該接口消費消息的代碼。

interface SqsService {
    List<Message> getMessages();
    void deleteMessage(Message message);
}

然后使用 AWS 開發工具包創建一個實現。 您將在正常條件下使用它。

class SqsMessageService implements MessageService {

    private String queueUrl;

    @Override
    List<Message> getMessages() {
        return sqs.receiveMessage(queueUrl).getMessages();
    }

    @Override
    void deleteMessage(Message message) {
        sqs.deleteMessage(queueUrl, message.getReceiptHandle());
    }
}

然后編寫另一個不與 AWS 通信而是返回大量消息的實現。

class FakeMessageService implements MessageService {
    
    @Override
    List<Message> getMessages() {
        final List<Message> messages = new ArrayList<>();
        ...code to generate 100 messages...
        return messages;
    }

    @Override
    void deleteMessage(Message message) {
        return;
    }
}

通過這種方式,您可以輕松地在實現之間切換,而無需更改大量代碼。 此外,我假設您不想實際發送 100 條或更多 SQS 消息,因為這是一個顯而易見的答案,但您必須(可能)為此付費。 如果您想對應用程序的其他部分以及它與 AWS 的集成方式進行基准測試,則您實際上並不需要它。

暫無
暫無

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

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