Mga Pila ug JMeter: pagpaambit sa Publisher ug Subscriber

Hello, Habr! Kini usa ka sequel sa akoa miaging publikasyon, diin ako maghisgot bahin sa mga kapilian sa pagbutang sa mga mensahe sa mga pila gamit ang JMeter.

Naghimo kami og data bus alang sa usa ka dako nga pederal nga kompanya. Nagkalainlain nga mga format sa paghangyo, pagbag-o, makuti nga ruta. Alang sa pagsulay, kinahanglan nimo nga magpadala daghang mga mensahe sa pila. Ang mano-mano usa ka sakit nga dili madumala sa tanan nga chiropractor.

Mga Pila ug JMeter: pagpaambit sa Publisher ug Subscriber

Pasiuna

Bisan tuod kinahanglan nako nga antuson kini nga kasakit sa una. Nagsugod ang tanan sa RFHUtil. Gamhanan, apan awkward ug makahahadlok: Aw, nahibal-an nimo si Rus.

Mga Pila ug JMeter: pagpaambit sa Publisher ug Subscriber

Kinahanglanon sa pipila ka mga kaso, apan padayon nga pagkunhod sa kaso sa aktibo nga paggamit.
Ang sayon ​​​​nga pagsulay imposible niini.

Uban sa JMeter ang tanan nahimong mas sayon. Human sa unang yugto sa pagkahanas ug pagkaanad niini, ang paglaom misugod sa pagbanagbanag alang sa malipayong pagsulay.

Aktibo nakong gigamit ang JMS Publisher ug JMS Subscriber samplers. Dili sama sa JMS Point-to-Point, kini nga pares daw mas sayon ​​​​gamiton. Pananglitan, sa Subscriber sa JMS Selector mahimo nimong itakda ang usa ka variable, apan sa Point-to-Point dili nimo mahimo (o kini nga pamaagi dili kaayo klaro).

Pag-andam sa mga sampler

JMS Publisher

  • Setup - Matag Sampol. Apache nagrekomenda gamita kini nga opsyon kung ang mga pila/mga topiko gipiho pinaagi sa mga variable.
  • Expiration (ms) = 120000. Kung mapakyas, ang mga hangyo sa pagsulay mawala gikan sa pila pagkahuman sa 2 minuto.
  • Gamita ang non-persistent delivery mode? - tinuod. IBM aprobahankana nga padayon nga mode nagsiguro sa kasaligan nga pagpreserbar sa gipasa nga mga mensahe kung adunay kalit nga pagkapakyas. Ug mas paspas nga pagbinayloay sa non-persistent mode. Alang sa mga katuyoan sa pagsulay, ang katulin mas hinungdanon.

Sa matag Publisher nagbutang ko og jms property nga gamiton sa Subscriber sa JMS Selector. Alang sa matag pagsumite, usa ka random nga kantidad ang gihimo sa elemento sa plano sa pagsulay sa User Parameters:

Mga Pila ug JMeter: pagpaambit sa Publisher ug Subscriber

Niining paagiha makasiguro ka nga ang husto nga mensahe gibasa.

Ang katapusang "blangko" sa usa ka pre-configure nga JMS Publisher:

Mga Pila ug JMeter: pagpaambit sa Publisher ug Subscriber

Subscriber sa JMS

  • Setup - Matag Sampol. Aw, nakasabot ka.
  • Timeout (ms) = 100000. Kung ang hangyo dili moabut sa pila pagkahuman sa 100 segundos nga paghulat, adunay nahitabo nga sayup.
  • Hunong taliwala sa mga sampol? - tinuod.

JMS Selector - medyo sayon butang. Katapusan nga Subscriber sa JMS:

Mga Pila ug JMeter: pagpaambit sa Publisher ug Subscriber

Giunsa ang pag-atubang sa Cyrillic alphabet sa gipasa nga mga mensahe. Sa JMeter, sa default, pagkahuman sa pag-proofread, gipakita kini nga hiwi. Aron malikayan kini ug matagamtam ang dako ug gamhanan kanunay ug bisan asa, kinahanglan nimo:

  1. Pagdugang usa ka argumento sa JVM sa "launcher" sa JMeter:
    -Dfile.encoding=UTF-8
  2. Idugang ang JSR223 PostProcessor sa Subscriber nga adunay groovy line:
    prev.setDataEncoding("UTF-8")

Magpadala ug text

Ang labing tapulan nga kapilian. Angayan alang sa pag-debug sa bag-ong sinulat nga mga pagsulay. O alang sa mga kaso kung kinahanglan nimo ipadala bisan gamay nga butang. Pagpili kapilian Tinubdan sa mensahe - Textarea ug ibutang ang lawas sa mensahe sa usa ka text block:

Mga Pila ug JMeter: pagpaambit sa Publisher ug Subscriber

Pagbalhin sa file

Ang labing komon nga kapilian. Angayan alang sa kadaghanan nga mga senaryo. Pagpili kapilian Tinubdan sa mensahe - Gikan sa file ug ipakita ang dalan sa mensahe sa uma File - Ngalan sa file:

Mga Pila ug JMeter: pagpaambit sa Publisher ug Subscriber

Pagbalhin sa usa ka file ngadto sa usa ka text field

Ang labing daghag gamit nga kapilian. Angayan alang sa kadaghanan nga mga senaryo + mahimong magamit sa JMS Point-to-Point diin wala’y ikaduha nga kapilian sa pagpadala:

Mga Pila ug JMeter: pagpaambit sa Publisher ug Subscriber

Pagpasa sa usa ka byte array

Ang labing lisud nga kapilian. Angayan alang sa pagsusi sa dili masayop nga tukma nga pagpasa sa mga hangyo hangtod sa byte, nga wala’y pagtuis, SMS ug kasamok. Dili nimo kini mahimo sa default nga JMeter. dinhi Gisultihan gyud ko bahin niini.

Mao nga kinahanglan kong mag-download tinubdan ug usba code Subscriber sa JMS.

Gipulihan sa pamaagi extractContent(..) linya:

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

sa:

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

ug gitukod pag-usab ang JMeter.

Ang nahabilin mao ang pagdugang usa ka magtiayon nga JSR223 Sampler. Ang una mao ang atubangan sa Publisher/Subscriber nga pares sa paghimo og DAT file nga adunay mga 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");
        }

Ang ikaduha - sa katapusan sa script, nagtangtang sa file:

import java.io.File;

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

Ug ayaw kalimti nga idugang ang agianan sa file sa Publisher:

Mga Pila ug JMeter: pagpaambit sa Publisher ug Subscriber

Ug usa usab ka tseke sa JSR223 Assertion for Subscriber - itandi ang source bytes sa mga moabot sa queue sa nakadawat:

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

konklusyon

Gihulagway nako ang upat ka paagi sa pagpadala og mga mensahe ngadto sa mga pila, nga akong gigamit kada adlaw sa praktis. Nanghinaut ko nga kini nga impormasyon makapasayon ​​sa imong kinabuhi. Sa pagpadayon, nagplano ako nga maghisgot bahin sa akong kasinatian sa pagsulay sa usa ka pagbinayloay diin adunay usa ka pila sa usa ka tumoy ug usa ka database o file system sa pikas.

Pagtipig sa imong oras. Ug salamat sa imong pagtagad.

Mga Pila ug JMeter: pagpaambit sa Publisher ug Subscriber

Source: www.habr.com

Idugang sa usa ka comment