仅具有队列通信和性能测试的spring应用程序



我有一个spring应用程序,它从一个队列中检索消息(aws-sqs(,将请求呈现并发送给外部供应商,再次进行响应处理,并将其放回另一个处理过的队列中。Spring应用程序没有API,仅通过队列进行通信。我需要确定我的应用程序的吞吐量(消息数(。最好的方法是什么?我的用例有任何现有的工具吗?

您可以使用各种技术从SQS"隔离"地对"服务"代码进行基准测试。正如在你的问题评论中提到的,一个流行的工具是jmeter。您可以公开一个http端点来执行服务代码(与接收到SQS消息时运行的代码相同(

您还可以考虑在本地运行一个localstack docker映像,它将允许您模拟SQS(您可以使用测试工具将消息放入localstack SQS队列,然后,假设您有一种方法将服务产生的消息关联起来,则测量发送到队列的消息与应用程序写入的队列上出现消息的时间之间的时间。

当然,这可能会产生误导,因为使用"真实"的SQS可能会有自己的一些开销(例如,本地运行的docker不会涉及远程网络调用,这会隐藏一定的网络延迟,而且真实的SQS处理时间可能与本地堆栈处理时间具有不同的特性(。当然,如果这些消息的成本不会太困扰你,你实际上可以只使用真正的SQS队列,这样会更准确。

另一个需要考虑的关键是,假设您的服务向外部供应商发送请求,您的性能特征将与您所依赖的下游服务的性能特征相关联-例如,如果该服务的延迟在100ms到2000ms之间,它将影响您的代码,因此在决定是否对代码进行隔离基准测试时(例如,使用该服务的模拟(,您需要考虑那个

最新更新