Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 13505|Répondre: 2

Paramètres d’abonnement persistants ActiveMQ

[Copié le lien]
Publié sur 09/01/2017 11:12:10 | | |

Paramètres d’abonnement persistants ActiveMQ
En définissant le mode de livraison PERSISTANTE pour l’éditeur, vous pouvez utiliser des abonnements persistants pour les abonnés, ce qui garantit que le programme Pub/Sub reçoit tous les messages publiés.
Les abonnements aux messages sont divisés en abonnements non durables et abonnements durables, et les abonnements non durables ne peuvent recevoir des messages envoyés à un sujet que lorsque le client est actif, c’est-à-dire lorsque le client est hors ligne, les messages envoyés au sujet pendant cette période seront perdus et jamais reçus. Lorsque le client est hors ligne, ActiveMQ enregistre tous les messages envoyés au sujet selon son ID, et lorsque le client se reconnecte à ActiveMQ, il reçoit tous les messages envoyés au sujet lorsqu’il est hors ligne. Les abonnements persistants augmentent la surcharge et ne comportent qu’un seul utilisateur actif dans un abonnement persistant à la fois. Étapes pour établir un abonnement persistant :
1. Configurer un identifiant client pour la connexion ;
2. Spécifier un nom d’abonnement pour le sujet de l’abonnement ;
La combinaison ci-dessus doit être unique.
Le code implémente des abonnements persistants

(1) Lors de l’utilisation de la file d’attente, c’est-à-dire lors de la mise en file d’attente, il n’y a qu’un seul consommateur par message, donc la persistance est très simple, il suffit de l’enregistrer dans la base de données

。 Ensuite, tout consommateur peut la récupérer et la jeter. Peu importe si un consommateur l’éteint un moment.

(2) Lors de l’utilisation de topic, c’est-à-dire lors de l’abonnement, chaque message peut avoir plusieurs utilisateurs, ce qui est plus problématique.

Premièrement, en supposant que les consommateurs soient des consommateurs ordinaires,
------------------------
Après le lancement de <1> activemq, News 1 a été publié, mais malheureusement, aucun consommateur ne commence à démarrer pour l’instant, c’est-à-dire aucun consommateur ne s’est abonné. Ainsi

, la nouvelle a été abandonnée.

<2> Consommateur 1 a démarré, s’est connecté à activemq, s’est abonné, et a attendu un message~~

activemq publie le message 2, OK, le consommateur 1 le reçoit et le traite. Abandon de message.

<3> Consumer 2 est également lancé, connecté à activemq, abonné, et attend un message~~

activemq publie le message 3, OK, le consommateur 1, le consommateur 2 sont tous reçus et traités. Abandon de message.

<4> Consommateur 1 est désactivé.

activemq publie le message 4, OK, le consommateur 2 le reçoit et le traite. Abandon de message.

<5> Consommateur 1 a recommencé.

ActiveMQ publie les messages 5, OK, Consommateur 1 et Consommateur 2 qui les reçoivent et traitent tous. Abandon de message.
-----------------------------
Pour résumer :
Activemq envoie simplement des messages au consommateur actuellement lancé.
Les consommateurs qui éteignent la ligne manqueront beaucoup de messages et ne pourront plus les recevoir.

Si le message envoyé contient des données de synchronisation utilisateur importantes et les manque, les données utilisateur ne sont pas synchronisées.

Alors, comment faire en sorte que les consommateurs reçoivent des messages manqués lorsqu’ils redémarrent ?

La réponse est un abonnement persistant.
-----------------------------

Les abonnements ordinaires, sans distinction entre les consommateurs, s’il y a quelques têtes dans le lieu, lancez quelques brioches vapeur.
Pour les abonnements persistants, vous devez enregistrer le nom du consommateur.
Zhang San a dit : Je suis Zhang San, il y a des petits pains vapeur pour moi, je reviendrai les chercher.
Li Si a dit : Je suis Li Si, il y a des petits pains vapeur pour moi, je reviendrai les chercher.
activemq a noté les noms de Zhang San et Li Si.

Ensuite, lors de la division des petits pains vapeur, une tête donne toujours un pain cuit à la vapeur.
Après la division, quand il vit que Zhang San ne parlait pas, cela signifiait qu’il n’était pas là, alors laisse-lui un message.
Li Si parla, donc il n’y avait pas besoin de rester.

Zhang San revint, chercha l’activmq, et regarda, ce n’est pas Zhang San, apporte ses petits pains vapeur rapidement.
Cela peut être un petit pain vapeur, ou 100 petits pains vapeur, cela dépend du nombre de petits pains vapeur que Zhang San a partagés depuis son départ.

activemq distingue les consommateurs par l’identifiant client et le nom de l’abonné.
-----------------------------
Créer un lien
connexion = connexionFactory.créeConnexion() ;
connection.setClientID(« bbb ») ; Les abonnements persistants nécessitent de définir cela.
connexion.start() ;

Créez une session
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE) ;

Créez une destination
Sujet sujet = session.createTopic(« userSyncTopic ») ; Nom du sujet

