web-dev-qa-db-fra.com

Sujet JMS vs files d'attente

Je me demandais quelle était la différence entre une file d'attente JMS et un sujet JMS.

Depuis la page ActiveMQ , il est écrit 

Les sujets

Dans JMS, une rubrique implémente la sémantique publish et subscribe. Lorsque vous publiez un message, il s’adresse à tous les abonnés qui sont intéressé - de sorte que zéro à plusieurs abonnés recevra une copie du message. Seuls les abonnés qui avaient un abonnement actif à l'époque le courtier reçoit le message recevra une copie du message.

Les files d'attente

Une file d'attente JMS implémente la sémantique de load balancer. Un seul message sera reçu par exactement un consommateur. S'il n'y en a pas les consommateurs disponibles au moment de l'envoi du message seront conservés jusqu'à ce qu'un consommateur soit disponible qui puisse traiter le message. Si un consommateur reçoit un message et ne l’accuse pas avant la fermeture le message sera alors remis à un autre consommateur. Une file d'attente peut avoir de nombreux consommateurs avec des messages charge équilibrée à travers le disponible les consommateurs.

Je souhaite avoir une "chose" qui enverra une copie du message à chaque abonné dans le même ordre que celui dans lequel le message a été reçu par le courtier ActiveMQ.

Des pensées?

139
Poliquin

Cela signifie qu'un sujet est approprié. Une file d'attente signifie qu'un message est envoyé à un et un seul abonné possible. Un sujet va à chaque abonné.

107
Joseph Ottinger

Les rubriques concernent le modèle éditeur-abonné, tandis que les files d'attente concernent le point à point.

40
vikram

Un sujet JMS est le type de destination dans un modèle de distribution un à plusieurs . Le même message publié est reçu par tous les abonnés consommateurs. Vous pouvez aussi appeler cela le modèle "broadcast". Vous pouvez considérer un sujet comme l'équivalent d'un Subject dans un modèle de conception d'observateur pour l'informatique répartie. Certains fournisseurs JMS choisissent efficacement d'implémenter cela en tant que UDP au lieu de TCP. Pour le sujet, la livraison du message est "feu et oublie" - si personne ne l'écoute, le message disparaît simplement. Si ce n'est pas ce que vous voulez, vous pouvez utiliser des "abonnements durables".

Une file d'attente JMS est une destination de messages un à un. Le message n'est reçu que par l'un des destinataires consommateurs (veuillez noter que l'utilisation systématique de abonnés pour 'topic client et de récepteurs pour les clients en file d'attente évite toute confusion). Les messages envoyés à une file d'attente sont stockés sur le disque ou dans la mémoire jusqu'à ce que quelqu'un la récupère ou qu'elle expire. Ainsi, les files d'attente (et les abonnements durables) nécessitent une gestion active du stockage, vous devez donc penser aux consommateurs lents.

Je dirais que dans la plupart des environnements, topics sont le meilleur choix, car vous pouvez toujours ajouter des composants supplémentaires sans avoir à modifier l'architecture. Les composants ajoutés pourraient être la surveillance, la journalisation, les analyses, etc.____ Vous ne saurez jamais au début du projet quelles seront les conditions requises dans un an, cinq ans ou dix ans. Le changement est inévitable, embrasse-le :-) 

19
Axel Podehl

Pour la préservation de la commande, voir cette page ActiveMQ . En bref: la commande est préservée pour un seul consommateur, mais avec plusieurs consommateurs, les commandes ne sont pas garanties.

7
eebbesen

C'est aussi simple que ça:

Files d'attente = Insertion> Retrait (envoi à un seul abonné) 1: 1

Sujets = Insertion> Diffusion (envoi à tous les abonnés) 1: n

 enter image description here 

4
Daniel Perník

Si vous avez N consommateurs, alors:

Les rubriques JMS envoient des messages à N sur N Les files d'attente JMS envoient des messages à 1 sur N

Vous avez dit que vous "recherchiez une" chose "qui enverrait une copie du message à chaque abonné dans le même ordre que celui dans lequel le message a été reçu par le courtier ActiveMQ.

Vous souhaitez donc utiliser un sujet pour que tous les N abonnés reçoivent une copie du message.

3
Hans Jespersen

TOPIC :: topic est une communication un à plusieurs ... (multipoint ou publier/s'abonner) EX: -imagine un éditeur publie le film dans le youtub, puis tous ses abonnés recevront une notification .... QUEVE: : queve is one-to-one communication ... Ex: -Lorsque vous publiez une demande de recharge, il ne sera envoyé qu’à un seul qreciever ... développer l'analyse qui convient à une application

0
siddartha kamble

Files d'attente

Avantages

  • Modèle de messagerie simple avec un flux de communication transparent
  • Les messages peuvent être récupérés en les remettant dans la file d'attente

Les inconvénients

  • Un seul consommateur peut recevoir le message
  • Implique un couplage entre producteur et consommateur car il s’agit d’une relation un à un.

Les sujets

Avantages

  • Plusieurs consommateurs peuvent recevoir un message
  • Découplage entre producteur et consommateur (modèle publication/abonnement)

Les inconvénients

  • Flux de communication plus compliqué
  • Un message ne peut pas être récupéré pour un seul auditeur
0
abhimanyu