Queues thiab JMeter: sib koom nrog Publisher thiab Subscriber

Nyob zoo, Habr! Qhov no yog ib qho sequel rau kuv yav dhau los tshaj tawm, nyob rau hauv uas kuv yuav tham txog cov kev xaiv rau tso cov lus nyob rau hauv queues siv JMeter.

Peb tab tom ua ib lub tsheb npav cov ntaub ntawv rau ib lub tuam txhab tseem fwv loj. Ntau yam kev thov tawm tswv yim, kev hloov pauv, kev sib txawv ntawm txoj kev. Rau kev sim, koj yuav tsum tau xa ntau cov lus rau cov kab. Manually yog qhov mob uas tsis yog txhua tus kws kho mob tuaj yeem daws tau.

Queues thiab JMeter: sib koom nrog Publisher thiab Subscriber

Taw qhia

Txawm tias kuv yuav tsum tau tso tseg qhov mob no thaum xub thawj. Nws tag nrho pib nrog RFHUtil. Muaj hwj chim, tab sis txawv txawv thiab txaus ntshai: Zoo, koj paub Rus.

Queues thiab JMeter: sib koom nrog Publisher thiab Subscriber

Indispensable nyob rau hauv tej rooj plaub, tab sis tsis tu ncua poob nyob rau hauv cov ntaub ntawv ntawm active siv.
Kev sim yooj yim yog ua tsis tau nrog nws.

Nrog JMeter txhua yam tau yooj yim dua. Tom qab thawj theem ntawm kev txawj ntse thiab tau siv rau nws, kev cia siab pib kaj ntug rau kev sim siab.

Kuv nquag siv JMS Publisher thiab JMS Subscriber samplers. Tsis zoo li JMS Point-to-Point, khub no zoo li yooj yim dua rau siv. Piv txwv li, nrog tus neeg siv khoom hauv JMS Selector koj tuaj yeem qhia qhov sib txawv, tab sis nrog Point-to-Point koj tsis tuaj yeem (los yog txoj kev no tsis pom tseeb heev).

Npaj samplers

JMS Publisher

  • Kev teeb tsa - Txhua tus qauv. Apache pom zoo siv qhov kev xaiv no yog cov kab / cov ncauj lus tau teev tseg ntawm kev sib txawv.
  • Expiration (ms) = 120000. Nyob rau hauv cov ntaub ntawv ntawm tsis ua hauj lwm, xeem thov yuav ploj ntawm lub queue tom qab 2 feeb.
  • Siv hom kev xa khoom tsis tu ncua? - tseeb. IBM pom zoohom uas tsis tu ncua ua kom ntseeg tau ruaj khov ntawm cov lus xa mus rau qhov xwm txheej ntawm qhov tsis ua tiav tam sim ntawd. Thiab pauv pauv sai dua hauv hom tsis tas li. Rau lub hom phiaj kev sim, kev ceev yog qhov tseem ceeb dua.

Hauv txhua tus Publisher kuv tau teeb tsa jms cov cuab yeej uas tus neeg yuav khoom yuav siv hauv JMS Selector. Rau txhua qhov kev xa tawm, tus nqi random yog tsim nyob rau hauv User Parameters test plan element:

Queues thiab JMeter: sib koom nrog Publisher thiab Subscriber

Ua li no koj tuaj yeem paub tseeb tias cov lus raug raug nyeem.

Qhov kawg "dawb" ntawm ib tug pre-configured JMS Publisher:

Queues thiab JMeter: sib koom nrog Publisher thiab Subscriber

JMS Subscriber

  • Kev teeb tsa - Txhua tus qauv. Zoo, koj nkag siab.
  • Timeout (ms) = 100000. Yog hais tias qhov kev thov tsis tuaj txog hauv lub queue tom qab 100 vib nas this ntawm tos, ces ib yam dab tsi mus tsis ncaj ncees lawm.
  • Nres ntawm cov qauv? - tseeb.

JMS Selector - yooj yim heev yam. Cov neeg siv khoom kawg JMS:

Queues thiab JMeter: sib koom nrog Publisher thiab Subscriber

Yuav ua li cas nrog cov tsiaj ntawv Cyrillic hauv cov lus sib kis. Hauv JMeter, los ntawm lub neej ntawd, tom qab kev nyeem ntawv pov thawj, nws tau nthuav tawm crookedly. Txhawm rau zam qhov no thiab txaus siab rau qhov zoo thiab muaj zog ib txwm thiab txhua qhov chaw, koj yuav tsum:

  1. Ntxiv ib qho kev sib cav JVM rau JMeter "launcher":
    -Dfile.encoding=UTF-8
  2. Ntxiv JSR223 PostProcessor rau Cov Neeg Siv Khoom nrog groovy kab:
    prev.setDataEncoding("UTF-8")

Xa ntawv

