JMS 消息在 Gatling 中发送,但未收到回复 - 我哪里出错了?
JMS message sent in Gatling, but reply not received - Where am I going wrong?
我刚开始使用 Gatling 和 JMS 进行测试。从长远来看,我将寻找 Gatling 来让 JMS 侦听器等待 JMS 消息从我们的 AUT 放入队列,但现在我只是在沙盒中玩游戏以尝试掌握 Gatling 的 JMS 处理.我一直在查看谷歌搜索抛给我的各种例子,我想出的最好的例子如下:
package jmspublisher
import io.gatling.core.Predef._
import io.gatling.jms.Predef._
import javax.jms._
import scala.concurrent.duration._
class WebProducer extends Simulation{
// create a ConnectionFactory for ActiveMQ
// search the documentation of your JMS broker
val connectionFactory =
new org.apache.activemq.ActiveMQConnectionFactory("tcp://localhost:61616")
val jmsUsername:String="admin"
val jmsPwd:String="admin"
val jmsConfig = jms
.connectionFactory(connectionFactory)
.usePersistentDeliveryMode
.matchByCorrelationId
val scn = scenario("JMS DSL test").repeat(1) {
exec(jms("req reply testing").requestReply
.queue("jmstestq")
.replyQueue("repQueue")
.textMessage("hello from gatling jms dsl")
.jmsType("textMessage")
.check(simpleCheck(checkBodyTextCorrect)))
}
setUp(scn.inject(atOnceUsers(1))).protocols(jmsConfig)
def checkBodyTextCorrect(m: Message) = {
print ("here")
print (m);
// this assumes that the service just does an "uppercase" transform on the text
m match {
case tm: TextMessage => tm.getText == "HELLO FROM GATLING JMS DSL"
case _ => false
}
}
}
我可以在我的 activeMQ 控制台中看到创建了两个队列,一条消息在 jmstestq
上排队,并且 repQueue
在 运行 期间连接了一个侦听器 - 但是 repQueue
似乎从未收到来自 jmstestq
的消息,因此从未接收到响应,也从未进行过检查。
我确定我错过了一些简单的东西 - 但它是什么?!
你确定你有一个从 repQueue 读取然后在 repQueue 中写入响应消息的示例 AUT 吗?
如果没有,加特林只是在等待永远不会到达的响应。
我刚开始使用 Gatling 和 JMS 进行测试。从长远来看,我将寻找 Gatling 来让 JMS 侦听器等待 JMS 消息从我们的 AUT 放入队列,但现在我只是在沙盒中玩游戏以尝试掌握 Gatling 的 JMS 处理.我一直在查看谷歌搜索抛给我的各种例子,我想出的最好的例子如下:
package jmspublisher
import io.gatling.core.Predef._
import io.gatling.jms.Predef._
import javax.jms._
import scala.concurrent.duration._
class WebProducer extends Simulation{
// create a ConnectionFactory for ActiveMQ
// search the documentation of your JMS broker
val connectionFactory =
new org.apache.activemq.ActiveMQConnectionFactory("tcp://localhost:61616")
val jmsUsername:String="admin"
val jmsPwd:String="admin"
val jmsConfig = jms
.connectionFactory(connectionFactory)
.usePersistentDeliveryMode
.matchByCorrelationId
val scn = scenario("JMS DSL test").repeat(1) {
exec(jms("req reply testing").requestReply
.queue("jmstestq")
.replyQueue("repQueue")
.textMessage("hello from gatling jms dsl")
.jmsType("textMessage")
.check(simpleCheck(checkBodyTextCorrect)))
}
setUp(scn.inject(atOnceUsers(1))).protocols(jmsConfig)
def checkBodyTextCorrect(m: Message) = {
print ("here")
print (m);
// this assumes that the service just does an "uppercase" transform on the text
m match {
case tm: TextMessage => tm.getText == "HELLO FROM GATLING JMS DSL"
case _ => false
}
}
}
我可以在我的 activeMQ 控制台中看到创建了两个队列,一条消息在 jmstestq
上排队,并且 repQueue
在 运行 期间连接了一个侦听器 - 但是 repQueue
似乎从未收到来自 jmstestq
的消息,因此从未接收到响应,也从未进行过检查。
我确定我错过了一些简单的东西 - 但它是什么?!
你确定你有一个从 repQueue 读取然后在 repQueue 中写入响应消息的示例 AUT 吗? 如果没有,加特林只是在等待永远不会到达的响应。