【发布时间】:2019-01-31 17:15:36
【问题描述】:
我正在尝试将 AWS-SDK 和 Kinesis Client 库与 JMeter 一起使用来生成记录以放入我的 Kinesis 流中以进行性能测试。我的问题是 JMeter 无法识别能够从我的代码中调用它们的库。我不知道接下来要解决什么问题。
安装了 JMeter 5.0(我尝试使用 4.0 版也遇到同样的问题)和 Java 8。
$ java -version
java version "1.8.0_202-ea"
Java(TM) SE Runtime Environment (build 1.8.0_202-ea-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b03, mixed mode)
将 AWS 库的 JAR 文件放在我的 JMeter 安装的 lib 文件夹中(也尝试了 lib/ext):
- amazon-kinesis-client-2.1.0.jar
- aws-java-sdk-1.11.490.jar
- aws-sdk-java-2.3.10-SNAPSHOT.jar
- aws-sdk-java-aws-core-2.3.10-SNAPSHOT.jar
- aws-sdk-java-kinesis-2.3.10-SNAPSHOT.jar
- aws-sdk-java-sdk-core-2.3.10-SNAPSHOT.jar
(也根据另一篇文章添加了这三个 - 不确定它们是否真的需要)
- jackson-annotations-2.9.8.jar
- jackson-core-2.9.8.jar
- jackson-databind-2.9.8.jar
使用 Groovy 代码的 JSR223 采样器(基于其他示例):
import groovy.json.*
import groovy.json.JsonBuilder
import groovy.json.JsonOutput
import com.amazonaws.AmazonClientException
import com.amazonaws.AmazonServiceException
import com.amazonaws.auth.AWSCredentials
import com.amazonaws.auth.profile.ProfileCredentialsProvider
import com.amazonaws.services.kinesis.AmazonKinesisClient
import com.amazonaws.services.kinesis.model.CreateStreamRequest
import com.amazonaws.services.kinesis.model.DescribeStreamRequest
import com.amazonaws.services.kinesis.model.DescribeStreamResult
import com.amazonaws.services.kinesis.model.ListStreamsRequest
import com.amazonaws.services.kinesis.model.ListStreamsResult
import com.amazonaws.services.kinesis.model.PutRecordRequest
import com.amazonaws.services.kinesis.model.PutRecordResult
import com.amazonaws.services.kinesis.model.ResourceNotFoundException
import com.amazonaws.services.kinesis.model.StreamDescription
class AmazonKinesisRecordProducerSample {
def kinesis
def init() {
AWSCredentials credentials = null
credentials = new ProfileCredentialsProvider().getCredentials()
kinesis = new AmazonKinesisClient(credentials)
}
}
def amazonKinesisRecordProducerSample= new AmazonKinesisRecordProducerSample()
amazonKinesisRecordProducerSample.init()
def Environment = vars.get("Environment") //as String
def AWS_Region = vars.get("AWS_Region") //as String
def myStreamName="stream123-" + Environment + "-" + AWS_Region
def jsondata = new JsonBuilder()
jsondata {
<VARIOUS JSON DATA ADDED>
}
def data=jsondata.toPrettyString()
log.info("jsondata: " + data)
def partitionkey="<PARTITION KEY>"
def putRecordRequest = new PutRecordRequest()
putRecordRequest.setStreamName(myStreamName)
putRecordRequest.setData(ByteBuffer.wrap(String.valueOf(data).getBytes()))
putRecordRequest.setPartitionKey(partitionkey)
def putRecordResult = new PutRecordResult()
putRecordResult = amazonKinesisRecordProducerSample.kinesis.putRecord(putRecordRequest)
log.info("Successfully put record, partition key : %s, ShardID : %s, SequenceNumber : %s.\n",
putRecordRequest.getPartitionKey(),
putRecordResult.getShardId(),
putRecordResult.getSequenceNumber())
对于每个 com.amazonaws,我都会收到此错误。* 我尝试导入:
Script1.groovy: 14: unable to resolve class com.amazonaws.services.kinesis.AmazonKinesisClient
@ line 14, column 1.
import com.amazonaws.services.kinesis.AmazonKinesisClient
供参考 How to put 25k record to kinesis stream and Test tool to acknowledge it 和 Using HTTP Request of Jmeter to put records into Amazon Kinesis
【问题讨论】:
-
您能找到解决方案吗?
标签: jmeter aws-sdk performance-testing load-testing amazon-kinesis