Как я могу имитировать асинхронный запрос от JMeter.
Отправить запрос от Jmeter -> Отправлено на сервер -> Сервер дает подтверждение
Теперь, как я могу открыть порт или URL-адрес, где сервер может дать мне ответ, как только он завершит свой внутренний цикл/поток. и как я могу прочитать ответ.
Вы можете использовать JSR223 Sampler и написать простой TCP сервер в Groovy, используя ServerSocket, который будет прослушивать входящие данные и делать с ними все, что вам нужно.
Эталонная реализация, которая выводит полученные сообщения в файл jmeter.log:
def socketServer = new ServerSocket(1234)
while (true) {
socketServer.accept { socket ->
socket.withStreams { input, output ->
log.info("Received message: ${input.newReader().readLine()}")
}
}
}
А вот так это выглядит в действии:
как вы можете видеть, когда я отправляю hello
сообщение с помощью пробоотборника HTTP Raw Request , оно печатается в файл журнала JMeter, аналогичным образом вы можете захватить обратный вызов вашего сервера, просто убедитесь, что сервер может связаться с машиной, на которой работает JMeter, т.е. имеет статический IP-адрес , входящий трафик на выбранный вами порт не блокируется межсетевым экраном и т. д.
Поскольку while(true)
— это бесконечный цикл, из него нужно как-то выйти, например, закрыв сокет. Что касается 1000 запросов - я недостаточно телепатичен, чтобы догадаться, каково ваше требование и как вы различаете каждый из этих 1000 потоков.
почему JMeter не останавливается после получения ответа в JSR223 и как я могу запустить этот скрипт с моим основным HTTP-запросом с тысячами запросов?