ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 126
Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 13
Abonament PDF

Recenzia cărții: Java Message Service de Mark Richards, Richard Monson-Haefel şi David A. Chappell

Silviu Dumitrescu
Line manager@Telenav



DIVERSE

Serviciul de mesagerie oferit de Java şi arhitecturile asociate reprezintă o alternativă la metodele de comunicare clasice şi arhitecturile asociate, precum RPC şi sitemele distribuite. Gradele de încredere, flexibilitate, extensibilitate şi modularitate ale unei aplicaţii sunt mult mai mari prin folosirea acestor arhitecturi decât în cazurile clasice, anterior amintite.

Iată alte câteva dintre avantajele folosirii sistemului de mesagerie:

  • Integrarea platformelor eterogene. Spre exemplu a platformelor ActiveMQ şi IBM WebSphere MQ, dar şi a clienţilor non Java precum cei dezvoltaţi în C şi C++;
  • Arhitecturi hibride, care reprezintă o combinaţie de arhitecturi centralizate şi descentralizate;
  • Modele de mesaje, point to point şi publish-and-subscribe. Aceasta înseamnă că un producător adresează mesajul fie unui singur consumator fie unui grup de consumatori.

Dezvoltarea serviciului de mesagerie a avut numeroase momente importante în ultimii zece ani. Apariţia noilor tehnici si tehnologii printre care Message Driven Bean (MDB), Spring messaging framework, Event Driven Architecture, Service-Oriented Architecture, RESTful JMS interfaces şi Enterprise Service Bus (ESB) sunt doar câteva dintre reperele importante în această dezvoltare.

Serviciul de mesagerie este gestionat prin intermediul unui API, ajuns la versiunea 1.1. Acesta este de fapt a doua versiune a specificaţiilor, după versiunea 1.0 iniţială. Platforma cu versiunea 7 a Enterprise Java, care este aproape de a fi lansată oficial, aduce o nouă versiune a specificaţiilor JMS şi anume 2.0. Îmbunătăţirile sunt numeroase, cele mai multe fiind pe partea de simplificare a codului şi adaptarea la noile dezvoltări ale tehnologiilor (trimiterea asincronă a mesajelor, introducerea factory-urilor, etc).

Cartea pe care v-o supun atenţiei, Java Message Service, a doua ediție, avându-i ca autori pe Mark Richards, Richard Monson-Haefel şi David A. Chappell, reprezintă un ghid complet pentru folosirea mesajelor şi a arhitecturilor bazate pe acestea.

Împărţită în 11 capitole, cartea prezintă gradual aspecte legate de atingerea performanţei în utilizarea serviciului de mesagerie în Java.

Dacă în primul capitol se discută aspectele generale legate de mesaje, precum consideraţii şi paralele cu alte arhitecturi, în capitolele doi, trei, patru şi cinci se prezintă cam tot ce ar trebui să ştie un novice despre această arhitectură. Anatomia unui mesaj cuprinde trei părţi importante: header-ele, proprietăţile şi tipurile de mesaje. Apoi, folosirea mesajelor point-to-point şi publish-and-subscribe sunt descrise cu discuţii asupra variantelor posibile de implementare. Fiecare dintre aceste capitole sunt ilustrate din plin cu exemple concludente. De la o aplicaţie de chat clasică pîna la o aplicaţie de împrumut şi creditori, toate scot în evidenţă aspectele teoretice prezentate.

Capitolul 6 se referă la filtrarea mesajelor. Filtrarea dintr-o coada sau dintr-un topic se face prin selectorii de mesaje. Selectorii de mesaje se aplică consumatorilor de mesaje. Consumatorii vor primi doar acele mesaje ce satisfac condiţiile de filtrare. Selectorii vor folosi proprietăţile şi header-ele de mesaj pentru a testa expresiile condiţionale ale filtrelor. Capitolul se încheie cu consideraţii privitoarele la design-ul aplicaţiilor ce folosesc filtre.

Capitolul şapte este împărţit în două subpărţi înrudite, prima legată de modul de confirmare al mesajelor şi implicit de consumare al acestora, iar cea de-a doua legată de tranzacţii. Tranzacţiile JMS sunt determinate de perspectiva diferită pe care producatorul şi consumatorul o au faţă de un mesaj. Producătorul are un contract cu serverul de mesaje ce asigură că mesajul va fi furnizat serverului. Serverul are un contract cu consumatorul prin care se asigură că mesajul îi va fi livrat. Cele două operaţii sunt separate, ceea ce este un beneficiu indiscutabil pentru mesageria asincronă. Tranzacţiile urmăresc această separare a operaţiilor de trimitere şi recepţionare, dar grupează mesajele astfel încât vor ajunge la server toate sau nici unul. Tranzacţiile JMS, deşi asemanatoare cu JTA (Java Transaction API) sunt gestionate de furnizorul de mesagerie.

Capitolul opt prezintă un mare pas înainte în gestionarea optimă a acestei arhitecturi şi anume Message-Driven Bean-urile (MDB). MDB-urile sunt componente logice, care se instanţiază automat de către container şi care asteaptă şi consumă mesajele primite de la diverşi producători. Avantajele sunt substanţiale pentru că întreg ciclul de viaţă este gestionat de container, iar procesele asincrone primesc un suport considerabil. Capitolul se încheie cu bune practici de folosire aMDB-urilor şi anume pattern-ul facade.

Capitolul nouă prezintă suportul oferit de Spring pentru dezvoltarea aplicaţiilor bazate pe JMS.

Capitolul zece este concentrat pe cosideraţii de desfăşurare pe server a resurselor folosite de arhitecturile JMS.

În sfârșit, ultimul capitol se bazează pe consideraţii asupra design-ului mesageriei, cu discuţii punctuale asupra destinaţiilor interne sau externe, design-ul mesageriei request/reply, dar şi anti-pattern-uri în design-ul de mesagerie.

Cartea cuprinde şi patru appendix-uri relativ la API-ul JMS, message header-e, message properties şi instalarea, respectiv, configurarea lui ActiveMQ.

Părerea mea este că serviciul de mesagerie oferit de Java nu este folosit, probabil pentru că nu este cunoscut suficient, la adevăratul său potenţial. Avantajele majore evidenţiate la începutul recenziei alături de îmbunătăţirile aduse de versiunea 2.0 fac ca acest serviciu să merite un interes mult mai mare decât cel actual. Cred că la nivel de backend, pe parte de comunicare asincronă, JMS şi MDB sunt soluţii excelente.

Vă doresc lectură plăcută şi aştept cu interes discuţii pe acest subiect pe programez.ro !

VIDEO: NUMĂRULUI 126

Sponsori

  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • Connatix
  • BoatyardX
  • AboutYou
  • Telenav
  • .msg systems
  • Colors in projects