приложение Spring только для связи с очередями и проверки производительности - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть приложение Spring, которое извлекает сообщения из одной очереди (aws sqs), обрабатывает и отправляет запрос внешнему поставщику, снова обрабатывает ответ и помещает его обратно в другую обработанную очередь. Приложение Spring не имеет API, общение только через очереди. Мне нужно определить пропускную способность (# мсг / с) моего приложения. Какой лучший способ сделать это? Существующие инструменты для моего варианта использования?

1 Ответ

0 голосов
/ 02 ноября 2018

Вы можете сравнить «служебный» код «изолированно» от SQS, используя различные методы. Как уже упоминалось в комментарии к вашему вопросу, популярным инструментом является jmeter. Вы можете предоставить конечную точку http только для использования служебного кода (того же кода, который будет запускаться при получении сообщения SQS)

Вы также можете рассмотреть возможность локального запуска образа докера localstack , который позволит вам смоделировать SQS (вы можете использовать тестовый жгут для помещения сообщений в очередь sqals localstack, а затем, предполагая, что у вас есть способ чтобы сопоставить сообщение, создаваемое службой, измерьте время между отправкой сообщения в очередь и временем, в которое оно появляется в очереди, в которую приложение пишет.

Это, конечно, потенциально вводит в заблуждение, так как использование «реального» SQS, вероятно, будет иметь некоторые собственные издержки (например, локально работающий докер не будет включать удаленные сетевые вызовы, что сократит некоторую задержку в сети и, возможно, реальную обработку SQS время имеет отличные характеристики от местного). Конечно, вы могли бы просто использовать реальные очереди SQS, если стоимость этих сообщений вас не слишком беспокоит, и это будет более точным.

Еще одна важная вещь, которую следует учитывать, - учитывая, что ваша служба отправляет запрос внешнему поставщику, ваши характеристики производительности будут связаны с характеристиками нисходящей службы, от которой вы зависите - если эта служба имеет задержку, которая варьируется от 100 мс до 2000 мс например, это повлияет на ваше решение, поэтому при принятии решения о том, стоит ли тестировать ваш код изолированно (например, с помощью макета этого сервиса), вам следует учитывать это.

...