带有服务器发送事件的 JMeter 并行请求
Posted
技术标签:
【中文标题】带有服务器发送事件的 JMeter 并行请求【英文标题】:JMeter parallel requests with server-sent-events 【发布时间】:2016-11-30 03:06:53 【问题描述】:我有一个 JMeter 测试,我目前正在使用循环来确定某些条件是否为真。我想(并且可以)对发送服务器发送事件(SSE)的资源使用请求,而不是轮询。它应该工作的方式是启动 SSE 线程,然后启动另一个线程,该线程执行最终将导致发送特定事件的请求。如果收到该事件,则应继续处理。
图形可能更清楚。我当前的脚本如下所示:
ThreadGroup
|
+ request 1
+ request 2
...
+ request N
+ Transaction controller
| |
| + While controller
| + polling request
|
+ request N+1
我想要这样的东西
ThreadGroup
|
+ request 1
+ request 2
...
+ <help needed here>
| |
| + event thread
| | + request SSE
| | + onEvent x: y = true
| + action thread
| + request N
| + While y=false wait
+ request N+1
这可能吗?如果有怎么办?如果没有,我可以创建一个采样器来执行此操作吗?有什么指点吗?
格罗滕,
弗里索
【问题讨论】:
【参考方案1】:我认为你必须实现自己的类。
首先,作为上交所的客户,你应该看看这个:
https://jersey.java.net/documentation/latest/sse.html#d0e11970第二步是实现一个自定义的采样器来扩展这个类:
https://jmeter.apache.org/api/org/apache/jmeter/protocol/java/sampler/AbstractJavaSamplerClient.html并将它与这个 GUI 一起使用:
http://jmeter.apache.org/usermanual/component_reference.html#Java_Request现在最复杂的部分(也许我们应该创建一个 github 项目来讨论这个实现,并在完成后将其贡献给核心 JMeter 项目:-)):
SSESampler 采样器可以在 2 种模式下工作: 阻塞直到它收到服务器的响应,这样你就可以断言结果 启动一个线程(最好使用线程池或反应堆模式)来监听服务器,一旦它得到响应,我们必须找到一种方法让初始线程能够访问它并断言。我们可以使用线程安全的 Map 共享,其中数据将由传递给 SSESampler 的一些数据作为键这些只是初步的想法,需要更多的工作。
【讨论】:
github.com/vrolijken/JMeter-SSE 我最初的想法。我有工作的 SSE 客户端代码,所以这部分肯定不是问题。【参考方案2】:在考虑为jmeter创建新的sse插件后,我发现gatling.io,它支持SSE gatling.io
【讨论】:
以上是关于带有服务器发送事件的 JMeter 并行请求的主要内容,如果未能解决你的问题,请参考以下文章