어떻게 메시지 큐 에 대해 성능 테스트 를 합 니까?
대기 열 을 추가 하 는 테스트 에서 jmeter 가 어떻게 실현 되 는 지 잘 모 르 겠 습 니 다. 그들 이 직접 포기 하기 때문에 제 가 사용 하 는 방안 은 충분 한 양의 메 시 지 를 구축 한 다음 에 메시지 데 이 터 를 꺼 내 서 스 레 드 안전 한 집합 에 넣 고 다 중 스 레 드 를 가 져 오 는 것 입 니 다. 자바 의 링크 드 BlockingQueue 메시지 대기 열 을 사용 합 니 다.테스트 를 한 번 도 끝내 지 못 하고 테스트 데 이 터 를 리 셋 하여 중간 에 실패 하 는 것 을 방지 합 니 다.
public int createQ() {
String absolutePath = new File("").getAbsolutePath();
List strings = WriteRead.readTxtFileByLine(absolutePath + "/dubbo");
new Concurrent(new ThreadBase(SourceCode.changeStringToInt(strings.get(0))) {
@Override
protected void before() {
}
@Override
protected void doing() throws Exception {
CreateQueueRequest createQueueRequest = new CreateQueueRequest();
createQueueRequest.setReqId(TraceKeyHolder.getTraceKey());
createQueueRequest.setDelayTime(System.currentTimeMillis() + 3600 * 1000);
String msg = "wait_for_publish:8888" + "@" + System.nanoTime() + PublishType.ZUOYE;
createQueueRequest.setMsg(msg);
createQueueRequest.setTaskTypeEnum(TaskTypeEnum.PUBLISH_PROMU);
createQueueRequest.setTtl(0L);
CommonResponse queue = commonDelayQueueService.createQueue(createQueueRequest);
logger.info("createQueue0 {}", JsonUtil.obj2Json(queue));
}
@Override
protected void after() {
}
}, SourceCode.changeStringToInt(strings.get(1))).start();
return 0;
}
대기 열 삭제:
public int deleteQ() throws InterruptedException {
if (msgs.size() == 0) {
logger.info(" ");
msgs = addmsg();
}
String absolutePath = new File("").getAbsolutePath();
List strings = WriteRead.readTxtFileByLine(absolutePath + "/dubbo");
new Concurrent(new ThreadBase(SourceCode.changeStringToInt(strings.get(0))) {
@Override
protected void before() {
}
@Override
protected void doing() throws Exception {
String msg = msgs.poll(100, TimeUnit.MILLISECONDS);
logger.info("msg:{}", msg);
DeleteQueueRequest deleteQueueRequest0 = new DeleteQueueRequest();
deleteQueueRequest0.setMsg(msg);
deleteQueueRequest0.setTaskTypeEnum(TaskTypeEnum.PUBLISH_PROMU);
CommonResponse queue3 = commonDelayQueueService.deleteQueue(deleteQueueRequest0);
logger.info("deleteQueue2 {}", JsonUtil.obj2Json(queue3));
}
@Override
protected void after() {
}
}, SourceCode.changeStringToInt(strings.get(1))).start();
return 0;
}
그 중에서 msgs 의 설정 은 다음 과 같다.
public static LinkedBlockingQueue msgs = addmsg();
public static LinkedBlockingQueue addmsg() {
String absolutePath = new File("").getAbsolutePath();
List strings = WriteRead.readTxtFileByLine(absolutePath + "/queue");
LinkedBlockingQueue ss = new LinkedBlockingQueue<>();
ss.addAll(strings);
logger.info(" ");
return ss;
}
4. 567917. 여기 서 문제 가 있 습 니 다. 계속 테스트 하 는 과정 에서 addmsg 방법 은 테스트 과정 에서 실 행 될 수 있 습 니 다
제 가 테스트 를 할 때 데이터 양 이 충분 하기 때문에 처 리 를 하지 않 았 습 니 다. 만약 에 데이터 양 이 여러 번 테스트 를 지탱 하지 못 하면 테스트 를 시작 하기 전에 msgs 를 초기 화하 거나 before () 방법 에서 모든 스 레 드 에 데 이 터 를 초기 화 할 수 있 습 니 다.
관심 있 는 동 화 를 환영 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
kafka 의 0.8.2.1 버 전의 자바 코드 구현1. 설명 이 코드 구현 은 kafka2.10 의 0.8.2.1 버 전의 자바 코드 가 실현 되 고 소비 자 는 여러 개의 Topic 소비 에 대한 다 중 스 레 드 실현 이다. 2. 설치 참고: Kafka 간단 한...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.