JMS-onderwerp versus wachtrijen

Ik vroeg me af wat het verschil is tussen een JMS-wachtrij en een JMS-onderwerp.

ActiveMQ-paginazegt

Onderwerpen

In JMS implementeert een Topic publiceer en abonneersemantiek. Wanneer u een bericht publiceert, gaat het naar alle abonnees die zijn
geïnteresseerd – dus nul tot veel abonnees ontvangen een exemplaar van de
bericht. Alleen abonnees die op dat moment een actief abonnement hadden
de makelaar ontvangt het bericht en krijgt een kopie van het bericht.

Wachtrijen

Een JMS Queue implementeert load balancersemantiek. Een enkel bericht wordt door precies één consument ontvangen. Als er geen zijn
consumenten beschikbaar op het moment dat het bericht wordt verzonden, wordt het bewaard
totdat er een consument beschikbaar is die het bericht kan verwerken. Als een
de consument ontvangt een bericht en bevestigt dit niet voor het sluiten
dan wordt het bericht opnieuw bezorgd aan een andere consument. Een wachtrij kan
hebben veel consumenten met berichten load balancedover de beschikbare
consumenten.

Ik wil ‘iets’ hebben dat een kopie van het bericht naar elke abonnee stuurt in dezelfde volgorde als waarin het bericht is ontvangen door de ActiveMQ-makelaar.

Enige gedachten?


Antwoord 1, autoriteit 100%

Dat betekent dat een onderwerp geschikt is. Een wachtrij betekent dat een bericht naar één en slechts één mogelijke abonnee gaat. Een onderwerp gaat naar elke abonnee.


Antwoord 2, autoriteit 36%

Onderwerpen zijn voor het uitgever-abonnee-model, terwijl wachtrijen voor point-to-point zijn.


Antwoord 3, autoriteit 28%

Zo simpel is het:

Wachtrijen= Voeg > Opnemen (verzenden naar enkele abonnee) 1:1

Onderwerpen= Voeg > Uitzenden (verzenden naar alle abonnees) 1:n


Antwoord 4, autoriteit 25%

Een JMS-onderwerpis het type bestemming in een 1-op-veel-distributiemodel.
Hetzelfde gepubliceerde bericht wordt ontvangen door alle consumerende abonnees. Je kunt dit ook het ‘broadcast’-model noemen. Je kunt een onderwerp zien als het equivalent van een Onderwerpin een Observer-ontwerppatroonvoor gedistribueerd computergebruik. Sommige JMS-providers kiezen er efficiënt voor om dit als UDP te implementeren in plaats van als TCP. Voor onderwerpen is de bezorging van het bericht ‘vuur-en-vergeet’ – als niemand luistert, verdwijnt het bericht gewoon. Als dat niet is wat je wilt, kun je gebruik maken van ‘duurzame abonnementen’.

Een JMS-wachtrijis een 1-op-1 bestemming van berichten. Het bericht wordt door slechts één van de consumerende ontvangersontvangen (let op: consequent gebruik van abonneesvoor ‘topic client’s’ en receiversvoor wachtrijclients om verwarring te voorkomen ). Berichten die naar een wachtrij worden verzonden, worden op schijf of in het geheugen opgeslagen totdat iemand het oppikt of het verloopt. Dus wachtrijen (en duurzame abonnementen) hebben wat actief opslagbeheer nodig, je moet denken aan langzame consumenten.

In de meeste omgevingen, zou ik zeggen, zijn onderwerpende betere keuze, omdat je altijd extra componenten kunt toevoegen zonder de architectuur te hoeven veranderen. Toegevoegde componenten kunnen monitoring, logging, analyse, enz.
Je weet aan het begin van het project nooit hoe de eisen zullen zijn over 1 jaar, 5 jaar, 10 jaar. Verandering is onvermijdelijk, omarm het 🙂


Antwoord 5, autoriteit 6%

wachtrijen

PROS

  • Simple Messaging Pattern met een transparante communicatiestroom
  • Berichten kunnen worden hersteld door ze terug te zetten op de wachtrij

CONS

  • slechts één consument kan het bericht
  • krijgen

  • impliceert een koppeling tussen producent en consument omdat het een één-op-één relatie is

onderwerpen

PROS

  • Meerdere consumenten kunnen een bericht krijgen
  • Ontkoppeling tussen producent en consumenten (Publish-and-Subscribe Pattern)

CONS

  • meer gecompliceerde communicatievloer
  • Een bericht kan niet worden hersteld voor een enkele luisteraar

Antwoord 6, Autoriteit 5%

Net als voor de behoud van de bestelling, zie deze activemq pagina . Kortom: de bestelling wordt bewaard voor alleenstaande consumenten, maar met meerdere bevalling van de bevalling is niet gegarandeerd.


Antwoord 7, Autoriteit 3%

Als u de consument hebt, dan:

JMS-onderwerpen leveren berichten aan N of N
JMS-wachtrijen leveren berichten op 1 van n

U zei dat u “op zoek bent naar een ‘ding’ dat een kopie van het bericht naar elke abonnee in dezelfde sequentie zal sturen, omdat het bericht is ontvangen door de ActivECQ-makelaar.”

Dus u wilt een onderwerp gebruiken om alle n-abonnees een kopie van het bericht te krijgen.


Antwoord 8

TOPIC :: TOPIC is een op veel communicatie … (multipoint of publiceren / abonneren)
EX: -Imagine Een uitgever publiceert de film in de youtub en vervolgens alle abonnees krijgt een melding ….
Queve :: Qevelke is een-op-één communicatie …
EX: -Wanneer u een verzoek om opladen publiceert, gaat u naar slechts één qreciever …
onthoud altijd dat als het verzoek naar alle qreceivers gaat, er meerdere keren zijn opgeladen, dus tijdens het ontwikkelen van een analyse die geschikt is voor een toepassing


Antwoord 9

Wachtrij is een door JMS beheerd object dat wordt gebruikt voor het bewaren van berichten die wachten op gebruik door abonnees. Wanneer alle abonnees het bericht hebben gelezen, wordt het bericht uit de wachtrij verwijderd.

Het onderwerp is dat alle abonnees van een onderwerp hetzelfde bericht ontvangen wanneer het bericht wordt gepubliceerd.

Other episodes