2017-08-16 3 views
0

J'apprends JMS et je sais qu'il ya 2 types de communication:
1. files d'attente
2 sujetsEst-il possible de consommer par plusieurs consommateurs de la même file d'attente dans JMS?

Je comprends les sujets, mais je ne pouvais pas comprendre qu'il est possible de lire de la même file d'attente de 2 différents consommateurs.

Je demande à ce sujet parce que je sais que c'est possible dans amqp.

permet, nous avons la file d'attente comme celui-ci

tail -> |5|4|3|2|1|-> head 

et suivant l'ordre d'action:

  1. consumer_1 lire et a 1
  2. consommateur_2 lire et obtenu 2
  3. consumer_1 lire et obtenu 3
  4. consumer_2 lire et obtenir 4
  5. consumer_2 lire et avoir 5

Est-ce possible ou cela contredit-il l'approche point-à-point?

+0

Tout d'abord, cela dépend de l'implémentation, alors s'il vous plaît passer par les docs, quelle implémentation vous utilisez?, eh bien, il devrait être possible de configurer de telle manière. – Raghuveer

+0

@Raghuveer J'essaie juste d'apprendre. Au moment où je suis en train de lire la théorie – gstackoverflow

+2

Oui, c'est possible (et très souvent utilisé, simplement de consommer des messages dans plusieurs threads, par exemple) –

Répondre

1

Cela dépend de la sémantique que vous souhaitez appliquer sur votre Q: FIFO strict ou traitement parallèle ..

Mise en œuvre des sémantiques (Q + consommateurs + architecture parallèle, etc.) est fonction du produit/architecture (c.-à-groupe ou pas, multi-threads etc.). La sémantique d'un Q contenant des messages pour mettre à jour un inventaire est probablement FIFO et doit être traitée dans un ordre strict, une file d'attente avec des messages de mails à envoyer aux clients est probablement parallèle et peut être traitée dans n'importe quel ordre. consommateurs simultanés

+0

Ajout à ce JMS permet aussi des hybrides de traitement parallèle et l'ordre strict. En utilisant les propriétés JMSXGroupID et JMSXGroupSeq, le producteur peut s'assurer qu'un groupe/lot de messages sera traité par le même consommateur (thread/process/node). –