Qhov kev xaiv laziest. Haum rau kev debugging cov ntawv xeem sau tshiab. Los yog rau rooj plaub thaum koj xav tau xa tsawg kawg ib yam me me. Xaiv qhov kev xaiv Cov lus teb - Textarea thiab muab lub cev ntawm cov lus tso rau hauv ib qho ntawv thaiv:

Queues thiab JMeter: sib koom nrog Publisher thiab Subscriber

Hloov cov ntaub ntawv

Qhov kev xaiv tshaj plaws. Haum rau feem ntau scenarios. Xaiv qhov kev xaiv Cov lus teb - Los ntawm cov ntaub ntawv thiab qhia txoj hauv kev rau cov lus hauv daim teb File - Filename:

Queues thiab JMeter: sib koom nrog Publisher thiab Subscriber

Hloov cov ntaub ntawv mus rau qhov chaw sau ntawv

Qhov ntau yam kev xaiv. Haum rau feem ntau cov xwm txheej + tuaj yeem siv hauv JMS Point-to-Point qhov twg tsis muaj kev xaiv xa thib ob:

Queues thiab JMeter: sib koom nrog Publisher thiab Subscriber

Hla ib byte array

Qhov kev xaiv nyuaj tshaj plaws. Tsim nyog rau kev kuaj xyuas qhov tsis raug xa mus rau qhov kev thov mus rau byte, tsis muaj kev cuam tshuam, SMS thiab cuam tshuam. Koj yuav tsis tuaj yeem ua qhov no hauv JMeter default. no Kuv tau hais meej txog qhov no.

Yog li kuv yuav tsum download tau qhov chaw thiab hloov kho code JMS Subscriber.

Hloov hauv txoj kev extractContent(..) kab:

buffer.append(bytesMessage.getBodyLength() + " bytes received in BytesMessage");

nyob rau:

byte[] bytes = new byte[(int) bytesMessage.getBodyLength()];
bytesMessage.readBytes(bytes);
try {
	buffer.append(new String(bytes, "UTF-8"));
} catch (UnsupportedEncodingException e) {
	throw new RuntimeException(e);
}

thiab rebuilt JMeter.

Txhua yam uas tseem tshuav yog ntxiv ob peb JSR223 Samplers. Thawj yog ua ntej Publisher/Subscriber khub los tsim ib cov ntaub ntawv DAT uas muaj random bytes:

import org.apache.commons.lang3.RandomUtils;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

vars.put("PATH_TO_BYTES", "C:temprandomBytes.dat");
File RESULT_FILE = new File(vars.get("PATH_TO_BYTES"));
byte[] arr = RandomUtils.nextBytes((int)(Math.random()*10000));
        try {
            FileOutputStream fos = new FileOutputStream(RESULT_FILE);
            fos.write(arr);
            fos.close();
        } catch (IOException e) {
            System.out.println("file not found");
        }

Qhov thib ob - thaum kawg ntawm tsab ntawv, deletes cov ntaub ntawv:

import java.io.File;

File RESULT_FILE = new File(vars.get("PATH_TO_BYTES"));
RESULT_FILE.delete();

Thiab tsis txhob hnov ​​​​qab ntxiv txoj hauv kev rau cov ntaub ntawv hauv Publisher:

Queues thiab JMeter: sib koom nrog Publisher thiab Subscriber

Thiab kuj yog ib daim tshev hauv JSR223 Assertion rau Cov Neeg Sau Npe - sib piv cov ntaub ntawv los ntawm cov uas tuaj txog hauv cov neeg tau txais cov kab:

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;

Path path = Paths.get(vars.get("PATH_TO_BYTES"), new String[0]);
byte[] originalArray = Files.readAllBytes(path);
byte[] changedArray = ctx.getPreviousResult().getResponseData();
System.out.println(changedArray.length);

if (Arrays.equals(originalArray, changedArray))
	{
     	SampleResult.setResponseMessage("OK");

	} else {
	   SampleResult.setSuccessful(false);
     	   SampleResult.setResponseMessage("Comparison failed");
	   SampleResult.setResponseData("Bytes have changed","UTF-8");
     	   IsSuccess=false;
	}

xaus

Kuv tau piav txog plaub txoj hauv kev xa cov lus rau cov kab, uas kuv siv txhua hnub hauv kev xyaum. Kuv vam tias cov ntaub ntawv no ua rau koj lub neej yooj yim dua. Hauv kev txuas ntxiv, kuv npaj yuav tham txog kuv qhov kev paub dhau los ntawm kev sim kev sib pauv qhov twg muaj ib kab ntawm ib qho kawg thiab cov ntaub ntawv lossis cov ntaub ntawv ntawm lwm qhov.

Txuag koj lub sijhawm. Thiab ua tsaug rau koj mloog.

Queues thiab JMeter: sib koom nrog Publisher thiab Subscriber

Tau qhov twg los: www.hab.com

Ntxiv ib saib