Ilarak eta JMeter: Publisher eta Subscriber-ekin partekatzea

Kaixo, Habr! Hau nire segida da aurreko argitalpena, eta bertan JMeter erabiliz mezuak ilaretan jartzeko aukerei buruz hitz egingo dut.

Enpresa federal handi baterako datu-bus bat egiten ari gara. Hainbat eskaera formatu, eraldaketa, bideratze korapilatsua. Proba egiteko, ilarara mezu asko bidali behar dituzu. Eskuz kiropraktiko guztiek kudeatu dezaketen mina da.

Ilarak eta JMeter: Publisher eta Subscriber-ekin partekatzea

Sarrera

Hasieran min hori jasan behar izan nuen arren. RFHUtil-ekin hasi zen dena. Indartsua, baina baldar eta beldurgarria: Beno, ezagutzen duzu Rus.

Ilarak eta JMeter: Publisher eta Subscriber-ekin partekatzea

Ezinbestekoa da kasu batzuetan, baina erabilera aktiboaren kasuan etengabe murrizten.
Proba erosoa ezinezkoa da horrekin.

JMeterrekin dena erraztu da. Masterizatu eta ohitzeko lehen etaparen ondoren, proba zoriontsuetarako itxaropena argitzen hasi zen.

JMS Publisher eta JMS Subscriber laginak aktiboki erabiltzen ditut. JMS Point-to-Point ez bezala, bikote hau erabiltzeko erosoagoa zirudien. Adibidez, Subscriber-en JMS Selector-en aldagai bat zehaztu dezakezu, baina Point-to-Point-ekin ezin (edo metodo hau ez da oso agerikoa).

Laginak prestatzea

JMS argitaletxea

  • Konfigurazioa - Lagin bakoitza. Apache gomendatzen du erabili aukera hau ilarak/gaiak aldagaien bidez zehazten badira.
  • Iraungipena (ms) = 120000. Porrotaren kasuan, proba eskaerak ilaratik desagertuko dira 2 minuturen buruan.
  • Bidalketa modu iraunkorra erabili? - egia. IBM erreklamazioakmodu iraunkor horrek transmititutako mezuen kontserbazio fidagarria bermatzen du bat-bateko hutsegiterik gertatuz gero. Eta truke azkarragoa modu iraunkorrean. Proba egiteko, abiadura garrantzitsuagoa da.

Argitaratzaile bakoitzean Harpidedunak JMS Hautatzailean erabiliko duen jms propietate bat ezarri dut. Bidalketa bakoitzeko, ausazko balio bat sortzen da Erabiltzaile-parametroak proba-planaren elementuan:

Ilarak eta JMeter: Publisher eta Subscriber-ekin partekatzea

Modu honetan mezu zuzena irakurri dela ziurtatu dezakezu.

Aurrez konfiguratutako JMS Publisher baten azken "hutsak":

Ilarak eta JMeter: Publisher eta Subscriber-ekin partekatzea

JMS Harpideduna

  • Konfigurazioa - Lagin bakoitza. Beno, ulertzen duzu.
  • Denbora-muga (ms) = 100000. Eskaera ilarara iristen ez bada 100 segundo itxaron ondoren, zerbait gaizki joan da.
  • Lagin artean gelditu? - egia.

JMS hautatzailea - nahiko erosoa gauza. Azken JMS harpideduna:

Ilarak eta JMeter: Publisher eta Subscriber-ekin partekatzea

Igorritako mezuetan alfabeto zirilikoari nola aurre egin. JMeter-en, lehenespenez, zuzenketa egin ondoren, oker bistaratzen da. Hori saihesteko eta handiz eta indartsuaz beti eta nonahi gozatzeko, honako hau egin behar duzu:

  1. Gehitu JVM argumentu bat JMeter "abiarazleari":
    -Dfile.encoding=UTF-8
  2. Gehitu JSR223 PostProcessor harpidedunari lerro groovy batekin:
    prev.setDataEncoding("UTF-8")

Bidali testua

Aukera alferena. Idatzi berri diren probak arazketarako egokia. Edo gutxienez zerbait txikia bidali behar duzun kasuetarako. Hautatu aukera Mezuaren iturria - Textarea eta jarri mezuaren gorputza testu bloke batean:

Ilarak eta JMeter: Publisher eta Subscriber-ekin partekatzea

Fitxategien transferentzia

Aukera ohikoena. Eszenatoki gehienetarako egokia. Hautatu aukera Mezuaren iturria - Fitxategitik eta adierazi eremuan mezuaren bidea Fitxategia - Fitxategiaren izena:

Ilarak eta JMeter: Publisher eta Subscriber-ekin partekatzea

Fitxategi bat testu-eremu batera transferitzea

Aukera polifazetikoa. Eszenatoki gehienetarako egokia + JMS Point-to-Point-en erabil daiteke bigarren bidalketa aukerarik ez dagoenean:

Ilarak eta JMeter: Publisher eta Subscriber-ekin partekatzea

Byte array bat pasatzea

Aukerarik zailena. Byterainoko eskaeren zehaztasunik gabeko transmisioa egiaztatzeko egokia, distortsio, SMS eta perturbaziorik gabe. Ezin izango duzu hori egin JMeter lehenetsian. Hemen Zalantzarik gabe, honi buruz esan zidaten.

Beraz, deskargatu behar izan nuen iturriak eta aldatu kodea JMS Harpideduna.

Metodoan ordezkatua extractContent(..) lerroa:

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

on:

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);
}

eta JMeter berreraiki zuen.

JSR223 Sampler pare bat gehitzea besterik ez da geratzen. Lehenengoa Argitaratzailea/Harpidedun bikotearen aurretik dago ausazko byteak dituen DAT fitxategi bat sortzeko:

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");
        }

Bigarrenak - script-aren amaieran, fitxategia ezabatzen du:

import java.io.File;

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

Eta ez ahaztu fitxategiari bidea gehitzea Publisher-en:

Ilarak eta JMeter: Publisher eta Subscriber-ekin partekatzea

Eta harpidedunentzako JSR223 baieztapena ere egiaztatzea - ​​alderatu iturburuko byteak hartzailearen ilaran iristen direnekin:

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;
	}

Ondorioa

Mezuak ilaretara bidaltzeko lau modu deskribatu nituen, praktikan egunero erabiltzen ditudanak. Espero dut informazio honek zure bizitza erraztea. Jarraian, mutur batean ilara bat dagoen eta bestean datu-base edo fitxategi sistema bat dagoen truke bat probatzeko esperientziari buruz hitz egiteko asmoa dut.

Aurreztu denbora. Eta eskerrik asko zure arretagatik.

Ilarak eta JMeter: Publisher eta Subscriber-ekin partekatzea

Iturria: www.habr.com

Gehitu iruzkin berria