当前位置: 首页 > 知识库问答 >
问题:

spring应用程序只提供队列通信和性能测试

陶福
2023-03-14

我有一个spring应用程序,它从一个队列(aws sqs)检索消息,向外部供应商呈现和发送请求,获取响应,再次处理它,并将其放回另一个处理过的队列。Spring应用程序没有API,只能通过队列进行通信。我需要确定应用程序的吞吐量(MSG/s)。做这件事最好的方法是什么?我的用例有任何现存的工具吗?

共有1个答案

轩辕涵亮
2023-03-14

您可以使用各种技术对与SQS“隔离”的“服务”代码进行基准测试。正如在对您问题的评论中提到的,一个流行的工具是JMeter。您可以公开httpendpoint,仅用于执行服务代码(与接收SQS消息时运行的代码相同)

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

当然,这有潜在的误导性,因为使用“真正的”SQS可能会有自己的一些开销(例如,本地运行的docker不会涉及远程网络调用,这将隐藏一定数量的网络延迟,并且可能真正的SQS处理时间与localstack处理时间具有不同的特性)。当然,如果这些消息的开销不太困扰您,您实际上可以使用真正的SQS队列,而且这将更加准确。

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

 类似资料:
  • 我正在使用SpringDoc1.4和Spring-Boot2.3,在OperationCustomizer类中,我需要从应用程序属性文件中读取值。但每次都将字段初始化为。规格如下 应用程序.属性 OperationCustomizer类

  • 我试图实现一个AWS SQS队列,以最大限度地减少来自后端服务器的数据库交互,但我遇到了问题。 我有一个消费者进程,它从一个SQS队列中查找消息 为了测试功能,我为一个客户端实现了逻辑。它运行得很好。然而,当我添加了3个客户端时,它不能正常工作。我能够看到SQS队列被500条消息卡住了,后端作业正在正常工作,从队列中读取。 我需要增加后端作业的数量还是增加客户端SQS队列的数量?现在,所有客户端都

  • 当我们使用任何数据库(如cassandra/mongo)时,Spring Boot应用程序属性需要遵循https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html的约定。如果我们想为数据库设置声明自己的属性而不是spring-boot约定,我们需要做哪些步骤来设置数

  • 我有Spring Boot Web应用程序,最初是为内部Tomcat服务器构建的(有效)。然后我采用了该应用程序在Web Logic服务器上运行。我的应用程序编译并部署到服务器没有问题,但当它不服务MVC页面时。每次调用都会抛出404错误。从下面的错误看,它看起来像Spring调度程序servlet存在,但甚至区域设置都没有正确设置。我无法弄清楚这里有什么问题或缺失,但当我创建RestContro

  • 关于测试提供程序,我有几个问题: 在进行测试之前,是否需要启动提供程序服务?我应该在测试中到达实际的提供者endpoint吗?例如,假设我的提供者代码库上有一个GET/dogsendpoint。运行测试时,是否需要在本地启动服务,点击/dogsendpoint,然后用pact文件验证为该endpoint返回的响应? 如果我想将其作为配置项管道的一部分运行(我使用的是Circloci),那么有哪些最

  • 当我试图从Eclipse Marketplace(或从他们的项目站点)安装颠覆性的SVN团队提供程序时,我得到了以下错误: 有办法解决这个问题吗?