Hallo, Habr! Hierdie is 'n vervolg op myne vorige publikasie, waarin ek sal praat oor opsies om boodskappe in rye te plaas met behulp van JMeter.
Ons maak 'n databus vir 'n groot federale maatskappy. Verskeie versoekformate, transformasies, ingewikkelde roetering. Vir toetsing moet jy baie boodskappe na die tou stuur. Handmatig is 'n pyn wat nie elke chiropraktisyn kan hanteer nie.
Inleiding
Alhoewel ek eers hierdie pyn moes verduur. Dit het alles begin met RFHUtil. Kragtig, maar ongemaklik en skrikwekkend: Wel, jy ken vir Rus.
Onontbeerlik in sommige gevalle, maar neem geleidelik af in geval van aktiewe gebruik.
Gerieflike toetsing is daarmee onmoontlik.
Met JMeter het alles makliker geword. Na die eerste fase van bemeestering en gewoond raak daaraan, het hoop begin aanbreek vir gelukkige toetsing.
Ek gebruik aktief die JMS Publisher en JMS Subscriber monsternemers. Anders as JMS Point-to-Point, het hierdie paar geriefliker gelyk om te gebruik. Byvoorbeeld, met Subscriber in JMS Selector kan jy 'n veranderlike spesifiseer, maar met Point-to-Point kan jy nie (of hierdie metode is nie baie voor die hand liggend nie).
Voorbereiding van monsternemers
JMS Uitgewer
Opstelling - Elke monster. Apache beveel aan gebruik hierdie opsie as toue/onderwerpe deur veranderlikes gespesifiseer word.
Verval (ms) = 120000. In die geval van mislukking sal toetsversoeke na 2 minute uit die tou verdwyn.
Gebruik nie-aanhoudende afleweringmodus? - waar. IBM eisedaardie aanhoudende modus verseker betroubare bewaring van gestuurde boodskappe in die geval van 'n skielike mislukking. En vinniger uitruil in nie-aanhoudende modus. Vir toetsdoeleindes is spoed belangriker.
In elke Publisher stel ek 'n jms-eienskap wat die Subscriber in die JMS Selector sal gebruik. Vir elke indiening word 'n ewekansige waarde in die Gebruiker Parameters toetsplan element gegenereer:
Op hierdie manier kan jy seker wees dat die korrekte boodskap gelees is.
Die laaste "blank" van 'n vooraf-gekonfigureerde JMS-uitgewer:
JMS-intekenaar
Opstelling - Elke monster. Wel, jy verstaan.
Time-out (ms) = 100000. As die versoek nie in die ry kom na 100 sekondes se wag nie, dan het iets verkeerd geloop.
Stop tussen monsters? - waar.
JMS Selector - redelik gerieflik ding. Finale JMS-intekenaar:
Hoe om die Cyrilliese alfabet in oorgedrade boodskappe te hanteer. In JMeter word dit by verstek, na proeflees, skeef vertoon. Om dit te vermy en die groot en kragtige altyd en oral te geniet, moet jy:
Voeg 'n JVM-argument by die JMeter "lanseerder":
-Dfile.encoding=UTF-8
Voeg JSR223 PostProcessor by intekenaar met groovy lyn:
prev.setDataEncoding("UTF-8")
Stuur teks
Die luiste opsie. Geskik vir die ontfouting van varsgeskrewe toetse. Of vir gevalle waar jy ten minste iets kleins moet stuur. Kies opsie Boodskapbron - Teksarea en plaas die liggaam van die boodskap in 'n teksblok:
Lêeroordrag
Die mees algemene opsie. Geskik vir die meeste scenario's. Kies opsie Boodskapbron - Van lêer en dui die pad na die boodskap in die veld aan Lêer - Lêernaam:
Dra 'n lêer oor na 'n teksveld
Die mees veelsydige opsie. Geskik vir die meeste scenario's + kan in JMS Point-to-Point gebruik word waar daar geen tweede stuuropsie is nie:
Verlaat 'n greepskikking
Die moeilikste opsie. Geskik vir die nagaan van die onfeilbaar akkurate oordrag van versoeke tot by die greep, sonder vervorming, SMS en versteuring. Jy sal dit nie in die verstek JMeter kan doen nie. hier Ek is beslis hieroor vertel.
So ek moes aflaai bronne en wysig kode JMS-intekenaar.
Vervang in die metode extractContent(..) lyn:
buffer.append(bytesMessage.getBodyLength() + " bytes received in BytesMessage");
Al wat oorbly, is om 'n paar JSR223-monsters by te voeg. Die eerste is voor die uitgewer/intekenaar-paar om 'n DAT-lêer te skep wat ewekansige grepe bevat:
Ek het vier maniere beskryf om boodskappe na toue te stuur, wat ek elke dag in die praktyk gebruik. Ek hoop hierdie inligting maak jou lewe makliker. In voortsetting beplan ek om te praat oor my ervaring van die toets van 'n uitruil waar daar 'n tou aan die een kant is en 'n databasis of lêerstelsel aan die ander kant.