/ / Persistance du message dans le sujet - jms, activemq

Persistance du message dans le sujet - jms, activemq

Je me demandais si un message persistait dans un sujet ou non et j’ai reçu l'essentiel de ma réponse de ce post.

Mais que dire de cette situation - supposons que le courtier aita commencé tout juste, et certains éditeurs ont commencé à envoyer des messages à un sujet. Désormais, un abonné durable sera connecté à ce sujet, mais il n’existe actuellement aucun abonné durable. sera perdu?

J'ai essayé la situation ci-dessus et bien tous les messagesétaient perdus. En outre, j’ai essayé cette situation: j’avais un abonné actif et durable et il était capable d’obtenir des messages envoyés au sujet, puis il est tombé et d’autres messages ont été envoyés au sujet, puis le courtier a redémarré et finalement tous ces messages delta. étaient perdus.

Donc, cela signifie essentiellement qu'en cas de SUJETle message ne peut pas être conservé car contrairement à la réponse de ce message que j'ai mentionnée précédemment, le fait d'avoir un abonné durable n'a aucun effet car s'il existe un abonné actif actif, le message sera immédiatement consommé par ce dernier et s'il n'y a pas d'abonné actif le courtier redémarre, les messages sont perdus.

Donc, le résultat final est que dans le cas où le message TOPIC ne peut pas être persisté ou ai-je tort dans ma compréhension / tests?

Réponses:

1 pour la réponse № 1

Un peu de clarté est nécessaire ici.

1) Courtier sans abonné - Tous les messages sont rejetés par le courtier.

2) Courtier avec abonné durable en ligne - Les messages (persistants et non persistants) sont remis au stockage de l’abonné, généralement une file d’attente, qui est ensuite consommée par l’abonné.

3) Courtier avec abonné durable hors ligne -Les messages (persistants et non persistants) sont remis au stockage de l'abonné. Si le courtier tombe en panne, tous les messages non persistants sont perdus. Cependant, tous les messages persistants sont récupérés lors du redémarrage du courtier.

4) Courtier avec abonné en ligne non durable -Les messages (persistants et non persistants) sont remis au consommateur. Si l'abonné se déconnecte, aucun message n'est remis au consommateur et aucun message n'est mis en cache par le courtier.

IBM MQ fournit une option, appelée Retain Publication, pour conserver une copie du dernier message publié sur un sujet. De cette façon, tous les membres en retard recevront ce dernier message.


2 pour la réponse № 2

Pour un courtier propre commencer là où il n'y a pasSouscriptions durables hors ligne sur le sujet en question, le courtier ne conserve pas les messages, même s'ils sont envoyés avec le mode de livraison Persistant. Si vous ajoutez ensuite un message d'abonnement durable envoyé en tant que persistant, il sera écrit dans le magasin. Si l'abonnement durable est hors ligne, ils seront conservés jusqu'à leur consommation ou supprimés si un consommateur d'abonnement durable est en train de les lire et de les accuser réception.

Si vous n'envoyez pas le message avec leEn mode de livraison Persistant, ils ne seront jamais persistés, même s’il existe un abonnement durable. Et une fois l'abonnement durable désabonné, le courtier revient à ne pas stocker les messages de sujet, même s'ils sont marqués comme persistants.

Compte tenu du comportement que vous constatez, la meilleure hypothèse est que votre mode de livraison lors de l'envoi est non persistant.