Pentru că proiectul are nevoie ca unele date să fie transmise și primite, deoarece cantitatea de date este relativ mare, aproximativ 3 milioane de date pe zi
La început, am folosit http post pentru a trimite date, dar am constatat că era prea lent, iar viteza de trimitere era mult mai mică decât cea de recepție.
Prin urmare, dacă vrei să folosești o conexiune socket lungă pentru a trimite și primi date, scrie singur serverul socket și clientul, una este o pierdere de timp, dar s-ar putea să nu fie făcut bine
În final, activemq este folosit pentru a trimite și primi date
În primul rând, codul producătorului este următorul:
Consumator, există două modele:
1: Abonament obișnuit, fără nevoie de un "abonament" persistent, adică la conectare poți primi mesaje și nu poți primi mesaje înainte de a te conecta, folosind "CreateConsumer" 2: Abonament persistent, după conectare, poți primi date care nu au fost trimise până acum, folosind "CreateDurableConsumer"
Legături către introducerea CreateDurableConsumer:Autentificarea cu hyperlink este vizibilă.
Creează un abonament persistent nepartajat pe subiectul specificat dacă nu există deja și creează un consumator pe acel abonament persistent. Această metodă creează un abonament persistent fără a folosi un selector de mesaje, iar valoarea noLocal este falsă. Aplicația folosește un abonament persistent, iar aplicația trebuie să primească toate mesajele publicate pe această temă, inclusiv cele publicate atunci când nu există consumatori activi asociați cu ea. Furnizorul JMS păstrează o evidență a acestui abonament persistent și se asigură că toate mesajele de la editorul vizat vor fi păstrate până când sunt livrate consumatorului și confirmate de acel abonament persistent până la expirarea lor.
Abonamentele persistente continuă să acumuleze mesaje până când sunt șterse folosind metoda dezabonării.
Această metodă poate fi folosită doar cu abonamente persistente nepartajate. Orice abonament persistent creat prin această metodă va fi nepartajat. Aceasta înseamnă că doar un singur consumator activ (adică neînchis) poate exista pe abonament la un moment dat. Termenul "consumator" desemnează aici obiectul TopicSubscriber, MessageConsumer sau JMSConsumer din orice client.
Un abonament persistent nepartajat este identificat printr-un nume specificat de client și un identificator de client care trebuie setat. Aplicațiile care doresc apoi să creeze consumatori pe un abonament persistent nepartajat trebuie să folosească același identificator de client.
Dacă există deja un abonament persistent nepartajat cu același nume și același identificator de client, iar același subiect, selector de mesaje și valoare noLocal sunt deja specificate, iar niciun consumator nu este deja activ (adică nu este închis) pe abonamentul persistent, această metodă creează un abonament durabil existent pe MessageConsumer.
Dacă există deja un abonament persistent nepartajat cu același nume și același identificator de client, iar un consumator pe abonamentul persistent este deja activ (adică nu este închis), va fi lansat un abonament JMSException.
Dacă există deja un abonament persistent nepartajat cu același nume și identificator de client, dar cu un subiect diferit, a fost specificat un selector de mesaje sau o valoare noLocal, iar niciun consumator nu este deja activ (adică nu este închis) pe abonamentul persistent, atunci acest lucru echivalează cu dezabonarea (ștergerea) celui vechi și crearea unuia nou.
Abonamentele persistente partajate și nepartajate pot să nu aibă același nume și aceeași identitate de client. Dacă există deja un abonament persistent partajat cu același nume și identificator de client, se generează un JMSException.
Nu există limită pentru abonamentele persistente și abonamentele nepersistente partajate cu același nume și clientId. Un astfel de abonament va fi complet separat.
Această metodă este aceeași cu metoda createDurableSubscriber corespunzătoare, cu excepția faptului că returnează un MessageConsumer în loc de un TopicSubscriber pentru a reprezenta consumatorul.
Parametru: Teme - Abonamente la subiecte non-temporare Nume - Numele folosit pentru a identifica acest abonament Aruncă: InvalidDestinationException - Dacă este specificat un subiect invalid. IllegalStateException - Dacă identificatorul de invitat nu este setat JMSException - Dacă sesiunea nu reușește să creeze un abonament persistent nepartajat și MessageConsumer din cauza unei erori interne Dacă există deja un abonament persistent nepartajat cu același nume și același identificator de client, iar consumatorul este deja activ Dacă există deja un abonament persistent partajat cu același nume și același identificator de client De oricând: JMS 2.0 IMessageConsumer CreateDurableConsumer(ITopic destinație, nume șir, selector de șiruri, bool noLocal);
unde messageSelector este selectorul de mesaje; Flag-ul noLocal este fals implicit, iar când este setat pe true, restricționează consumatorii să primească doar mesaje publicate de aceeași conexiune ca ei, ceea ce se aplică doar subiectelor, nu cozilor. numele este identitatea unică a subiectului de abonament, iar acest parametru trebuie setat atunci când te abonezi la un abonament persistent.
Activemq .net trebuie să se refere la descărcarea pachetului:Autentificarea cu hyperlink este vizibilă.
Descărcare completă a codului sursă:
Turiști, dacă vreți să vedeți conținutul ascuns al acestei postări, vă rog Răspunde
|