MessageConsommateur consommateur = session.créerConsommateur(sujet) ; Abonnement régulier
MessageConsommateur consommateur = session.createDurableSubscriber(topic,"bbb ») ; Abonnements persistants


Un autre point est que le producteur du message utilise le mode persistant lors de l’envoi de messages
MessageProducteur producteur = ... ;
producer.setDeliveryMode(DeliveryMode.PERSISTENT) ;
Sinon, il est persistant par défaut

(5) Si le même « clientID » est utilisé, il est considéré comme le même consommateur. Si deux programmes utilisent le même « clientID », un seul peut se connecter à activemq en même temps, et la seconde connexion signalera une erreur.

(6) Les paramètres d’activemq sont en conf/activemq.xml, et les messages par défaut sont enregistrés dans data/kahadb, et les messages ne seront pas perdus lors du redémarrage d’activemq.

Vous pouvez accéder à http://localhost:8161/admin/index.jsp : voir des informations sur les files d’attente actuelles, les sujets et les abonnés persistants, envoyer des messages, et plus encore.

Vous pouvez copier le contenu du activemq-jdbc.xml et le modifier, et sauvegarder le message dans d’autres bases de données.




Précédent:Accès aux billets 360 : canal VIP de cinquième génération craqué, entrez rapidement dans la file VIP
Prochain:. Plateforme .Net
 Propriétaire| Publié sur 09/01/2017 13:41:53 |
1 Comparaison des caractéristiques techniques de la file d’attente et du sujet
nom
Sujet
File d’attente
Aperçu
Publier S’abonner Envoyer des messages d’abonnement
Point à point Point Point
Il n’y a pas d’État
Les données thématiques sont sans état par défaut.
Les données de file d’attente sont enregistrées par défaut sous forme de fichier sur le serveur MQ, par exemple, Active MQ est généralement stockée sous $AMQ_HOME\data\kr-store\data. Il peut également être configuré comme un magasin de base de données.
Garantie d’intégrité
Il n’y a aucune garantie que chaque donnée publiée par l’éditeur sera acceptée par l’abonné.
La file d’attente garantit que chaque donnée peut être reçue par le récepteur.
si le message sera perdu
De manière générale, lorsqu’un éditeur publie un message sur un sujet, seul le subreddit qui écoute l’adresse du sujet peut recevoir le message. S’il n’y a pas de sous-titres qui écoutent, le sujet est perdu.
L’expéditeur envoie un message à la file cible, et le récepteur peut recevoir des messages sur cette file de manière asynchrone. Les messages sur la file ne seront pas perdus s’il n’y a pas de destinataire pour les récupérer pour le moment.
Politique de réception des publications de messages
Politique de publication et de réception de messages un-à-plusieurs, plusieurs sous-forums écoutant la même adresse de sujet peuvent recevoir des messages envoyés par l’éditeur. Le sub reçoit la notification au serveur mq
Politiques de publication et de réception de messages un à un, les messages envoyés par un expéditeur ne peuvent être reçus que par un seul destinataire. Après la réception du destinataire, le serveur MQ informe le serveur MQ qu’il a été reçu, et le serveur MQ supprime ou prend d’autres mesures sur les messages dans la file d’attente.

 Propriétaire| Publié sur 09/01/2017 13:42:15 |
La plus grande différence entre le sujet et la file d’attente est que le sujet prend la forme de diffusion, qui informe tous les clients d’écoute en ligne qu’il y a un nouveau message, et que le client sans surveillance ne recevra pas le message ; Queue, en revanche, notifie l’un des multiples clients d’écoute de manière pair-à-pair.

2 Comparaison de l’efficacité du traitement des messages entre les méthodes de sujet et de file d’attente
        En augmentant le nombre de concurrents du client d’écoute, vérifiez si la diffusion du message sur le sujet diminuera significativement en raison de l’augmentation de la concurrence du client d’écoute.
        D’après les résultats mesurés, il n’y a pas de différence significative dans l’efficacité de l’envoi et de la réception des messages envoyés par la méthode du sujet sous prétexte d’un abonné et de 100 abonnés, mais sous le principe d’une concurrence de 500 abonnés (threads), la différence d’efficacité est évidente (en raison de la concurrence de 500 threads, le taux d’utilisation du processeur de ma machine atteint 70-90 %, il est donc impossible de confirmer s’il s’agit d’un goulot d’étranglement de performance causé par mon test local ou d’un goulot d’étranglement dans la méthode d’envoi de messages du sujet). ce qui entraîne une telle diminution significative de l’efficacité).
        Il n’y a pas de différence significative dans l’efficacité de l’envoi et de la réception des messages envoyés par méthode thématique et mode file d’attente sous la condition d’un abonné et de 100 abonnés, mais dans la concurrence de 500 abonnés, l’efficacité du mode sujet est nettement inférieure à celle de la file d’attente.
        L’efficacité de l’envoi et de la réception des messages envoyés dans la méthode Queue ne change pas significativement dans la condition d’un abonné, 100 abonnés et 500 abonnés.
Données mesurées par le sujet :


Le nombre total de messages envoyés par l’expéditeur
Le nombre total de messages reçus par tous les abonnés
Le temps moyen nécessaire pour envoyer et recevoir des messages
Un seul abonné
100
100
101 ms
100 abonnés
100
10000
103ms
500 abonnés
100
50000
14162 ms

Données mesurées par file d’attente :


Le nombre total de messages envoyés par l’expéditeur
Le nombre total de messages reçus par tous les abonnés
Le temps moyen nécessaire pour envoyer et recevoir des messages
Un seul abonné
100
100
96 ms
100 abonnés
100
100
96 ms
500 abonnés
100
100
100ms

Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com